Sei sulla pagina 1di 10

I Compendi OpenSource

di Giacomo Marciani

Teoria, Formulario e Suggerimenti Pratici

Sistemi Operativi

File System

Il file system fornisce il meccanismo di registrazione e accesso a dati e programmi. Risiede in memoria secondaria1 ed costituito dalla seguente struttura straticata2 :

: si occupa del trasferimento delle informazioni da memoria centrale a memoria secondaria, ed costituito da:
controllo di I/O

 

: scrivono speciche maschere di bit in opportune locazioni della memoria del controllore di I/O per indicare quali azioni debba compiere il dispositivo, e in quali locazioni.
driver dei dispositivi gestori dei segnali di interruzione

file system di base

: invia ai driver dei dispositivi i comandi di I/O, gestisce il buering ed il caching dei blocchi.

modulo di organizzazione dei file: traduce gli indirizzi dei blocchi logici negli indirizzi dei blocchi sici, gestisce lo spazio libero.

: gestisce i metadati, mantenendo le strutture di le in forma di le control block (FCB)3 , inoltre responsabile della protezione e della sicurezza.
file system logico

Il sistema operativo utilizza uno o pi le system per memorizzare, individuare e recuperare i dati. Consiste di due parti distinte: un insieme di file, ciascuno dei quali contiene dati correlati, e una struttura della directory, che organizza tutti i le nel sistema e fornisce le informazioni relative. Sia i le che la struttura della directory sono non volatili : entrambi devono risiedere in memoria secondaria ed avvicendarsi in memoria centrale.
File Un file un insieme nominale di informazioni, correlate e registrate in memoria secondaria. Dal punto di vista dell'utente, un le la pi piccola porzione di memoria secondaria logica. Dal punto di vista del programmatore di sistemi, un le un tipo di dato astratto denito dalle seguenti operazioni: creazione,scrittura,lettura,riposizionamento,cancellazione,troncamento,appending,ridenominazione. I le vengono memorizzati in dispositivi di memoria secondaria, ovvero dispositivi di memoria ad accesso casuale. Un le caratterizzato da alcuni attributi, quali: nome, identicatore, tipo, locazione, dimensione, protezione, identicazione dell'utente, data e ora. Queste informazioni sono conservate nella struttura della directory.
1 i dischi costituiscono la maggior parte della memoria secondaria in cui si conserva il le system; risultano convenienti a tale scopo grazie alla possibilit di accedere localmente ai blocchi, sia direttamente che sequenzialmente. 2 la straticazione del le system permette di uniformare l'interfaccia con i livelli inferiori senza duplicazione di codice, ma comporta un overhead per il sistema operativo. 3 ovvero blocco di controllo dei le.

I tipizzazione dei file permette al sistema operativo di operarvi ragionevolmente4 , e pu essere adoperata per indicare la struttura interna dei le. Il sistema operativo deve supportare nativamente la struttura dei le eseguibili, ma pu gestire e manipolare anche pi strutture di le: utile che supporti le strutture frequenti, ma un numero eccessivo lo appesantirebbe, mentre un numero troppo limitato rende scomoda la programmazione. Il sistema operativo mantiene la tabella dei file aperti costituita da due livelli di tabelle interne: una tabella del processo, contenente i riferimenti a tutti i le aperti da quel processo, e una tabella del sistema, contenente le informazioni indipendenti dai processi. Ogni voce della tabella del processo punta ad un elemento nella tabella di sistema. A ciascun le aperto sono associate le seguenti informazioni:

indica la posizione corrente all'interno del le; ogni operazione di I/O aggiorna questo puntatore, che dunque unico per ogni processo operante sul le.
puntatore al file:

indica il numero di processi che hanno aperto il le; quando il contatore ha valore zero il corrispondente elemento viene eliminato dalla tabella.
contatore delle aperture: locazione:

localizza il le in memoria secondaria.

indica i diritti con cui si intende operare sul le; un'informazione contenuta nella tabella del processo5 .
diritti di accesso:

Il record6 l'unit elementare7 di un le. L'impaccamento la tecnica necessaria8 che realizza la corrispondenza tra record logici e blocchi sici. Lo scarto dimensionale fra record logici e blocchi sici la causa della frammentazione interna.
Metodi di accesso ai le Per operare sulle informazioni contenute in un le necessario denire un modello di accesso ai record9 .

accesso sequenziale

le informazioni si elaborano sequenzialmente, un record dopo l'altro. Un'operazione di lettura/scrittura fa dunque avanzare automaticamente il puntatore al le.

10 :

4 una tecnica comune per realizzare la gestione dei tipi di le consiste nell'includere l'estensione nel nome del le. 5 nella tabella del processo ogni elemento caratterizzato da un identicatore e da un diritto di accesso: quindi pi elementi nella tabella del processo possono puntare ad uno stesso elemento nella tabella del sistema. 6 anche detto record logico. 7 la dimensione del record ssa. 8 l'impaccamento necessario in quanto ogni operazione elementare di I/O su disco orientata ai blocchi sici. 9 alcuni sistemi operativi dispongono sia dell'accesso sequenziale che dell'accesso diretto. 10 anche detto modello di accesso a nastro.

le informazioni si elaborano fornendo il numero di blocco relativo come parametro all'operazione di I/O, permettendo quindi un posizionamento arbitrario orientato al blocco.
accesso diretto

11 :

: variante dell'accesso diretto in cui per ogni le viene costruito un le indice contenente puntatori ai blocchi. L'indice permette di compiere ricerche su le molto lunghi, limitando le operazioni di I/O.
accesso indicizzato

: variante dell'accesso indicizzato in cui l'indice viene mantenuto su due livelli12 , il livello esterno in memoria centrale che punta al livello interno in memoria secondaria.
accesso indicizzato a due livelli

Alcuni sistemi operativi richiedono di specicare il modello di accesso al momento della creazione del le. L'accesso sequenziale pu essere facilmente simulato da un accesso nativamente diretto mantenendo una variabile che simuli il puntatore al le.
Protezione dei le L'affidabilit racchiude i meccanismi di salvaguardia delle informazioni dai danni sici, ed generalmente assicurata dalle copie di backup, automatiche o manuali. La protezione racchiude i meccanimsi di salvaguardia delle informazioni dagli accessi illegali ; le principali realizzazioni si basano su password e matrice di accesso. L'accesso controllato realizzato dalla denizione dei tipi di ac13 e di una access control list (ACL)14 , la quale gestita dal sucesso peruser e associa ad ogni le le rispettive autorizzazioni. L'accesso controllato segue il principio di priorit della maggiore specicit. Il file locking un meccanismo di protezione dei le, che pu essere obbligatorio o consigliato 15 , e pu realizzare un lock condiviso o esclusivo. Struttura della directory La directory un le di tipo particolare16 che realizza l'organizzazione gerarchica dei le; essa pu considerarsi una tabella di simboli che traduce i nomi dei le negli elementi in essa contenuti. La struttura della directory un tipo di dato astratto denito dalle seguenti operazioni: creazione, cancellazione, ricerca, elencazione, ridenominazione, attraversamento. La struttura logica della directory segue il principio del nome unico, e pu essere realizzata nei modi seguenti:
11 anche detto accesso relativo, o modello di accesso a disco. 12 viene dunque creato un indice per il le indice, al ne di limitarne l'eccessiva lunghezza. 13 lettura, scrittura, esecuzione, aggiunta, cancellazione, elencazione, modicazione,

copiatura. 14 ovvero lista di controllo degli accessi. 15 in caso di locking obbligatorio, il sistema operativo ad assicurare l'integrit dei dati soggetti al lock; in caso di locking consigliato, compito dei programmatori realizzare un corretto meccanismo di acquisizione/cessione dei lock, con le stesse accortezze della sincronizzazione dei processi atte ad assicurare l'integrit dei dati ed evitare i deadlock. 16 nel sistema Unix originale la directory era un le di testo regolare che elencava i nomi dei le in essa contenuti.

directory.
(UFD)

directory a livello singolo

: tutti i le sono contenuti nella stessa

directory a due livelli:

i le sono contenuti in user file directory indicizzate nella master file directory (MFD)18 . Questa struttura risolve il problema delle collisioni dei nomi, ma risulta inecace nel caso di multiutenza cooperante.
17

: i le sono contenuti in una strutura di directory e sottodirectory arbitraria ad albero, radicata nella root directory. Il le di contabilizzazione memorizza il puntatore alla directory iniziale dell'utente. I pathname possono essere di due tipi: pathname assoluti e pathname relativi.
directory con struttura ad albero

: variante della directory con struttura ad albero che permette la condivisione di le e directory attraverso i link 19 o duplicazione. L'aciclicit viene preservata durante l'attraversamento, ignorando i link.
directory con struttura a grafo aciclico

Una directory pu essere realizzata mediante le seguenti strutture dati:



lista lineare

: una lista lineare, eventualmente ordinata20 , contiene i nomi dei le e i rispettivi puntatori ai blocchi

tabella hash: la tabella hash riceve il risultato del hashing sul nome del le, e restituisce un puntatore al nome del le nella lista lineare, diminuendo notevolmente il tempo medio di ricerca. Le maggiori dicolt sono legate alle collisioni, risolvibili tramite liste concatenate come elementi della tabella, e alla dipendenza della funzione hash dalla dimensione tipicamente ssa della tabella.

Realizzazione del le system La realizzazione di un le system preve l'utilizzo di strutture dati, sia nei dispositivi di memoria secondaria che nella memoria principale. Le strutture dati che realizzano il le system, presenti nei dischi sono:

: contiene le informazioni necessarie al sistema per l'avviamento di un sistema operativo da quel volume
blocco di controllo dell'avviamento blocchi di controllo dei volumi

relativo volume.

: contiene i dettagli riguardanti il

: ogni le system ha una struttura della directory usata per organizzare i le.
struttura della directory

ma il requisito di ordinamento pu complicare la creazione/cancellazione dei le.

17 ovvero directory dei le utente, anche detta directory secondaria. 18 anche detta directory principale. 19 anche detti puntatori indiretti. 20 una lista lineare ordinata permette una ricerca binaria riducendo il tempo medio di ricerca,

blocchi di controllo dei file

: contengono i dettagli dei le.

Le strutture dati che realizzano il le system, presenti in memoria principale sono:

montato.

tabella di montaggio

: contiene i dettagli relativi a ciascun volume

tabella dei file aperti

: la tabella di sistema contiene del FCB di ciascun le aperto; la tabella del processo (una per ogni processo) punta agli elementi della tabella di sistema.
struttura della directory

directory.
buffer

: contiene il caching delle strutture delle

: conservano i blocchi del le system durante le operazioni di I/O.

Ogni operazione di I/O su le prevede l'apertura del le. Quando si apre un le, il nome viene passato al le system, il quale ne ricerca una corrispondenza nella tabella dei le aperti di sistema, e, in caso aermativo, aggiorna la tabella dei le aperti del processo aggiungendo un elemento che punti l'elemento opportuno nella tabella dei le aperti di sistema. Una volta aperto il le, se ne ricerca il nome all'interno della directory, sfruttando eventualmente il caching. Una volta trovato il le se ne copia il FCB nella tabella dei le aperti di sistema, aggiornando il numero di processi che fanno uso del le. L'apertura restituisce un le descriptor che funge da handle del le puntando l'elemento appropriato della tabella dei le aperti del processo. Quando si chiude un le, si cancella il relativo elemento della tabella dei le aperti del processo e si decrementa il contatore associato al le nella tabella dei le aperti di sistema.
Metodi di allocazione Un metodo di allocazione un meccanismo di allocazione dei le in memoria secondaria volto a rendere eciente l'I/O. Generalmente un le system realizza un unico metodo di allocazione.

: ogni le occupa un insieme di blocchi contigui. Il seek time trascurabile, in quanto l'indirizzamento lineare del disco rende trascurabili gli spostamenti della testina durante l'accesso a un le. L'elemento di directory contiene l'indirizzo del primo blocco e la lunghezza del le21 . L'allocazione dinamica della memoria risulta eciente con il criterio rst-t. Sore principalmente di frammentazione esterna, risolvibile tramite la compattazione22 , ma anche di frammentazione interna in caso sia necessaria l'allocazione preventiva.
allocazione contigua

lunghezza del le espressa in numero di blocchi compattazione il processo in cui un intero le system viene trasferito su un altro dispositivo di memoria secondaria, generando cos un ampio spazio libero contiguo sul dispositivo di origine. Il le system viene poi nuovamente trasferito sul dispositivo di origine, risolvendo il problema della frammentazione esterna. La compattazione pu essere o-line, ossia con il le system smontato, causando un down-time, oppure on-line, causando un notevole calo delle prestazioni.

21 la 22 la

allocazione contigua con estensioni

: variante dell'allocazione contigua che fa uso delle estensioni per evitare la frammentazione interna dovuta all'allocazione preventiva. La locazione dei blocchi dei le si registra come locazione, lunghezza e locazione del primo blocco della successiva estensione.

: ogni le composto da una lista concatenata di blocchi eventualmente sparsi; l'elemento di directory contiene un puntatore al primo e all'ultimo blocco; ogni blocco contiene un puntatore al blocco successivo23 . La clusterizzazione dei blocchi24 ovvia al problema della diminuzione dello spazio utile, al costo di un aumento della frammentazione interna. Non esiste frammentazione esterna e non mai necessaria la compattazione. Per accedere all'i-esimo blocco bisogna partire dal primo e attraversare la lista concatenata: per questo si presta all'accesso sequenziale, ma risulta ineciente per l'accesso diretto. Senza la FAT questo metodo di allocazione non potrebbe sostenere per un eciente accesso diretto.
allocazione concatenata

: variante dell'allocazione concatenata che utilizza una tabella di allocazione dei file25 indicizzata dal numero di blocco e contenente il numero di blocco successivo no all'ultimo blocco del le26 . L'elemento della directory contiene solo il numero del primo blocco, da utilizzare come indice nella lettura della FAT. La FAT aumenta l'ecienza solo se previsto il caching, altrimenti comporterebbe un aumento degli spostamenti della testina27 .
allocazione concatenata FAT allocazione indicizzata

: ogni le composto da una lista concatenata di blocchi sparsi, i cui puntatori sono raggruppati nel blocco indice del le, indicizzato per numero relativo di blocco. L'elemento di directory contiene un puntatore al blocco indice. Il blocco indice pu essere realizzato secondo i seguenti schemi: : se un blocco basta a contenere il blocco indice, allora il suo ultimo elemento null, altrimenti un puntatore al blocco indice successivo.  schema multilivello: il blocco indice di primo livello punta ai blocchi indice di secondo livello che puntano ai blocchi.  schema combinato: i primi 15 elementi del blocco indice sono memorizzati nell'inode del le; i primi 12 puntano a blocchi diretti 28 , i

schema concatenato

23 questi puntatori sono trasparenti per l'utente, quindi se ogni blocco formato da b byte e un puntatore occupa p byte, l'utente percepisce dei blocchi di b p byte. 24 la clusterizzazione dei blocchi il processo che consiste nel riunire blocchi contigui in cluster, e nell'allocare cluster piuttosto che i blocchi. 25 anche detta le allocation table, FAT. 26 all'ultimo blocco del le corrisponde uno speciale valore di ne le, cos come ai blocchi liberi riservato il valore 0. 27 gli spostamenti della testina sarebbero dovuti alle ripetute letture della FAT ad inizio volume. 28 i blocchi diretti puntano ai blocchi.

restanti tre puntano a blocchi indiretti 29 .


Gestione dello spazio libero Il problema dell'allocazione dinamica consiste nel soddisfare una richiesta di allocazione n-dimensionale data una lista dello spazio libero. La gestione dello spazio libero il meccanismo di gestione della lista 30 dello spazio libero . Esistono i seguenti metodi di gestione dello spazio libero, caratterizzati specialmente dalla specica realizzazione della lista:

la lista realizzata da un vettore di bit; ogni blocco rappresentato da un bit: se il blocco libero il bit vale 1, altrimenti 0. Questa realizzazione eciente solo se il vettore di bit interamente mantenuto in memoria centrale.
vettore di bit

31 :

: la lista realizzata da una lista concatenata di blocchi liberi, i cui puntatori sono interni ai blocchi stessi; il puntatore al primo elemento della lista mantenuto in una speciale locazione del disco. E' una soluzione ineciente poich per attraversare la lista necessario leggere ogni blocco.
lista concatenata raggruppamento

: gli indirizzi di n blocchi liberi sono memorizzati del primo di questi, mentre l'ultimo contiene gli indirizzi dei successivi n blocchi liberi, e cos via; quindi ogni volta sono n 1 i blocchi eettivamente liberi.

conteggio: la lista realizzata da un B-albero o una lista concatenata di coppie formate dall'indirizzo di un blocco libero e il numero n di blocchi liberi contigui che lo seguono.

Partizionamento Il partizionamento il processo attraverso il quale un dispositivo di memoria secondaria pu essere diviso in partizioni. Un volume una partizione contenente un le system. Un volume pu essere un sottoinsieme di dispositivi, un intero dispositivo o un insieme di dispositivi32 , e pu essere pensato come un disco virtuale. In un unico sistema informatico possono quindi convivere da uno a molti le system. Una raw partition una partizione priva di le system, priva cio di una struttura logica33 . La root partition la partizione contenente il kernel del sistema operativo ed eventuali altri le di sistema.
29 i blocchi indiretti puntano a loro volta a blocchi indice, e si dividono in blocco indiretto singolo, blocco indiretto doppio, blocco indiretto triplo, secondo la profondit dello schema multilivello. 30 a dispetto del suo nome, la lista dello spazio libero potrebbe non essere realizzata come vera e propria lista. 31 anche detto mappa di bit. 32 un volume che comprenda pi partizioni su pi dischi una particolare organizzazione RAID. 33 UNIX impiega una raw partition per la swap area.

Montaggio Il montaggio il processo attraverso il quale un le system viene reso ispezionabile dal sistema operativo e accessibile ai processi. Fornito un punto di montaggio34 , il sistema operativo vi aggancia il le system da montare, ne verica la validit e annota la posizione nella sua struttura della directory. Lo smontaggio il processo attraverso il quale il sistema operativo riporta il le system da smontare nella sua situazione originaria. Il sistema operativo mantiene un le di congurazione contenente una lista di dispositivi e relativi punti di montaggio da montare automaticamente all'avvio del sistema; esso impone una semantica alle operazioni di montaggio/smontaggio, permettendo cos anche il montaggio esplicito manuale dei le system. Avviamento e caricamento Nella fase di avviamento del sistema operativo, viene caricata in memoria l'immagine contenuta nellapposita area di avviamento. In caso di dual-booting l'immagine caricata contiene un boot-loader, ovvero un modulo capace di interpretare diversi le system e sistemi operativi, e che permette il caricamento. Nella fase di caricamento, si esegue il montaggio della root partition e, dopo aver vericato la validit del le system e dopo un eventuale controllo di coerenza e correzione, il sistema operativo aggiorna la tabella di montaggio. Semantica della coerenza La semantica della coerenza specica la semantica delle operazioni con cui pi utenti accedono ad un le condiviso: dunque un criterio per la valutazione di qualsiasi le system che consenta la condivisione. E' collegata agli algoritmi di sincronizzazione e, in particolare, specica quando le modiche ai dati apportate da un utente possano essere viste da altri utenti. Una sessione di file una sequenza di accessi di lettura/scrittura compresa tra una open() e una close(). Vediamo due modelli di semantica della coerenza:

: un le condiviso associato ad una singola immagine sica, accessibile esclusivamente ; quindi il puntatore di le condiviso e le modiche apportate al le sono immediatamente visibili a tutti.
semantica UNIX

: un le condiviso associato a pi immagini, accessibili indipendentemente ; quindi le modiche sono visibili solo alle sessioni di leche iniziano successivamente, mentre le istanze gi aperte non riportano modiche.
semantica delle sessioni

semantica dei le condivisi immutabili: un le condiviso ha un nome im-

mutabile e il suo contenuto non pu essere modicato, l'accesso in sola lettura.

34 un punto di montaggio una locazione nella struttura della directory, alla quale il le system da montare verr agganciato.

File system virtuali Un file system virtuale35 denisce un'interfaccia uniforme che permette la coesistenza di pi le system distinti nello stesso sistema, eliminando la necessit di scrivere procedure separate per ogni le system. L'orientamento agli oggetti e la modularit delle procedure permette infatti di scindere le chiamate di sistema dai dettagli di realizzazione del particolare le system. File system in Linux Unix considera ciascun le come un usso di byte, senza alcuna intepretazione strutturale, limitandosi a memorizzare nell'header il magic number 36 : questo schema garantisce la massima essibilit, ma il minimo sostegno, poich qualsiasi programma applicativo deve sapere intepretare autonomamente la struttura dei le. Prevede il le locking consigliato. Il record logico il byte. Il le system ha una struttura della directory a grafo orientato aciclico. Un hard link un nome di un le: si pu creare un nuovo hard link per un le esistente. A ciascun le associato un contatore di riferimento, che conta il numero di hard link associati al le: la rimozione del le avviene solo quando il contatore di riferimento nullo. Un soft link un particolare tipo di le il cui contenuto il pathname di un altro le37 .

operativo lo sostituisce con il pathname in esso contenuto. La risoluzione di soft link pu indurre cicli inniti : per questo Linux limita il numero di soft link che possono essere presenti in un pathname.

35 anche detto virtual le system, VFS. 36 il magic number un codice atto ad indicare genericamente il tipo di le. 37 un soft link pu apparire come componente di un pathname: il sistema

10