Esercizio - Inode e dimensione massima dei file (eserciziario, esercizi 63, 97, 105 e 111)
In questa pagina 6
Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD).
- 63. Disco con file system di tipo UNIX: blocco da 4 KB, indirizzo di blocco di 4 byte, i-node con struttura tradizionale (10 puntatori diretti, 1 indiretto singolo, 1 indiretto doppio e 1 indiretto triplo). (a) Quanti blocchi (dati e di indirizzi) occupano i file A (20 KB), B (200 KB), C (2000 KB), D (20 000 KB)? (b) Qual è la dimensione massima di un file?
- 97. File system con inode da 1 KB, 16 indici diretti di blocco, 1 blocco con 1 livello di indirezione e 1 blocco con 2 livelli di indirezione. Dimensione massima di un file? Ogni puntatore a un blocco occupa 4 B, anche i blocchi della memoria occupano 1 KB.
- 105. Inode con blocchi da 512 byte; il nodo indice primario contiene 12 campi di indirizzo di blocchi di disco e 2 puntatori a nodi indice di primo e secondo livello di indirezione; gli indirizzi di blocco sono su 32 bit. Si vuole allocare un file composto da 10 000 record da 80 byte ciascuno; un record non può essere suddiviso in due blocchi diversi. Quanti blocchi servono per i dati? Quanti per gestire l'allocazione tramite nodi indice?
- 111. Partizione di disco da 64 GB, blocchi dati da 1 KB e indici da 32 bit. Ampiezza massima di un file ottenibile con un i-node ampio esattamente un blocco, i-node principale con 12 indici di blocco, 1 blocco indice per singola indirezione e 1 per indirezione a 2 livelli. Quanto spazio occupa la struttura i-node necessaria per rappresentare tale file?
La struttura
L'inode contiene i puntatori ai blocchi del file:
- puntatori diretti, ciascuno a un blocco di dati;
- 1 puntatore indiretto singolo: punta a un blocco di puntatori ( blocchi dati);
- 1 puntatore indiretto doppio: punta a un blocco di puntatori a blocchi di puntatori ( blocchi dati);
- eventualmente 1 puntatore indiretto triplo ( blocchi dati).
Se il blocco è di byte e un puntatore di byte, un blocco contiene puntatori. Il numero massimo di blocchi dati è e la dimensione massima è quel numero per . I blocchi indice sono blocchi in più (non contano come dati): per blocchi di dati si conta quanti blocchi di puntatori servono livello per livello.
Esercizio 63
, byte: puntatori per blocco.
(a) I blocchi di dati sono :
| file | blocchi dati | puntatori | blocchi indice | totale |
|---|---|---|---|---|
| A, 20 KB | 5 | 5 diretti (su 10) | 0 | 5 |
| B, 200 KB | 50 | 10 diretti + 40 nell'indiretto singolo | 1 | 51 |
| C, 2000 KB | 500 | 10 diretti + 490 nell'indiretto singolo () | 1 | 501 |
| D, 20 000 KB | 5000 | 10 diretti + 1024 nell'indiretto singolo + 3966 nel doppio | 5006 |
Per D: i primi 10 blocchi usano i diretti, i successivi l'indiretto singolo (1 blocco indice). I restanti vanno nel doppio: 1 blocco indice di primo livello, che punta a blocchi indice di secondo livello (tre pieni da 1024 e uno con puntatori). Blocchi di indici: ; totale . (La soluzione del corso scrive .)
(b) La dimensione massima è, in blocchi,
e quindi byte, circa 4 TB: il termine che conta è blocchi byte TB; gli altri (4 GB, 4 MB, 40 KB) sono molto più piccoli.
Esercizio 97
puntatori per blocco (inode di 1 KB, 16 diretti, un indiretto singolo, un indiretto doppio):
- 16 blocchi dati diretti: ;
- indiretto singolo: blocchi dati (costa 1 blocco indice);
- indiretto doppio: blocchi dati (costa 1 blocco + 256 blocchi indice).
Esercizio 105
Blocchi dati. Un blocco da 512 byte contiene record (6 record occupano 480 byte; i 32 rimanenti si sprecano perché un record non può stare in due blocchi). Servono blocchi di dati.
Blocchi di indici. Un blocco indice da 512 byte con indirizzi da 4 byte contiene indirizzi.
- 12 blocchi sono indirizzati direttamente dal nodo indice principale; ne restano .
- Con indirizzamento singolo se ne indirizzano 128: ne restano . Serve 1 blocco di indirizzi.
- Con indirizzamento doppio: blocchi di secondo livello (11 pieni e 1 con puntatori), più 1 blocco di primo livello: blocchi.
Blocchi per gestire l'allocazione: 1 (nodo indice principale) (singolo) (doppio) .
Totale: blocchi byte KB di occupazione totale.
Esercizio 111
Dimensione massima. Blocco da 1 KB, indici da 32 bit (4 byte): . Con 12 diretti, 1 singolo, 1 doppio:
(La partizione è da 64 GB byte, quindi blocchi: gli indici da 32 bit bastano.)
Spazio dell'inode. Per rappresentare un file che usa tutto: 1 blocco per l'inode principale, 1 per l'indirezione singola, 1 per il primo livello dell'indirezione doppia e 256 per il secondo livello:
Errori tipici
- Contare i blocchi indice nella dimensione massima del file: sono spazio in più.
- Dimenticare che i puntatori dell'indirezione doppia occupano blocchi indice (non solo 1).
- Nell'esercizio 105, ignorare che un record non può essere diviso (6 record per blocco, non ).
- Confondere i puntatori per blocco con la dimensione del blocco.
- Nell'esercizio 63, non accorgersi che per il file D il singolo indiretto non basta.
Versione ripasso
Formule. puntatori per blocco; blocchi dati massimi ; massimo blocchi ; i blocchi indice sono in più. Indiretto doppio: 1 blocco + .
63 ( KB, , , 10 diretti). A 20 KB: 5 blocchi. B 200 KB: . C 2000 KB: . D 20 000 KB: 5000 dati (10 diretti, 1024 singolo, 3966 doppio) . Massimo KB TB.
97. : KB KB MB.
105. 6 record per blocco; blocchi dati; ; ; nel doppio blocchi; indici ; totale blocchi byte (841 KB).
111. : blocchi (65 804 KB); struttura: KB.
Passaggi. 63 D: 5000 blocchi dati diretti (singolo) (doppio); indici ; totale 5006. 105: record per blocco ; dati ; ; ; doppio blocchi ; indici ; totale blocchi B. 111: KB; struttura KB. 97: KB KB.
Errori tipici: blocchi indice nella dimensione massima; indiretto doppio con 1 solo blocco indice; record divisi tra blocchi; invece di ; dimenticare il doppio per D.