Vai al contenuto
Home » Notes » Appunti Sistemi Operativi: File System e Allocazione files

Appunti Sistemi Operativi: File System e Allocazione files

Copertina appunti sistemi operativi capitolo filesystem e allocazione file

Appunti universitari a riassunto del corso di sistemi operativi. Capitolo File System e allocazione dei file. Argomenti principali: filesystem, tipi di allocazione.
Fonti: il mio libro di sistemi operativi Operating System Concepts with Java di Silberschatz, Galvin e Gagne.

Appunti di Sistemi Operativi: Capitolo File System e Allocazione dei file

In un file system, come funziona l’allocazione di file di tipo concatenato?

Con l’allocazione concatenata, ogni file è composto da una lista concatenata di blocchi del disco, i quali possono essere sparsi in qualsiasi punto del disco stesso. La directory contiene un puntatore al primo e all’ultimo blocco del file.

Quali sono gli inconvenienti principali?

Un problema per questo tipo di allocazione è il fatto che può essere usata in modo efficiente solo per i file ad accesso sequenziale, risultando inefficiente per l’accesso diretto (i puntatori ai blocchi sono sparsi, insieme ai blocchi, per tutto il disco e devono essere recuperati uno ad uno ed in ordine). Un altro svantaggio riguarda lo spazio richiesto per i puntatori e la loro stessa affidabilità, poiché se uno di essi venisse danneggiato non sarebbe più possibile accedere a tutti i blocchi successivi (una soluzione a questo problema potrebbe essere l’utilizzo di puntatori in entrambi i sensi con delle liste doppiamente concatenate o utilizzare la tabella FAT, ma queste soluzioni richiedono overhead notevoli).

Esiste un problema di frammentazione interna o esterna per l’allocazione concatenata?

Utilizzando questo tipo di allocazione non esiste la frammentazione esterna, mentre continua ad esistere la frammentazione interna nell’ultimo blocco di dati del file.

In un file system, come funziona l’allocazione di file di tipo indicizzato?

L’allocazione di tipo indicizzato risolve il problema principale dell’allocazione concatenata, cioè il non efficiente accesso diretto, raggruppando tutti i puntatori in una sola locazione: il blocco indice. In questo caso, ogni file ha il suo blocco indice, cioè un array di indirizzi di blocchi del disco.

Che vantaggi e svantaggi presenta l’allocazione di tipo indicizzato?

L’allocazione indicizzata soffre di molto overhead: lo spazio aggiuntivo richiesto dai puntatori del blocco indice è maggiore dello spazio aggiuntivo richiesto dall’allocazione concatenata. Infatti, se un file è di piccole dimensioni, con l’allocazione concatenata si perde solo lo spazio di un puntatore per blocco, in quella indicizzata si dovrà usare un blocco e quindi un puntatore in più (a tale scopo, si può pensare a soluzioni quali il salvataggio del piccolo file all’interno del blocco indice stesso o altre). Se invece un file è di grandi dimensioni, il blocco indice può essere non sufficiente e può essere quindi concatenato ad un altro blocco indice, impiegato insieme ad altri blocchi per costruire una relazione gerarchica (blocco indice di primo livello, secondo livello…) oppure usare una combinazione tra vari schemi.

Anche questa allocazione soffre di alcuni problemi prestazionali, ad esempio i blocchi indice si possono caricare in memoria, ma i blocchi dei dati sono comunque sparsi per l’intero disco.

Qual è lo svantaggio principale del metodo di “File allocation” chiamato “Linked list”? Quali sono, sempre in questo metodo, i possibili pro e contro che emergono al variare della dimensione dei blocchi?

Lo svantaggio principale della allocazione di file di tipo Linked List è l’inefficienza nell’accedere ai record con metodo di accesso diretto, infatti nel caso peggiore si dovrà accedere a tutti i blocchi del file (singly-linked list) per trovare i dati e i record richiesti, oppure a metà dei blocchi nel caso di doubly-linked list.

Aumentare le dimensioni di un blocco riduce il numero di operazioni di I/O richieste per trovare il record necessario, ma aumenta la possibilità di frammentazione interna. Al contrario invece, riducendo la dimensione dei blocchi si riduce la frammentazione interna, ma aumentano le operazioni di I/O da effettuare per recuperare il record.

Un file occupa, sull’hard disk, 3 blocchi. Descrivete come questo file viene memorizzato sull’hard disk secondo te le tre tecniche fondamentali di allocazione dello spazio su disco. Si consiglia vivamente di fare disegni esemplificativi. Ad esempio, assumete che l’ipotetico hard disk su cui è memorizzato il file sia da 16 blocchi in tutto, e che non contenga altri file. Scegliete anche dei valori adeguati – ovviamente compresi tra 0 e 15 – per i 3 blocchi in cui è memorizzato il file.

Allocazione contigua:

schema esempio metodo allocazione contigua
schema esempio metodo di allocazione contigua

Nella allocazione contigua, i file sono memorizzati in maniera contigua a partire da un blocco “start”, e poi sui blocchi successivi. Si tiene traccia dei blocchi che occupa il file tramite la sua “length”

Allocazione concatenata:

schema esempio allocazione concatenata

Nella allcoazione concatenata un file è salvato in blocchi posizionati arbitrariamente, si tiene traccia del primo blocco e da quello un puntatore punterà al blocco successivo, in questo caso:

2 –> 4 –> 11

Allocazione indicizzata:

schema esempio allocazione indicizzata file system

Nella allocazione indicizzata abbiamo un blocco che funge da indice e tiene traccia di tutti i blocchi che occupa un file. A partire da quel blocco indice, quindi, possiamo accedere ai blocchi del file.

Quale delle tre tecniche di allocazione è meno adatta ad un accesso diretto ai dati del file e perché?

L’allocazione concatenata è la meno adatta ad un accesso diretto ai dati del file, perché richiede n accessi al disco per leggere i dati del file contenuti nell’n-esimo blocco del file stesso che possono essere in qualsiasi punto del disco ed è quindi inefficiente.

Nella allocazione concatenata, che forme di spreco di memoria sono presenti?

Uno spreco di memoria riguarda lo spazio richiesto per i puntatori ai blocchi. È inoltre sprecata la memoria inutilizzata nell’ultimo blocco di un file, perché non può essere riempito con nessun altro tipo di informazioni (frammentazione interna). Questo spreco può essere ridotto diminuendo la dimensione dei blocchi in memoria, ma vengono così aumentati gli accessi necessari per ritrovare un record e il numero di puntatori da utilizzare.

Descrivere come funziona l’allocazione indicizzata (ci si può aiutare anche con un disegno). In quale caso l’allocazione indicizzata comporta un grande spreco di spazio su disco?

L’allocazione di tipo indicizzato raggruppa tutti i puntatori in una sola locazione: il blocco indice. In questo caso, ogni file ha il suo blocco indice, cioè un array di indirizzi di blocchi del disco.

Nel caso di file molto piccoli questo tipo di allocazione comporta un grande spreco di spazio su disco, perché il blocco indice rimane quasi completamente inutilizzato.

File system definizione:

Per File System indichiamo il sistema ovvero la struttura che gestisce l’organizzazione, il salvataggio e l’accesso ai file sulla memoria secondaria di un computer.

Altri capitoli:
CPU Scheduling
Processi e Thread
Semafori e Sincronizzazione
Tutti gli appunti su sistemi operativi

Grazie per la lettura

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *