Realizzazione del file system

Transcript

Realizzazione del file system
Sistemi Operativi
Docente: Ugo Erra
Docente:
Ugo Erra
[email protected]
12° LEZIONE
REALIZZAZIONE DEL FILE SYSTEM
C O R S O D I L A U R E A T R I E N N A L E I N I N F O R M AT I C A
U N I V E R S I TA
TA’ D E G L I S T U D I D E L L A B A S I L I C ATA
Sistemi Operativi 2007/08
Sommario della lezione
y Struttura del file system
St tt
d l fil
t
y Metodi di allocazione
{ Allocazione contigua
{ Allocazione concatenata
{ Allocazione indicizzata
ll
d
y Gestione dello spazio libero
Sistemi Operativi 2007/08
Struttura a livelli
Utente
Applicazioni
dir, mv, copy, etc..
File system logico
Fil
t
l i
Nomi simbolici più struttura della directory
Modulo di organizzazione dei file
Modulo
di organizzazione dei file
Interfaccia nomi/blocchi
Sistema Operativo
Sistema Operativo
File system di base
Gestione dei file a livelli dei blocchi
Controllo dell’I/O
Di
Driver Dispositivi
Hard Disk, controller
,
Sistemi Operativi 2007/08
Blocchi di un disco
y La memoria secondaria è una memoria permanente gestita La memoria secondaria è una memoria permanente gestita
solitamente con un disco fisso y Lo spazio del disco fisso è logicamente suddiviso in blocchi, di Lo spazio del disco fisso è logicamente suddiviso in blocchi, di
solito di 512 byte
{
Altri valori possibili sono 256 o 1024 byte
y Ogni blocco è numerato a partire da 0, per cui un disco può essere visto come un array in cui ogni elemento ha una dimensione di 512 byte
dimensione di 512 byte
y Il controller del disco a partire dal numero di blocco può accedere in lettura e scrittura direttamente
{
Per ottimizzare gli accessi solitamente lettura e scrittura su disco avvengono in più blocchi
Sistemi Operativi 2007/08
Allocazione di un file
y Per poter memorizzare un file la cui dimensione supera P
t
i
fil l
i di
i
quella di un singolo blocco è necessario divedere il file in più blocchi
più blocchi
y Per allocare il numero di blocchi necessari su disco sono possibili le seguenti strategie:
ibili l
ti t t i
{
{
{
Allocazione contigua
All
Allocazione concatenata
i
t t
Allocazione indicizzata
Sistemi Operativi 2007/08
Allocazione contigua ‐
g
1
y Nell’allocazione contigua
N ll’ ll
i
ti
ogni file è allocato in un i fil è ll t i
insieme di blocchi contigui
y Per accedere ad un file è necessario avere le informazioni d
d fl è
l f
circa:
{
{
Il numero del primo blocco del file
Quanti blocchi contigui sono occupati dal file
y Se b
b è il primo blocco occupato ed n
è l
bl
d la dimensione del file l d
d lfl
allora il file è allocato nei blocchi b, b+1, b+2,…,b+n‐1
y Usato nei sistemi IBM VM/CMS
Sistemi Operativi 2007/08
Allocazione contigua ‐
g
2
0
1
2
3
4
5
6
7
file
Blocco iniziale
lunghezza
8
9
10
11
count
0
2
12
13
14
15
tr
14
3
mail
19
6
16
17
18
19
li t
list
28
4
20
21
22
23
f
6
2
24
25
26
27
28
29
30
31
Sistemi Operativi 2007/08
Allocazione contigua ‐
g
3
yV
Vantaggi:
t i
{ L’accesso ai file è veloce e semplice { Le informazioni aggiuntive da salvare insieme al file sono poche
L i f
i i
i ti d
l
i i
l fil
h
y Svantaggi:
{ Per allocare un file è necessario trovargli uno spazio libero sul disco ll
fl è
l
lb
ld
che sia contiguo (cosa vi ricorda?)
{ È necessaria una strategia di allocazione dello spazio del tipo È necessaria una strategia di allocazione dello spazio del tipo
first/best/worst fit che provoca frammentazione esterna del disco
Ù
Si può ricorrere ad una ricompattazione periodica del disco che è più costosa rispetto alla memoria primaria
Sistemi Operativi 2007/08
Come gestire la crescita del file?
g
y Cosa succede se il file cresce oltre la dimensione che gli C
d
il fil
lt l di
i
h li
era stata allocata?
y Sono possibili due strategie:
bl d
{
{
Riallocare lo spazio originale
Sovradimensionare il file in fase di allocazione aumentando però la ò
frammentazione interna
y I problemi sono gli stessi dell
I problemi sono gli stessi dell’allocazione
allocazione contigua nella contigua nella
memoria principale
Sistemi Operativi 2007/08
Allocazione concatenata ‐ 1
y Nell’allocazione concatenata ogni blocco contiene un N ll’ ll
i
t t
i bl
ti
puntatore al blocco successivo del file
{
{
SSolitamente si utilizzano gli ultimi byte
lit
t i tili
li lti i b t
Soluzione simile a quella della memoria principale
y L’informazioni addizionale da memorizzare è il numero L’i f
i i ddi i
l d
i
è il
del blocco iniziale
{
{
Si potrebbe anche memorizzare il numero di blocchi usati e/o il Si
t bb
h
i
il
di bl hi
ti / il
numero del blocco finale
Nell’ultimo
Nell
ultimo blocco viene scritto un numero negativo per segnalare al blocco viene scritto un numero negativo per segnalare al
sistema che quello è l’ultimo blocco del file
Sistemi Operativi 2007/08
Allocazione concatenata ‐ 2
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Sistemi Operativi 2007/08
file
Start
end
jeep
9
25
Allocazione concatenata ‐ 3
yV
Vantaggi:
t i
{ Non sono necessari blocchi contigui, per cui non c’è bisogno di ricompattare il disco e non si verifica frammentazione esterna
ricompattare il disco e non si verifica frammentazione esterna
{ Qualsiasi blocco libero può essere utilizzato per memorizzare un p
pezzo del file
y Svantaggi:
{ Per ogni blocco gli ultimi byte sono utilizzati per memorizzare il g
g
y
p
puntatore al (ossia il numero del) blocco successivo
{ Nel caso di blocchi da 512 byte, con 4 byte per puntatore, circa lo 0,78% di un blocco non può essere utilizzato per memorizzare dati del file
Sistemi Operativi 2007/08
Accesso diretto nell’allocazione concatenata
y L’
L’accesso diretto ad un blocco del file non è efficiente:
di tt d bl
d l fil
è ffi i t
{ Per accedere ad un blocco è necessario leggere tutti i blocchi precedenti
{ Per leggere l’n‐esimo blocco sono necessari n‐1 accessi al disco y Il
Il sistema di allocazione è poco affidabile
sistema di allocazione è poco affidabile
{ Se un blocco del file viene danneggiato si perde tutta la parte del file dal blocco danneggiato fino alla fine del file
gg
Sistemi Operativi 2007/08
Soluzioni ai problemi ‐
p
1
y Piuttosto che usare una lista a singolo puntatore Pi tt t h
li t
i
l
t t
possiamo utilizzare una lista doppiamente concatenata
{
SSe si danneggia un blocco possiamo recuperare i successivi id
i
bl
i
i
i i
ripercorrendo la catena all’indietro
y Per ogni blocco possiamo memorizzare il nome del file a Per ogni blocco possiamo memorizzare il nome del file a
cui appartiene e la sua posizione all’interno della lista
{
Nel caso in cui un blocco si Nel
caso in cui un blocco si “perde”
perde siamo sempre in grado di sapere siamo sempre in grado di sapere
a chi apparteneva e dove era collocato
Sistemi Operativi 2007/08
Soluzioni ai problemi ‐
p
2
y Possiamo cercare di mantenere i vantaggi dell’allocazione P i
di
t
i
t i d ll’ ll
i
contigua considerando il disco formato da cluster di blocchi adiacenti
blocchi adiacenti
{
Ad esempio, ciascun cluster può essere composto da 4 blocchi del disco adiacenti e avere quindi una dimensione di 2 o 4 Kbyte
disco adiacenti, e avere quindi una dimensione di 2 o 4 Kbyte
y I vantaggi di avere blocchi di dimensione maggiore sono:
{ I tempi di accesso al file diminuiscono perché la testina deve essere I tempi di accesso al file diminuiscono perché la testina deve essere
riposizionata meno volte
{ Lo spazio non è sprecato come prima per i puntatori ma aumenta la p
p
p
p
p
frammentazione interna
Sistemi Operativi 2007/08
FAT – File Allocation Table
y L’allocazione concatenata è stata adottata dai sistemi L’ ll
i
t t è t t d tt t d i i t i
operativi MS‐DOS, OS2 e nei sistemi windows y La FAT è un array
è
allocato all’inizio del disco in cui ogni ll
ll’
d ld
entry corrisponde ad un blocco
{
Il numero contenuto nell’entry rappresenta un blocco occupato
y Le entry il cui valore è zero corrispondono a blocchi liberi
Sistemi Operativi 2007/08
FAT – File Allocation Table
y LLo scopo della FAT è di:
d ll FAT è di
{ Registrare lo stato di allocazione di tutti i blocchi del disco
{ Riprodurre la lista concatenata di blocchi di ogni file
Ri d
l li t
t t di bl hi di
i fil
y Se il blocco i punta al blocco n, allora nella FAT l’i‐esima entry contiene il numero n
t
ti
il
y Se l’ultimo blocco del file è il numero j, la j‐esima entry d ll
della FAT contiene un marker
k speciale di fine file
l d f fl
Sistemi Operativi 2007/08
Esempio di FAT
p
Elemento della directory
Elemento della directory
test
…
nome
217
0
blocco iniziale
y Il file test ha tra gli attributi il lfl
h
l
b
l
puntatore al primo blocco d l fil
del file
y I restanti blocchi sono accessibili seguendo gli indici all’interno della catena d i
dei puntatori all’interno i ll’i
della FAT
217
618
339
618
339
Numero di blocchi del disco ‐1
FAT
Sistemi Operativi 2007/08
FAT: vantaggi e svantaggi
gg
gg
y Vantaggi:
V t i
{
{
{
L’accesso diretto al file migliore se la FAT è tenuta costantemente in memoria
Se un blocco si perde il sistema è ancora sicuro
La gestione dei blocchi liberi è automatica
y Svantaggi:
{
{
{
La quantità di memoria occupata dalla FAT è pari al numero di blocchi del di
disco. Ogni entry della FAT memorizza un numero di blocco
O i t d ll FAT
i
di bl
All’aumentare della dimensione dei dischi aumenta in maniera proporzionale la dimensione della FAT
La perdita della FAT comporta l’impossibilità di accedere ai file, quindi è necessario salvarla periodicamente su disco fisco
Sistemi Operativi 2007/08
Overhead occupazione di memoria
p
y Supponiamo di avere un disco fisso da 20 GB con 1Kb per S
i
di
di
fi
d 20 GB
1Kb
blocco
{
{
20GB = 21.474.836.480 byte
20GB
21 474 836 480 b t
1 kb = 1.024 byte
y Quanto spazio occupa la FAT?
Q
t
i
l FAT?
y Numero di blocchi necessari 20.971.520
y Ogni blocco è indicizzato con un intero a 32 bit = 4 byte
y Spazio occupato dalla FAT p
p
20.971.520 x 4 = 81920 Kb = 80 Mb circa 0.4 %
Sistemi Operativi 2007/08
Allocazione indicizzata ‐ 1
y Nell’allocazione indicizzata
N ll’ ll
i
i di i t memorizziamo all’interno di i i
ll’i t
di
un blocco chiamato blocco indice tutti i blocchi del file
y Per recuperare tutti i blocchi del file è necessario un solo bl h d l f l è
l
accesso al blocco indici da cui ricaviamo tutti i blocchi memorizzati
i ti
y Tra gli attributi del file da memorizzare è necessario memorizzare anche il blocco indice del file
Sistemi Operativi 2007/08
Allocazione indicizzata‐ 2
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Sistemi Operativi 2007/08
file
Blocco indice
j
jeep
19
9
16
1
10
25
‐1
‐1
‐1
Allocazione indicizzata: vantaggi e svantaggi
gg
gg
y Vantaggi:
{
{
{
{
La frammentazione esterna non si verifica in quanto non sono necessari blocchi contigui
L’accesso diretto e l’accesso sequenziale sono efficienti
Abbiamo bisogno di sprecare almeno un blocco indice
Se il file è piccolo il blocco indice è quasi vuoto
Se il file è piccolo il blocco indice è quasi vuoto
y Svantaggi:
{
Ogni blocco indice può gestire file di una dimensione fissata. Che succede se il file eccede questa dimensione? Le soluzioni sono:
Ù L’ultima entry del blocco indice punta ad un secondo blocco indice (schema concatenato)
Ù Il blocco indice contiene solo puntatori ad altri blocchi indice (schema a più livelli)
Sistemi Operativi 2007/08
Allocazione indicizzata: schema concatenato Elemento della directory
t t
test
…
n. blocco indice
bl
i di
Altri i
Alt
blocchi dei file
Blocchi dei file
Primo blocco indice
Sistemi Operativi 2007/08
Secondo blocco indice
Allocazione indicizzata: schema a più livelli p
Blocchi dei file
Elemento della directory
test
…
n. blocco indice
Sistemi Operativi 2007/08
Blocco indice Blocco
indice
esterno
Blocco indice interno
Gli i‐nodi di Unix
y Nel sistema operativo Unix, ad ogni file è associato un i‐
N l it
ti U i d
i fil è
i t
i
node che fa da blocco indice
{
O i i d contiene anche gli attributi del file
Ogni i‐node
ti
h li tt ib ti d l fil
y Gli i‐node sono gestiti dal Sistema Operativo e sono memorizzati sul disco fisso in una porzione riservata
i ti l di
fi
i
i
i
t
{
Di solito nella prima parte dell’hard disk
Sistemi Operativi 2007/08
i‐node
yO
Ogni i‐node
i i d contiene:
ti
{ 12 puntatori diretti a blocchi di dati del file
{ Un puntatore single indirect
U
t t
i l i di t che punterà ad un blocco indice che h
t à d
bl
i di
h
conterrà puntatori a blocchi di dati file
{ Un puntatore double
Un puntatore double indirect che punterà ad un blocco indice che che punterà ad un blocco indice che
conterrà puntatori a blocchi indice ognuno dei quali conterrà puntatori a blocchi di dati del file
{ Un puntatore triple indirect che punterà ad un blocco indice che conterrà puntatori a blocchi indice ognuno dei quali conterrà puntatori a blocchi indice ognuno dei quali conterrà puntatori a
puntatori a blocchi indice, ognuno dei quali conterrà puntatori a blocchi di dati del file
Sistemi Operativi 2007/08
i‐node
Sistemi Operativi 2007/08
Gestione dello spazio libero
p
y Il Sistema Operativo deve tenere traccia di tutti i blocchi liberi Il Sistema Operativo deve tenere traccia di tutti i blocchi liberi
del disco fisso
y Il file system deve gestire una struttura dati opportuna memorizzata su disco che gli permetta di risalire ai blocchi liberi
{
{
In Unix, queste informazioni sono memorizzate nel superblocco, contenuto ,q
p
,
in alcuni blocchi iniziali dell’HD, a partire dal blocco numero 1.
In Windows XP queste informazioni stanno nella MFT
y Questa struttura dati sarà utilizzata ogni qualvolta cerchiamo Questa struttura dati sarà utilizzata ogni qualvolta cerchiamo
dei blocchi liberi per:
{
{
Creare un file Estendere un file
Estendere un file
y Se un file viene cancellato i suoi blocchi diventano liberi e quindi inseriti in questa struttura dati
Sistemi Operativi 2007/08
Vettori di bit
y Per ogni blocco usiamo un bit per indicare se è libero o Per ogni blocco usiamo un bit per indicare se è libero o
occupato
{
{
bit[i] = 1 ⇒ blocco i‐esimo libero
bit[i] = 0 ⇒ blocco i‐esimo occupato
0 1 2
n‐1
y Affinché il vettore di bit sia efficiente deve essere tenuto nella memoria principale e periodicamente salvato su disco
y Per ridurre l’occupazione del vettore di bit è possibile usare un bit per dei cluster di blocchi
y Approccio utilizzato in Mac/OS
Sistemi Operativi 2007/08
Lista concatenata
y Si utilizza una lista concatenata di Si tili
li t
t t di
blocchi liberi {
{
Ogni blocco libero punta al successivo O
i bl
lib
t l
i
blocco libero
Nessuno spreco di spazio
Nessuno spreco di spazio
y In alternativa si può usare una variante della FAT per gestire i variante
della FAT per gestire i
blocchi liberi in modo da ridurre i tempi per cercare molti blocchi
tempi per cercare molti blocchi liberi
Sistemi Operativi 2007/08
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Raggruppamento/Conteggio
gg pp
/
gg
yR
Raggruppamento
t
{ Raggruppare in un blocco più puntatori a blocchi liberi { L’ultimo puntatore punta ad un altro blocco di blocchi liberi come L’ lti
t t
t d
lt bl
di bl hi lib i
nell’allocazione indicizzata
{ Efficiente se dobbiamo trovare molti blocchi liberi velocemente
Efficiente se dobbiamo trovare molti blocchi liberi velocemente
y Conteggio
{ Mantenere il numero di un blocco e quanti blocchi consecutivi liberi Mantenere il numero di un blocco e quanti blocchi consecutivi liberi
lo seguono
{ Simile alla lista ma con meno entry
Sistemi Operativi 2007/08