Realizzazione del file system Struttura del file system Metodi di allocazione Gestione dello spazio libero Implementazione di directory Efficienza e prestazioni Recuperi Sistemi operativi
Struttura del file system Struttura di file Unità di memoriazzazione logica Collezione di informazioni correlate Il file system si trova nella memoria secondaria (dischi). Il file system viene organizzato secondo livelli. File control block – struttura di memorizzazione che consiste di informazioni su un file. Sistemi operativi
Allocazione contigua Ciascun file occupa un insieme di blocchi contigui sul disco. Per reperire tutto il file sono necessarie solo la posizione di inizio (block #) e la lunghezza (numero di blocchi). Accesso casuale. Spreco di spazio. Frammentazione esterna (problema dell’allocazione dinamica della memoria). I files non possono crescere (=> frammentazione interna). Mappatura da logico a fisico. Q LA/512 R Blocco da accedere = indirizzo iniziale Spostamento nel blocco = R Sistemi operativi
Allocazione concatenata (linked) Ciascun file è una lista concatenata di blocchi su disco: i blocchi possono essere sparpagliati ovunque sul disco. Si alloca quanto è richiesto, e poi si concatenano i blocchi insieme. Sistemi operativi
Allocazione concatenata Semplice – richiede solo l’indirizzo di inizio Sistema di gestione dello spazio libero – non si ha spazio perso Non è possibile l’accesso casuale Mappatura da logico a fisico Q LA/511 R Il bocco da accedere è il Q–mo nella catena di blocchi che rappresentano il file. Spostamento nel blocco = R + 1 File-allocation table (FAT) – allocazione dello spazio su disco usata da MS-DOS e OS/2. La FAT è una tabella con un elemento per ogni blocco disco ed è indirizzato dal numero di blocco. La FAT consente di avere i puntatori localizzati sul disco e non sparsi. Sistemi operativi
Allocazione indicizzata Colleziona tutti i puntatori insieme nel blocco di indice. Sistemi operativi
Allocazione indicizzata Richiede una tabella di indice E’ possibile un accesso casuale Si ha un accesso dinamico senza frammentazione esterna, ma c’è il sovraccarico del blocco di indice. Se si ha un file di dimensione massima 256K parole e con una dimensione di blocco di 512 parole, è necessario solo un blocco per l’indice. Q LA/512 R Q = spostamento nella tabella indice R = spostamento nel blocco Sistemi operativi
Schema concatenato Mappatura logico–fisica in un file di dimensione non limitata (dimensione del blocco di 512 parole). Schema concatenato – Si collegano blocchi della tabella indice (non si ha un limite alla dimensione). Q1 LA / (512 x 511) R1 Q1 = blocco della tabella indice R1 è impiegato come segue: Q2 R1 / 512 R2 Q2 = spostamento nel blocco della tabella indice R2 spostamento nel blocco del file: Sistemi operativi
Indice multilivello outer-index index table file Sistemi operativi
Schema combinato: UNIX (4K byte per blocco) Sistemi operativi
Gestione dello spazio libero Vettore di bit (n blocchi) 1 2 n-1 … 0 block[i] occupato 1 block[i] libero bit[i] = Calcolo del numero del primo blocco libero. Si scorre il vettore, cercando il primo byte diverso da 0. (numero di bit per parola) * (numero di parole con valore 0) + offset del primo bit a 1 Funziona bene se il vettore è conservato in memoria centrale. Sistemi operativi
Gestione dello spazio libero La mappa dei bit richiede uno spazio ulteriore. Esempio: block size = 212 byte disk size = 230 byte (1 gigabyte) n = 230/212 = 218 bit (o 32K byte) E’ semplice avere file contigui Lista concatenata (free list) Non è facile prendere spazio contiguo Non si spreca spazio Raggruppamento: memorizzazione degli indirizzi di n blocchi liberi sul primo di tali blocchi. Sull’ultimo sono indirizzati altri blocchi, e così via. Conteggio: Si indica un blocco libero, e da quanti altri blocchi liberi (contigui) è seguito. Sistemi operativi
Gestione dello spazio libero E’ necessario proteggere: Puntatore alla lista dei blocchi liberi Mappa di bit Deve essere tenuta sul disco Le copie in memoria e sul disco possono essere diverse Non si può permettere a block[i] di essere in una situazione in cui bit[i] = 1 in memoria e bit[i] = 0 su disco. Soluzione: Porrre bit[i] = 1 sul disco. Allocare block[i] Porre bit[i] = 1 in memoria Sistemi operativi
Realizzazione di directory Lista lineare di nomi di file con puntatori ai blocchi di dati. Semplice da implementare Esecuzione onerosa (dal punto di vista del tempo di calcolo). Tabella hash – lista lineare con struttura hash. Migliora il tempo di ricerca nella directory Collisione – situazione in cui due nomi di file generano lo stesso indirizzo hash nella tabella dimensione fissa Sistemi operativi
Efficienza e prestazioni L’efficienza dipende da: allocazione su disco e algoritmi di gestione delle directory tipi di dati conservati nell’elemento della directory corrispondente al file Prestazione disk cache – sezioni separate della memoria impiegate per blocchi usati molto spesso free-behind e read-ahead – tecniche per ottimizzare l’accesso sequenziale si migliorano le prestazioni dei PC dedicando sezioni della memoria come dischi virtuali o dischi RAM. Sistemi operativi
Varie posizioni per disk–caching Sistemi operativi
Recupero Verificatore di coerenza – confronta i dati nella directory con blocchi di dati sul disco, e cerca di fissare le incoerenze. Si impiegano programmi di sistema per copiare (back up) dati dal disco ad un altro dispositivo di memorizzazione (dischetto, nastro magnetico). Si recuperano file persi o dischi danneggiati ricaricandoli dal back–up. Sistemi operativi