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