Unità D2 Archivi e file
Obiettivi Conoscere la differenza tra organizzazione logica e fisica Conoscere la differenza tra record logico e record fisico Sapere che cosa è un archivio fisicamente sequenziale Sapere che cosa è un archivio fisicamente non sequenziale Conoscere i vari tipi di allocazione di spazio della memoria di massa
Organizzazioni fisiche degli archivi Un singolo file può essere scritto su disco in modo diverso, a seconda del metodo utilizzato dal sistema operativo: allocazione contigua; allocazione concatenata; allocazione indicizzata. La rappresentazione di un file su disco è una serie di bit di valore zero o uno. I dati scritti su disco sono suddivisi in parti di 8 bit ciascuna, ovvero 1 byte.
Record logici e fisici Record logici Record fisici Un record è un insieme di dati attinenti a una stessa entità. I campi di un record descrivono caratteristiche dell’entità a cui il record fa riferimento. Record fisici Il blocco o record fisico rappresenta la quantità minima di informazione trasferibile dal disco alla memoria centrale e viceversa, rispettivamente con una singola operazione di lettura e scrittura. Il fattore di blocco è il numero di record logici che compongono un record fisico. Un record fisico si dice sbloccato se contiene uno e un solo record logico; si dice bloccato se è composto da più record logici; è detto infine multiblocco se ne occorre più di uno per memorizzare un record logico.
Fattore di blocco
Archivi sequenziali e allocazione contigua Intendiamo “archivi fisici sequenziali”; con questo termine vogliamo quindi indicare il modo in cui i file sono scritti su disco. Gli archivi sequenziali sono scritti sulla memoria di massa mediante la tecnica dell’allocazione contigua. I blocchi che costituiscono il file sono posti uno di seguito all’altro,
Allocazione contigua
Vantaggi e svantaggi Vantaggi Svantaggi risparmio di tempo nella lettura del file (la testina del disco non dovrà effettuare un grande spostamento per leggere i vari blocchi) l’accesso diretto può essere implementato in modo semplice conoscendo la dimensione dei blocchi e l’indirizzo su disco del primo blocco. Svantaggi quando si deve scrivere un file su disco, è prima necessario individuare un’area composta da blocchi contigui abbastanza capiente per contenere il file
Tecniche di allocazione Ricerca della prima area libera sufficientemente grande (first-fit); Ricerca della prima area libera sufficientemente grande, iniziando la scansione dal punto in cui si trova la testina (next-fit); Ricerca dell’area libera più piccola che possa contenere il file (best-fit); Ricerca dell’area libera più grande possibile (worst-fit). Qualsiasi tecnica si utilizzi il disco verrà frammentato sempre di più, fino a trovarsi in una situazione paradossale: non sarà possibile memorizzare un file poiché non esiste uno spazio contiguo abbastanza capiente, nonostante lo spazio libero complessivo sia notevolmente maggiore di quello necessario.
Archivi non sequenziali Un archivio non sequenziale è composto da blocchi sparsi su disco e non necessariamente contigui. Deve essere adottata una tecnica che consenta di ricostruire l’insieme dei blocchi che compongono il file. si devono conoscere le posizioni di tutti i blocchi di un file si deve poter ricostruire la sequenza corretta dei blocchi del file. Tecniche adottate: allocazione concatenata allocazione indicizzata.
Allocazione concatenata Ogni directory contiene le informazioni relative al primo e ultimo blocco di ogni file Ogni blocco conterrà un riferimento a quello successivo consentendo così l’accesso ordinato a ciascuno di essi, fino a raggiungere l’ultimo blocco del file L’allocazione concatenata elimina il problema della frammentazione introdotto dall’allocazione contigua.
Un esempio
Allocazione concatenata: inconvenienti Accesso unicamente sequenziale la struttura del file consente solo l’accesso in sequenza ai singoli blocchi; in questo modo, per accedere al blocco N occorre prima scorrere tutti i blocchi fino all’N – 1. un file logicamente organizzato ad accesso diretto potrà comunque funzionare, ma con prestazioni limitate. Affidabilità il fatto che i blocchi siano tutti sparsi su disco, e che si acceda a quello successivo solo grazie al riferimento contenuto nel precedente, fa in modo che la sola perdita di un riferimento a un blocco impedisca la ricostruzione del file, e conseguentemente causi la perdita dei dati in esso contenuti.
Soluzioni ai problemi di affidabilità Concatenare i blocchi in modo doppio (o bidirezionale), inserendo un riferimento in ogni blocco, non solo a quello successivo ma anche al precedente. Inoltre, includendo nei blocchi anche il nome del file di appartenenza, un’apposita procedura del sistema operativo potrebbe ricostruire la struttura dei file danneggiati, recuperando così i dati persi. Una soluzione più efficiente è l’utilizzo di una tabella che rappresenti un’immagine virtuale dei blocchi su disco, chiamata FAT (File Allocation Table). La FAT contiene i riferimenti che vanno da un blocco a un altro senza ovviamente memorizzare i dati del file stesso
FAT
Allocazione indicizzata L’allocazione indicizzata organizza i riferimenti ai blocchi di un file in un vettore detto blocco indice. Esiste un blocco indice per ogni file presente sul filesystem. Il recupero dei blocchi è molto semplice: per leggere il blocco N di un file, il sistema non deve fare altro che accedere all’elemento N del blocco indice e leggere l’indirizzo della memoria di massa contenuto. L’allocazione indicizzata, in una forma specifica in cui i blocchi indice sono chiamati i-node, è il sistema di organizzazione utilizzato nei sistemi Unix.
Blocco indice