prof. Nunzio Brugaletta |
atapSO |
EnneBi –
Computer Science
Avanti – Indietro – Inizio
I file sono registrati su dischi e quindi la gestione dello spazio disponibile è uno dei compiti del filesystem. Un file su disco può essere registrato usando due possibili metodi: allocando su disco tanto spazio contiguo quanto ne serve per contenere il file oppure suddividendo il file in tanti blocchi di una certa dimensione e allora, in tal caso, non è necessario che i blocchi siano contigui.
L'allocazione per byte contigui può andare bene quando i dati registrati sono statici: le dimensioni del file non si modificano con il tempo, non si cancella il file. Qualora si usasse questa tecnica, in questi ultimi due casi, bisognerebbe cancellare il file interessato alla modifica, ricompattare tutto il resto delle informazioni registrate nel supporto e, nel primo caso, riscrivere tutto il file alla fine. Queste sono operazioni costose in termini di prestazioni, occorre infatti un certo tempo di gestione e, quindi, questo tipo di soluzione viene adottata se i file sono scritti in un supporto e non subiscono variazioni. È quello che avviene se i file sono registrati, per esempio, in un CD.
L'allocazione per blocchi si presta meglio alla memorizzazione di file su supporti ad accesso rw. Fra l'altro in questo modo il cambiamento di dimensione del file può essere gestito agevolmente aggiungendo nuovi blocchi o, eventualmente, togliendone. La gestione di un file come sequenza di blocchi deve tenere in considerazione due ordini di problemi:
Dimensione del blocco. Scegliere un blocco di dimensioni grandi può voler dire sprecare parecchio spazio. Per esempio scegliere una dimensione di 4096 byte (4K) comporta che tutti i file sono conservati in multipli di 4K: un file di 4097 byte o un file di 8000 byte occuperà sempre 2 blocchi solo che nel primo caso nel secondo blocco c'è un solo byte che interessa. D'altra parte scegliere blocchi di piccole dimensioni può comportare lentezza di reperimento delle informazioni. La lettura di un blocco da disco richiede un certo tempo per la ricerca e il posizionamento della testina di lettura/scrittura del supporto nella posizione corretta e, quindi, leggere un file composto da molti blocchi può risultare una operazione molto lenta. Nei sistemi con paginazione una soluzione può essere far coincidere la dimensione del blocco con quella della pagina.
Tenere traccia della sequenza di blocchi che compongono un file. Poiché non è possibile allocare i blocchi che contengono il file uno di seguito all'altro, per gli stessi motivi trattati nell'allocazione per byte consecutivi, è necessario adottare una qualche strategia per tenere nota di tutti i blocchi in cui è spezzato un file, così come dell'insieme di blocchi ancora disponibili nel supporto. Due possibili soluzioni potrebbero essere: adottare una tabella in cui sono conservati i puntatori ai blocchi iniziali di ogni file (la sequenza dei blocchi che costituiscono il file è gestita come una struttura concatenata: ogni blocco punta al blocco successivo della struttura) o conservare, per ogni file, in una struttura, una batteria di puntatori ai blocchi.
http://ennebi.solira.org |
ennebi@solira.org |