Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
A.A. 2004/2005
Sistemi di Elaborazione
dell’Informazione
Luca Spalazzi
spalazzi@diiga.univpm.it
w w w.diiga.univpm.it/~spalazzi/
File System
Sistemi di I/O • Struttura dei sistemi di I/O
• Struttura dei dischi
Linux • Installazione
• Amministrazione di sistema
• Programmazione tramite script
Obiettivi di un SO:
• Eseguire i programmi utente
• Facilitare la soluzione dei problemi degli utenti.
• Rendere il computer conveniente.
Memory layout
network
CPU
Memoria Centrale
Circuiti di
controllo
Indirizzi
Bus Dati
Controllo
Controller
Dispositivo
Busy Waiting
CPU Controllore
1.Comando input
Tastiera
2. Interrupt
OR
Sistemi di Elaborazione A.A. 2007/2008 36
I/O guidato da Interrupt
Problemi:
Int.Vect.1 Int.Vect.n
INTA
CPU Device 1 Device n
Int.Vect.1 Int.Vect.n
Porta INTA
di CPU Device 1 Device n
uscita
INT Int. 1 Int. n
Ab. 1
OR
Ab. n
All’arrivo di una interruzione
con priorità pj vengono
disabilitate le interruzioni
da dispositivi con priorità
inferiore a pj
3. interrupt
Controller
DMA
2. Copia Blocco
RAM (senza l’intervento
della CPU)
Interrupt/fault
kernel user
set user mode
Applicazione Applicazione
User mode
Kernel mode
System services
Controllers
layer …
Controllers
Memory Network
File server
server server
User mode
Kernel mode
Microkernel
Controllers
Chiamata
Risposta
Sistemi di Elaborazione A.A. 2007/2008 92
Windows NT
User mode
Kernel mode
Microkernel
Nanokernel
Controllers
Formalmente:
P = (C , S)
P: processo
C : codice eseguibile
S : stato dell’esecuzione
fanno parte dello stato di esecuzione di un processo:
• program counter
• altri registri della CPU
• stato del processo
• stack
• data section
• lista dei file aperti
• ….
Job Queue
Esiste inoltre una coda di tutti
i processi del sistema
P1 P2 P3
0 24 27 30
Tempi di attesa: P1 = 0; P2 = 24; P3 = 27
Tempo medio di attesa: (0 + 24 + 27)/3 = 17
P2 P3 P1
0 3 6 30
Tempi di attesa: P1 = 6; P2 = 0; P3 = 3
Tempo medio di attesa: (6 + 0 + 3)/3 = 3
Il miglioramento è considerevole.
Effetto convoglio: I processi brevi si accodano ai processi
lunghi.
P1 P3 P2 P4
0 3 7 8 12 16
P1 P2 P3 P2 P4 P1
0 2 4 5 7 11 16
τn+1 = α tn + (1 – α) τn
τ1 = c
τn+1 = α tn+(1 - α) α tn -1 + …
+(1 - α )j α tn - j + …
+(1 - α )n τ1
n-1
= Σ
j=0
(1 - α )j α tn - j + (1 - α )n τ1
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
Altri moduli
Modulo Oggetto
oggetto
Linker
Caricatore
(loader)
load time
dyn
Libreria di sistema ami
c linki
caricata ng
dinamicamente Processo
(immagine in run time
Sistemi di Elaborazione memoria)
A.A. 2004/2005 3
Binding di Istruzioni e Dati a Indirizzi di Memoria
Può avvenire in una qualsiasi delle seguenti fasi.
Compilazione: Se è noto a priori dove il processo
risiederà in memoria, può essere generato un codice
assoluto, che contiene direttamente indirizzi assoluti; se
la locazione di inizio cambia, bisogna ricompilare il
programma. Un esempio sono i .com di MS-DOS
Caricamento: Se dove il processo risiederà in memoria
NON è noto a priori, il compilatore genera un codice
rilocabile, che contiene indirizzi rilocabili. È compito del
caricatore fare il binding tra indirizzi rilocabili e gli indirizzi
assoluti (rilocazione statica).
Esecuzione: Se durante l’esecuzione il processo può
essere spostato da un segmento di memoria ad un altro,
il binding deve essere ritardato fino al momento
dell’esecuzione (rilocazione dinamica). È necessario
dell’hardware di supporto per gestire questa situazione
(per esempio I registri base e limite). La maggior parte dei
SO d’uso generale impiega questo metodo
1000 14000
346 14346
1346
error
process 9 process 9
process 8 process 10
10 10 12
dove p1 è l’indice della tabella esterna delle pagine, e p2 è lo
scostamento all’interno della pagina della tabella delle pagine.
Ad esempio il Pentium II usa questa tecnica.
Macchine con indirizzi più lunghi di 32 bit adottano altre tecniche.
1 4
subroutine
2
stack
3
programma 4 2
principale tabella dei
simboli
Esempio:
si desidera un rallentamento inferiore al 10% avendo le seguenti
prestazioni:
- accesso_in_memoria = 0.1 µs
- page_fault + swap_out + swap_in+ restart = 25 ms = 25000 µs
Servono inoltre:
• Algoritmo di assegnazione dei blocchi di memoria
• Algoritmo di sostituzione delle pagine.
1 1 5 4
2 2 1 5 10 page fault
3 3 2
4 4 3
Anomalia di Belady
• Aumentare I frame non garantisc una diminuzione dei page
fault
Successione 2
1 4
2 6 page fault
3
4 5
Successione 2
1 5
2 8 page fault
3 5 4
4 3
Successione 2
Con lo Stack
• I numeri delle pagine sono organizzati in una lista doppiamente
concatenata.
• Ogni volta che c’è un riferimento ad una pagina, il suo numero
viene inserito/spostato in cima allo stack.
• Quando bisogna selezionare una pagina, si sceglie quella presente
in fondo allo stack => la sostituzione non richiede nessuna ricerca
nella lista
successione 2:
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1.
Esempio
m = 100 frame
n = 5 processi,
Esempio
m = 62 s1 = 10 s2 = 127
Uniforme Proporzionale
a1 = 62/2 = 31 a2 = 62 × 10/137 ≈ 4
a1 = 62/2 = 31 a2 = 62 × 127/137≈ 57
rimane 1 frame libero
= 10
ampiezza finestra:
∆ = 10
successione 2:
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1.
Vantaggi:
• Allocazione della memoria molto veloce
Svantaggi:
• Frammentazione interna ed esterna
• Esistono dei meccanismi per riutilizzare la memoria “sprecata” a
causa della frammentazione interna
Sistemi di Elaborazione A.A. 2004/2005 74
Gestione della Memoria in Linux
Memoria Fisica
Algoritmo buddy-heap – Esempio:
• Sequenza di richieste: 8 pagine, 8 pagine, 4 pagine;
• Seguita dal rilascio: 8 pagine, 8 pagine
32 32 32 32 32 32 32 32
64
8 8 8 8
16 16 16
8 4 4 4
32 4 4 4
8 8 8 8 8
16 16
8 8 8 8 8
Sistemi di Elaborazione A.A. 2004/2005 75
Gestione della Memoria in Linux
Memoria Virtuale
Regioni di memoria virtuale
Lo spazio di indirizzamento è costituito da un insieme di regioni.
Ogni regione rappresenta un insieme di pagine logicamente
contigue, contenenti informazioni omogenee tra loro (codice,
dati, ...).
Ogni regione è descritta da una struttura dati
(vm_area_struct) che contiene tra l’altro:
• permessi di lettura, scrittura ed esecuzione,
• proprietà di paginazione,
• informazioni riguardo i file,
• numero della prima e dell’ultima pagina appartenente alla regione.
Le regioni relative ad uno spazio di indirizzamento sono
organizzate in un albero binario bilanciato
• per una rapida ricerca della regione corrispondente ad un dato
indirizzo virtuale.
a b c
g
+ + m + p
b
f
c
.. .. ..
. . .
Indirizzo fisico
f d
Sistemi di Elaborazione A.A. 2004/2005 77
Gestione della Memoria in Linux
Memoria Virtuale
Algoritmo di sostituzione
esiste un demone chiamato kswapd il cui codice viene eseguito
una volta al secondo
• verifica che ci siano abbastanza pagine libere disponibili
• in caso contrario, seleziona una pagina occupata e la rende libera
le pagine di codice vengono mappate direttamente nei file
eseguibili da cui derivano
tutte le altre pagine vengono mappate
• nella partizione di swap
più efficiente
scrittura contigua, accesso diretto al dispositivo
• in file di swap (fino a 8 file diversi)
meno efficiente
blocchi possono essere fisicamente non contigui, accesso
attraverso il file system
algoritmo di selezione
• decide quali pagine selezionare
brk
Gli attributi dei file sono conservati nella struttura directory, che
risiede a sua volta nella memoria secondaria.
ps, pdf
chiave
Directory
Files
F1 F2 F4
F3
Fn
•Path name
•Si possono avere file di utenti diversi con lo stesso nome
•Ricerca più efficiente
•Ad un utente non è permesso raggruppare i propri file
Ricerca efficiente
Possibilità di raggruppare i file
Path name assoluto e relativo
Directory corrente
(directory di lavoro)
po int
nt
mou
bill fred
... ...
dev
hd3 tty00
hello world!
12>
apertura
lettura
Hash Table –
Lista lineare con struttura dati hash.
• Ricerca tramite funzione di hash.
Tempo di ricerca molto breve.
Bisogna gestire le collisioni (due elementi con lo stesso indice).
La dimensione della tabella è fissa e decisa a priori.
Assegnazione Contigua
Assegnazione Concatenata
Assegnazione Indicizzata
× T
Accesso diretto
Accesso dinamico
senza frammentazione
esterna.
File di lunghezza
illimitata.
Necessità di riservare
dello spazio per la
tabella indice.
Sovraccarico per la
gestione della tabella
indice.
(12)
0 ⇒ block[i] libero
bit[i] =
1 ⇒ block[i] occupato
Facile da realizzare
Efficiente solo se il vettore è tenuto in memoria centrale
VFS Layer
Buffer Cache
Local Local
disk disk
≈
Super- Group Block i-node
i-nodes Data blocks
block descriptor bitmap bitmap
≈
Sistemi di Elaborazione A.A. 2004/2005 51
File System di Linux
Ext2 File System
Politica di assegnazione dei blocchi
Dispositivi a Caratteri
I dispositivi a carattere comprendono tastiere, mouse, porte
seriali
• Sono a disposizione istruzioni quali get, put.
• Esistono librerie che permettono operazioni di editing (quali
l’accesso riga per riga o il backspace)
Dispositivi di Rete
I dispositivi di rete sono profondamente diversi dagli altri, tanto
da avere una interfaccia propria.
• Ad esempio le applicazioni comunicano atraverso l’interfaccia delle
socket.
Sistemi di Elaborazione A.A. 2004/2005 7
Velocità di Trasferimento di alcuni Dispositivi
Buffer
Decodificatore Circuiti di
indirizzi controllo
Controller
Dispositivo
(continua …)
(… continua)
t_DCB DCB;
t_registri registri;
s = I mod S
I = (n*C*S) + (c*S) + s c = (I div S) mod C
n = (I div S) div C
= I div C*S
n : superficie
c : cilindro •
s : settore S = settori/cilindro
Indirizzo fisico: <n,c,s> C = cilindri/superficie
Sistemi di Elaborazione A.A. 2004/2005 29
Scheduling del Disco
Garantire un uso efficiente dell’unità a disco significa avere
tempi di accesso contenuti e ampiezza di banda elevata.
Tempo di accesso è composto principalmente da:
• Tempo di ricerca (seek time): il tempo necessario alle testine per
posizionarsi nel cilindro contenente il settore desiderato.
• Latenza di rotazione: il tempo necessario affinché il disco ruoti
fino a quando il settore desiderato si trova sotto la testina.
Minimizzare il tempo di accesso di fatto significa minimizzare il
tempo di ricerca (è difficile minimizzare il tempo di latenza in
quanto le moderne unità a disco non rivelano la posizione
fisica dei blocchi logici).
Per minimizzare il tempo di ricerca si considera
tempo di ricerca ≈ distanza di ricerca
L’ampiezza di banda è il numero di byte trasferiti diviso il
tempo intercorso fra la prima richiesta e il completamento
dell’ultimo trasferimento.