Torna alla pagina di Sistemi Operativi
:: Appunti caotici ::
Lezione 3
Realizzazione dei file: gestione dell'astrazione dei file
Pag 1
Sommario
...
Pag 2
Visione logica del file
La definizione ufficiale del file, da un punto di vista logico, è: sequenza di elementi omogenei (record logici) in numero non limitato. Identifichiamo gli elementi del file con un indice che va da 0 ad N.
Il tipo base è il costruttore che ci permette di creare l'oggetto con cui rappresentare l'informazione. Grazie ad esso il compilatore sa quanti byte occupa ogni elemento, e conoscendo anche il numero N di elementi, il sistema operativo avrà vita facile per scandire e manipolare il file.
Visione fisica del file
Da un punto di vista fisico il file è un insieme ordinato di elementi fisici (blocchi fisici) del supporto di memoria di massa. Non è importante dove si trovino fisicamente i blocchi su disco, il gestore del file system provvederà a mettermeli nell'ordine logico corretto per essere usato. La dimensione F in byte dei singoli blocchi fisici dipende dalla formattazione fisica del disco.
Pag 3
Mappaggio della visione logica sulla visione fisica del file
I Record logici tipizzati hanno dimensione di L byte che può essere calcolata dall'analisi del tipo; mentre i Blocchi fisici uniformi per supporto di memoria di massa hanno dimensione di F byte.
Il mappaggio per la memorizzazione può essere fatto in diversi modi, e nessuno di quelli che stiamo per elencare vanno bene (quindi che cazzo li dicidiamo a fare?):
- un record logico in un blocco fisico. Se L<F ho degli sfridi, la cui somma potrebbe diventare problematica; se invece L>F il tipo ase non può più essere memorizzabile. Questa si rivela quindi una soluzione stupida e banale, con vincoli inaccettabili
- K record logici in un blocco fisico: K = max {n|nL = F}. In pratica metto in un blocco fisico tanti record logici quanti ce ne stanno. K*L < F, il che comporta comunque degli sfridi, seppur ridotti in modo considerevole dato che butto al più L-1 byte.
Visione logica omogenea del file
Il concetto di byte stream parte dalla considerazione che tolta l'interpretazione applicativa il file non è altro che una sequenza di byte, e come tale potrebbe essere trattato. Se viene considerato il byte come tipo base non ho più bisogno di avere una gestione specifica per ogni tipo base del file system (cosa che avverrà poi a livello interpretativo, successivamente).
Pag 4
Mappaggio con byte stream (1)
Col mappaggio della visione logica nella visione fisica attraverso la visione logica a byte stream, risolvo i due problemi visti due slide fa:
- non ho più sfridi perché taglio il byte stream in fette esattamente di dimensione F
- se L>F chi cazzo se ne frega, tanto L non lo calcolo più
Mappaggio con byte stream (2)
...
Pag 5
Mappaggio con byte stream (3)
Per realizzare l'interpretazione del record logico su un byte stream, utilizzo delle finestre di L bytes attraverso cui guardarlo. Questa finestra si sposta di un numero di bytes pari alla sua dimensione.
Mappaggio con byte stream (4)
...
Pag 6
Gestione dell'astrazione dei file
...
Apertura
L'apertura predispone l'ambiente per le operazioni successive.
Pag 7
Lettura
...
Scrittura
Pag 8
Posizionamento - Seek
...
Torna alla pagina di Sistemi Operativi