Salta al contenuto
Note per Studenti Esercizio - Allocazione dei file con metodo contiguo, concatenato, indicizzato e FAT (eserciziario, esercizi 42, 53, 65, 71, 104, 108, 113 e 119)

Esercizio - Allocazione dei file con metodo contiguo, concatenato, indicizzato e FAT (eserciziario, esercizi 42, 53, 65, 71, 104, 108, 113 e 119)

In questa pagina 9

Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD).

  • 42. File system FAT su un disco con 20 blocchi da 4 KB (indirizzi da 0 a 19). Il file f0f_0 occupa nell'ordine i blocchi 5, 19, 4, 11, 7; il file f1f_1 i blocchi 18, 12, 13, 1, 6, 15, 10. (1) Contenuto della FAT, con −1-1 per i blocchi liberi e −2-2 per l'ultimo blocco di un file. (2) Dimensione massima di un nuovo file in byte.
  • 53. FAT32 su un disco da 1 GB con cluster da 2 KB, pieno al 10%; metà dello spazio occupato è di file di dimensione inferiore a 2 KB. Stimare il numero di file di dimensione inferiore a 2 KB.
  • 65. Disco da 2402^{40} byte con blocchi da 1024 byte. Quanti accessi al disco servono per leggere l'ultimo blocco di un file A da 2152^{15} byte, se il numero del primo blocco è già in RAM e l'allocazione è concatenata? Ogni puntatore occupa 4 byte.
  • 71. File di 70 record, con allocazione contigua, concatenata e a tabella indice (un record per blocco). Le informazioni del file sono già in memoria centrale, e la tabella indice è contenuta in un unico blocco. Quanti accessi al disco (letture e scritture) servono per cancellare (1) il primo record, (2) il 40-esimo, (3) l'ultimo?
  • 104. FAT-XX: XX è il numero di bit per l'indice di blocco. Variante FAT-15 rispetto a FAT-16, dove un bit dell'indice non è utilizzabile e tutto il resto è uguale; come in FAT-16 i blocchi sono al massimo da 32 KB. Dimensione massima di file e di partizione.
  • 108. Chiavetta USB da 2 GB con FAT32 e blocchi da 4 KB, 100 file da 1000 blocchi ciascuno. Lettura di un blocco: 100 μ\mus; accesso a un blocco non contiguo: 5 ms (nullo se contiguo); FAT già in memoria. Tempo per leggere tutti i file nel caso di (a) minima e (b) massima frammentazione.
  • 113. File con record di 512 byte su disco con blocchi da 512 byte. Le informazioni sul file (i-node) sono già in memoria in tutti e tre i casi. L'ultimo record letto è il 3, il prossimo da leggere è l'8. Quanti accessi al disco servono con allocazione contigua, concatenata e indicizzata?
  • 119. Dimensione minima in bit di ogni elemento di una FAT che gestisce al massimo una partizione da 200 GB con blocchi da 4 KB.

Teoria: File system - interfaccia, directory e implementazioneUn file è uno spazio di indirizzi logici contigui con attributi (nome, identificatore, tipo, posizione, dimensione, protezione, date) e operazioni (create, read, write, seek, delete, truncate, open, close); il sistema tiene una tabella dei file aperti di sistema e una per processo; l'accesso è sequenziale o diretto; le directory si organizzano a livello singolo, a due livelli, ad albero, a grafo aciclico (hard link e link simbolici) o a grafo generale; i permessi UNIX rwx per proprietario, gruppo e altri (chmod 754); il file system è a strati (file system logico, organizzazione dei file, file system di base, controllo dell'I/O), con strutture su disco (boot block, superblock, directory, FCB o inode) e in memoria; i blocchi si allocano in modo contiguo (extent), concatenato (FAT) o indicizzato (inode con puntatori diretti e indiretti, ext4 con extent); lo spazio libero con bitmap, lista, raggruppamento o conteggio; mount, VFS, file system distribuiti (NFS) e semantiche di consistenza.File system - interfaccia, directory e implementazione →.


Esercizio 42 (FAT)

La FAT. Ogni riga ii della tabella contiene il blocco che segue il blocco ii nel suo file. Seguendo le catene (con la correzione del corso: f0f_0 è 5, 9, 19, 4, 11, 7, perché la soluzione del corso include anche il blocco 9; nel testo l'elenco salta il 9):

  • f0f_0: 5→9→19→4→11→75\to9\to19\to4\to11\to7 (e 7 è l'ultimo: −2-2);
  • f1f_1: 18→12→13→1→6→15→1018\to12\to13\to1\to6\to15\to10 (10 è l'ultimo: −2-2).
blocco 0 1 2 3 4 5 6 7 8 9
FAT −1-1 6 −1-1 −1-1 11 9 15 −2-2 −1-1 19
blocco 10 11 12 13 14 15 16 17 18 19
FAT −2-2 7 13 1 −1-1 10 −1-1 −1-1 12 4

I blocchi liberi (−1-1) sono 0, 2, 3, 8, 14, 16, 17: 7 blocchi.

Dimensione massima di un nuovo file. Un file può usare tutti i blocchi liberi: 7⋅4 KB=28 KB=28 6727\cdot4\text{ KB}=28\text{ KB}=28\,672 byte.

Se si seguisse il testo alla lettera (senza il blocco 9 in f0f_0, con 5→195\to19) anche il blocco 9 risulterebbe libero e i blocchi liberi sarebbero 8, cioè 32 KB. La soluzione del corso (28 KB) corrisponde alla lista con il 9.

Esercizio 53

Il disco ha 1 GB e il 10% è occupato: circa 100 MB. Metà (50 MB) è occupata da file piccoli. Un file, anche se più piccolo di 2 KB, occupa comunque un intero cluster da 2 KB. Quindi il numero di file piccoli è

Nsmall≈50 MB2 KB=25 000.N_{\text{small}}\approx\frac{50\ \text{MB}}{2\ \text{KB}}=25\,000.

(Con 1 GB =1000=1000 MB; con le potenze di 2 il conto dà circa 26 200.) Sugli altri file non si può dedurre nulla: non si sa quanti sono né quanto sono grandi.

Esercizio 65

Ogni blocco contiene 1020 byte di dati e 4 di puntatore al blocco successivo. Il file è di 215=32 7682^{15}=32\,768 byte:

⌈32 7681020⌉=⌈32,13⌉=33 blocchi.\left\lceil\frac{32\,768}{1020}\right\rceil=\lceil32{,}13\rceil=33\ \text{blocchi}.

(Se si usasse un blocco intero per i dati, 215/210=322^{15}/2^{10}=32 blocchi; ma 4 byte per blocco sono puntatori, quindi 33.) Con allocazione concatenata, per arrivare all'ultimo blocco si devono leggere tutti i blocchi in sequenza: servono i puntatori dei primi 32 blocchi più il contenuto del 33°. Il numero di accessi è 33. (Il numero del primo blocco è già in RAM, quindi non si legge nessun'altra struttura.)

Esercizio 71

operazione contigua concatenata indicizzata
cancellare il primo record 0 accessi: basta cambiare l'inizio e la lunghezza nella directory (in memoria) 0 accessi: si cambia il puntatore al primo blocco nella directory 1 lettura + 1 scrittura: si modifica la tabella indice
cancellare l'ultimo 0: basta ridurre la lunghezza 68 letture + 1 scrittura (vedi sotto) 1 lettura + 1 scrittura
cancellare il 40-esimo 30 letture + 30 scritture: si copiano il 41° sul 40°, il 42° sul 41°, …, il 70° sul 69° 40 letture + 1 scrittura 1 lettura + 1 scrittura

Spiegazioni:

  • Contigua, 40-esimo: i record dal 41° al 70° (30 record) vanno spostati di una posizione: si legge e si riscrive ciascuno: 30 + 30.
  • Concatenata, ultimo: per modificare il puntatore del penultimo blocco bisogna arrivare fino a lui seguendo la catena; la soluzione del corso conta 68 letture e 1 scrittura. (Se si conta anche la lettura del penultimo blocco stesso, cioè la lettura-modifica-scrittura di un blocco, sono 69 letture e 1 scrittura.)
  • Concatenata, 40-esimo: servono 40 letture per ottenere gli indirizzi del 39° e del 41° blocco, e 1 scrittura nel blocco 39 per fargli puntare il 41°.
  • Indicizzata: si modifica solo il blocco indice: 1 lettura (per accedere a tutto l'indice) e 1 scrittura (per riscriverlo), qualunque sia il record: i blocchi dati non si spostano e non si toccano.

Esercizio 104

FAT-15 significa che un indice di blocco ha 15 bit: 215=32 7682^{15}=32\,768 blocchi. Come in FAT-16, i blocchi sono al massimo da 32 KB =215=2^{15} byte. La dimensione massima di partizione è

215 blocchi×215 B/blocco=230 B=1 GB,2^{15}\text{ blocchi}\times2^{15}\text{ B/blocco}=2^{30}\text{ B}=\mathbf{1\ GB},

cioè la metà di quella di FAT-16 (216⋅215=22^{16}\cdot2^{15}=2 GB). La dimensione massima di un file è la stessa, 1 GB (un file può occupare l'intera partizione, trascurando la FAT).

Esercizio 108

La chiavetta ha 2 GB/4 KB=231/212=219=524 2882\text{ GB}/4\text{ KB}=2^{31}/2^{12}=2^{19}=524\,288 blocchi. I file occupano 100⋅1000=100 000100\cdot1000=100\,000 blocchi.

(a) Minima frammentazione: tutti i blocchi sono contigui e uno dopo l'altro. Si leggono 100 000100\,000 blocchi a 100 μ\mus: 100 000⋅100 μs=10100\,000\cdot100\ \mu\text{s}=10 s (la soluzione ammette anche 10 s più i 5 ms iniziali per il primo blocco). Se i file fossero separati fra loro (ogni file contiguo ma con un salto fra un file e l'altro): ogni file costa 1000⋅100 μs=1001000\cdot100\ \mu\text{s}=100 ms, più 5 ms di salto: 100⋅105 ms=10,5100\cdot105\text{ ms}=10{,}5 s.

(b) Massima frammentazione: poiché i blocchi liberi sono 524 288−100 000>100 000524\,288-100\,000>100\,000, ogni blocco di dato può essere separato dal successivo da almeno un blocco libero. Ogni lettura costa quindi un salto più la lettura:

100 000⋅(5 ms+100 μs)=100 000⋅5,1 ms=510 s=8 min 30 s.100\,000\cdot(5\ \text{ms}+100\ \mu\text{s})=100\,000\cdot5{,}1\ \text{ms}=510\ \text{s}=8\ \text{min }30\ \text{s}.

Il caso peggiore è 51 volte più lento del migliore (510 s contro 10 s): ogni accesso non contiguo costa 50 volte più del trasferimento del blocco.

Esercizio 113

Il record è di 512 byte e il blocco è di 512 byte: un record per blocco.

  • Contigua: il record 8 è all'indirizzo base + 7+\,7 blocchi: si calcola subito, 1 accesso.
  • Concatenata: il record 3 è appena stato letto (e con lui il puntatore al blocco 4): per arrivare all'8 si leggono i blocchi 4, 5, 6, 7, 8: 5 accessi.
  • Indicizzata: il blocco indice è in memoria (è un'ipotesi): si legge direttamente il blocco 8: 1 accesso.

Esercizio 119

Una partizione da 200 GB con blocchi da 4 KB ha 200⋅230/212=52 428 800200\cdot2^{30}/2^{12}=52\,428\,800 blocchi (circa 50 milioni). Si ha 225=33 554 432<52 428 800≤226=67 108 8642^{25}=33\,554\,432<52\,428\,800\le2^{26}=67\,108\,864, quindi ogni indice di blocco richiede almeno 26 bit.


Errori tipici

  • Dimenticare di togliere dai blocchi della concatenata lo spazio del puntatore (1020 e non 1024 byte di dati).
  • Nella concatenata, contare solo il blocco da raggiungere e non tutti i blocchi precedenti da leggere.
  • Nell'esercizio 42, non contare il blocco 9 o i blocchi liberi (indicati con −1-1) e quelli di fine file (−2-2).
  • Dimenticare che un file piccolo occupa comunque un cluster intero (esercizio 53).
  • Nel caso di massima frammentazione dell'esercizio 108, contare i 5 ms una volta sola invece che a ogni blocco.

Versione ripasso

42 (FAT). f0f_0: 5, 9, 19, 4, 11, 7 (il corso include il 9); f1f_1: 18, 12, 13, 1, 6, 15, 10. FAT: 0:−10{:}-1, 1:61{:}6, 2:−12{:}-1, 3:−13{:}-1, 4:114{:}11, 5:95{:}9, 6:156{:}15, 7:−27{:}-2, 8:−18{:}-1, 9:199{:}19, 10:−210{:}-2, 11:711{:}7, 12:1312{:}13, 13:113{:}1, 14:−114{:}-1, 15:1015{:}10, 16:−116{:}-1, 17:−117{:}-1, 18:1218{:}12, 19:419{:}4. Liberi: 0, 2, 3, 8, 14, 16, 17 =7=7 blocchi →28\to28 KB. (Senza il 9 si avrebbero 8 blocchi liberi, 32 KB.)

53. 0,1⋅10{,}1\cdot1 GB =100=100 MB, metà piccoli =50=50 MB; un file piccolo occupa un cluster da 2 KB: 50 MB/2 KB≈25 00050\text{ MB}/2\text{ KB}\approx25\,000.

65. Dati per blocco 1024−4=10201024-4=1020; ⌈32768/1020⌉=33\lceil32768/1020\rceil=33 blocchi; si leggono tutti in catena: 33 accessi.

71. Contigua: primo 0, ultimo 0, 40-esimo 30 letture + 30 scritture. Concatenata: primo 0, ultimo 68 letture + 1 scrittura, 40-esimo 40 letture + 1 scrittura. Indicizzata: 1 lettura + 1 scrittura in tutti i casi.

104. FAT-15: 2152^{15} blocchi da 2152^{15} byte =230=1=2^{30}=1 GB (partizione e file, metà di FAT-16).

108. (a) 100 000⋅100 μs=10100\,000\cdot100\ \mu\text{s}=10 s (10,5 s se i file sono separati); (b) 100 000100\,000 blocchi, 219=524 2882^{19}=524\,288 blocchi totali: 100 000⋅5,1100\,000\cdot5{,}1 ms =510=510 s =8=8 min 30 s.

113. Contigua 1; concatenata 5 (blocchi 4-8); indicizzata 1.

119. 200 GB/4 KB=52 428 800200\text{ GB}/4\text{ KB}=52\,428\,800 blocchi →226\to2^{26}: 26 bit.

Passaggi. Ex. 42: seguire le catene f0f_0 (5,9,19,4,11,75,9,19,4,11,7) e f1f_1 (18,12,13,1,6,15,1018,12,13,1,6,15,10); gli ultimi blocchi valgono −2-2, i liberi −1-1 (sono 0, 2, 3, 8, 14, 16, 17); massimo 7⋅47\cdot4 KB =28=28 KB. Ex. 65: dati per blocco 1024−4=10201024-4=1020; blocchi ⌈32768/1020⌉=33\lceil32768/1020\rceil=33; 33 letture in catena. Ex. 71 (70 record): contigua primo 0 e ultimo 0 accessi, 40-esimo 30+30 (si spostano i record 41-70); concatenata primo 0, ultimo 68 letture ++ 1 scrittura (69 con lettura-modifica-scrittura), 40-esimo 40 letture ++ 1 scrittura; indicizzata 1 lettura ++ 1 scrittura. Ex. 104: 215⋅215=2302^{15}\cdot2^{15}=2^{30} B =1=1 GB. Ex. 108: 231/212=2192^{31}/2^{12}=2^{19} blocchi totali, 100 000100\,000 occupati; minima 100 000⋅100 μs=10100\,000\cdot100\ \mu\text{s}=10 s, massima 100 000⋅5,1100\,000\cdot5{,}1 ms =510=510 s. Ex. 113: contigua 1, concatenata 5, indicizzata 1. Ex. 119: 200 GB/4 KB=52 428 800→226200\text{ GB}/4\text{ KB}=52\,428\,800\to2^{26}: 26 bit. Ex. 53: 50 MB/2 KB=25 00050\text{ MB}/2\text{ KB}=25\,000.

Errori tipici: 1024 invece di 1020 byte di dati; contare solo l'ultimo blocco della catena; dimenticare il 9 o i valori speciali nella FAT; cluster intero per i file piccoli; 5 ms contati una volta sola.

Teoria: File system - interfaccia, directory e implementazioneUn file è uno spazio di indirizzi logici contigui con attributi (nome, identificatore, tipo, posizione, dimensione, protezione, date) e operazioni (create, read, write, seek, delete, truncate, open, close); il sistema tiene una tabella dei file aperti di sistema e una per processo; l'accesso è sequenziale o diretto; le directory si organizzano a livello singolo, a due livelli, ad albero, a grafo aciclico (hard link e link simbolici) o a grafo generale; i permessi UNIX rwx per proprietario, gruppo e altri (chmod 754); il file system è a strati (file system logico, organizzazione dei file, file system di base, controllo dell'I/O), con strutture su disco (boot block, superblock, directory, FCB o inode) e in memoria; i blocchi si allocano in modo contiguo (extent), concatenato (FAT) o indicizzato (inode con puntatori diretti e indiretti, ext4 con extent); lo spazio libero con bitmap, lista, raggruppamento o conteggio; mount, VFS, file system distribuiti (NFS) e semantiche di consistenza.File system - interfaccia, directory e implementazione →.

Teoria collegata