Estratto del documento

appuntiDiIngegneria

File System

Sommario

1.1. File System .............................................................................................................................................. 2

1.1.1. Gestione delle Directory ..................................................................................................................... 6

1.1.2. Implementazione di un File System ................................................................................................... 7

1.1.3. Implementazione delle Directory ..................................................................................................... 11

1.1.4. File System più Famosi ..................................................................................................................... 13

1.1.5. Dimensionamento dei Blocchi di un Disco ....................................................................................... 16

1.1.6. Affidabilità e Consistenza dei File System ........................................................................................ 16

1.1.7. File System UNIX ............................................................................................................................... 18

1.1.8. File System MS-DOS ......................................................................................................................... 22

1.1.9. File System di Windows 98 ............................................................................................................... 23

1.1.10. File System di NT .............................................................................................................................. 24

1

1.1. File System

Il File System è la parte del SO che gestisce un insieme di dati permettendo di preservarli in modo

persistente, organizzarli in apposite strutture e recuperarli quando un Processo li richiede. Ogni SO

crea nel proprio File System una propria astrazione di file (lo implementa cioè in un certo modo),

per questo motivo esistono diversi File Systems ed ognuno di questi è gestito da un SO; poiché il

File System è associato alla singola partizione di un Disco, possono coesistere più File Systems

nello stesso Disco (a patto che esistano più partizioni). Un File System deve fornire 2 astrazioni:

 File: è un contenitore, ovvero un insieme di informazioni omogenee tra loro, univoco in

quanto non posso esistere due files con lo stesso nominativo, ed è l'utente (User) a

sceglierne uno per ogni file (mentre il SO si occupa di informare l'utente nel caso in cui in

quella directory esiste già un file con lo stesso nome). Quando un file viene salvato su Disco

vengono salvati: i dati in esso contenuti, il nome del file compresa la sua estensione

(ovvero quella parte del nome del file che permette al SO di associarlo ad un programma

automaticamente), e gli attributi (Dimensione, Data di Creazione, ◦ Data di Ultima

Modifica, Protezione, Codifica, etc).

 Directory: astrazione che permette di raggruppare insieme più files, tipicamente i files

vengono organizzati in cartelle (directory) e sottocartelle (subdirectory).

Nei sistemi UNIX l’estensione del file può essere più articolata: il file può non avere alcuna

estensione oppure può averne una o più. L’estensione è infatti (diversamente dai sistemi MS-DOS

e Windows) un’informazione aggiuntiva data all’utente (e non al SO), pertanto mentre un file

nominato appunti.txt nei sistemi MS-DOS/Windows è aperto dal programma notepad.exe oppure

wordpad.exe, nei sistemi UNIX l’estensione .txt suggerisce all’utente il contenuto del file (ad

esempio un blocco di testo tipicamente codificato in ASCII, sarà poi l’utente che deciderà con

quale programma utente andarlo ad aprire). Viene mostrato un elenco delle estensioni più note in

letteratura: 2

Le informazioni all'interno dei file possono a loro volta essere organizzate oppure no, esistono 3

tipi di accesso logico ai files che un file di esempio “file appunti.txt” potrebbe avere:

 Sequenza di byte non strutturata: il file è visto dal SO come una sequenza di byte. Si tratta

dell’implementazione più flessibile visto che l’utente può inserire nel file qualunque cosa,

qualunque byte. Dall’altra parte, tuttavia, il SO non fornisce alcun supporto ai file: non

impedisce i nomi troppo lunghi ai file, non pretende un’estensione, non limita e/o evita il

contenuto del file. Viene molto utilizzato dai sistemi UNIX ed MS-DOS;

 Sequenza di Record: il file è visto dal SO strutturato internamente come una sequenza di

record di lunghezza fissa, ogni record ha poi una propria struttura ed organizzazione

interna. Per questo motivo la scrittura o la lettura del file viene indirizzata indicando un

numero di record e la colonna (questo sistema era ad esempio utilizzato nei vecchi sistemi

con schede perforate in cui ogni scheda 132 colonne ed ognuna di essa aveva la capacità di

contenere 80 caratteri!);

 Struttura ad albero: il file è formato da un albero di record non tutti della stessa lunghezza,

ogni record ha poi un campo chiave e l’albero è ordinato rispetto a tale chiave. A differenza

della precedente struttura (che accede al file accedendo man mano al record successivo),

nella struttura ad albero l’accesso è assai più veloce: si accede, infatti ad una parte del file

fornendo un’opportuna chiave che identifica il blocco di interesse;

Ogni sistema di calcolo adotta un File System per organizzare i files, un SO può tuttavia

comprendere diversi formati e/o tipi di file. Nei sistemi Windows ed UNIX, ad esempio esistono 3

tipi di files:

 File Regolari: sono quelli che contengono l’informazione e sono strutturati secondo le

volontà del programmatore che decide quindi l’organizzazione dell’informazione.

 File Speciali: modellano alcune periferiche di input e di output.

 Directory: organizzano e tengono ordinati i files in strutture ad albero. 3

L’informazione nei file regolari può essere formattata secondo lo standard ASCII, in tal caso la

stampa del file ne riproduce esattamente il contenuto. In alcuni casi, invece, i file regolari sono file

di tipo binario: l’informazione è in tal caso mascherata o codificata nel file e solo il

programmatore, oppure il programma utente ne conosce la struttura interna e quindi la

collocazione. Ad esempio, in un file binario eseguibile di UNIX prendono posto diverse

informazioni aggiuntive oltre all’informazione vera e propria: il file ha più sezioni informative,

come intestazione, testo, dati, bit di rilocazione e tabella dei simboli.

Le 3 modalità definite prima riguardano soltanto “l’accesso logico” ai files, tuttavia l’accesso fisico

dipende dal tipo di supporto di Memoria che il sistema di elaborazione ha a disposizione, e può

essere essenzialmente di 2 tipi:

 Accesso Sequenziale: è la modalità di accesso prevista ad esempio per i Nastri Magnetici e

CD-ROM e DVD. Prima di accedere ad un record bisogna leggere tutti quelli che lo

precedono, ciò comporta un enorme tempo di attesa e per questo motivo si usa quasi

sempre l’altra modalità di accesso;

 Accesso Casuale: è la modalità di accesso prevista ad esempio per i Dischi Magnetici.

Questi Dischi sono divisi in blocchi, e quindi se bisogna trovare un determinato byte,

bisogna prima cercare il blocco in cui è contenuto, e poi “ scavare” nel blocco fino a trovare

il byte interessato. Permette dunque di accedere ad un record dell’informazione senza

leggere quelli precedenti;

La OPEN è la System Call più impegnativa perché richiede una ricerca nel File System, allora per

maggiore efficienza le informazioni “estratte dall’apertura del file” vengono memorizzate: quando

un Processo apre un file utilizzando la OPEN viene creata una nuova riga in una Tabella dei File

Aperti associata a quel Processo, che contiene le seguenti informazioni:

 Tipo di Accesso: lettura, scrittura, esecuzione;

 Posizione Corrente del Cursore: inizio, fine o qualsiasi altro punto del file;

 Punto di Allocazione del File su Disco: blocco fisico iniziale in cui è salvato il file. 4

La OPEN predispone il file per le successive operazioni poiché dal momento dell’apertura è

sufficiente conoscere il file descriptor fd del file, ovvero un indice di riga nella Tabella dei File

Aperti, per poter rapidamente lavorare sul file. Poiché può succedere che un file può essere aperto

ed utilizzato contemporaneamente da più Processi si utilizzano 3 tabelle diverse per gestire i File

Aperti, che insieme formano la Tabella dei File Aperti e sono:

 File Descriptors Table: è situata nella User-Area del singolo Processo, e contiene i

descrittori di tutti file aperti dal medesimo Processo, quindi è composta da tante righe

quanti sono i file aperti dal Processo. Si utilizza questa tabella locale per ottenere il fd

“globale” del file, poiché potendo esserci più versioni dello stesso file aperte da più

Processi, sarebbe inutili tenerli tutti in Memoria in un’unica tabella globale.

 File Table: tramite il file descriptor si individua una riga della Tabella dei File “globale” che

contiene le seguenti informazioni: Modalità di apertura del file, Posizione del Cursore per il

relativo file, un Contatore che tiene traccia del numero di Processi che hanno aperto lo

stesso file con la stessa modalità e con la stessa posizione del cursore (cosa che capita

essenzialmente solo quando si esegue una fork() in quanto il figlio eredita la stessa Tabella

dei File Aperti del padre), ed infine un puntatore ad una riga della Tabella I-Node. Quindi

per questa tabella viene creata una riga diversa per ogni file diverso aperto da un Processo,

possono quindi esistere più righe che puntano effettivamente verso lo stesso file, create

poiché il file viene richiesto da Processi diversi.

 I-Node Table: in questa tabella viene creata una nuova riga solo nel momento in cui il file

viene aperto per la prima volta da un Processo. Quindi se due processi tentano di accedere

al medesimo file, in ogni caso in questa tabella sarà presente un unica riga relativa a quel

file. Ogni riga di questa tabella indica la posizione del file sul Disco ed un Contatore che

viene incrementato ogni volta che un Processo apre (o più in generale utilizza) quel file e

viene decrementato qualora il Processo dovesse chiudere il file. Nel momento in cui nessun

Processo usa quel file, allora viene rimossa questa riga dalla tabella.

La RAM dovrà mantenere tutte queste tabelle indispensabili per localizzare un file sul Disco. 5

L'utilizzo di queste tre tabelle infatti permette di ricercare rapidamente un file sul Disco,

assicurandosi che le operazioni di ricerca non debbano essere ripetute, poiché per quanto possono

essere veloci, richiedono comunque tempo.

1.1.1. Gestione delle Directory

Essenzialmente una Directory ha lo scopo di “conservare” files ed altre directory, e di tenere

quindi in ordine i file e le directory in essa contenute. La directory principale di sistema prende il

nome di Root; a partire da essa si può quindi creare una gerarchia ad albero di directory, oppure

con l'utilizzo dei links, un grafo aciclico dove il sistema può accedere tramite più percorsi allo

stesso file. I links rappresentano quindi una rottura dell’astrazione ad albero offrendo all’utente

più percorsi alternativi per accedere allo stesso file, tale comodità per l’utente rappresenta però

una complicazione in più da gestire per il SO. Grazie ai links quindi è possibile avere più Pathnames

per lo stesso file, ma non è possibile avere 2 file che hanno lo stesso pathname.

Anche la suddivisione dei files in directory diventa un qualcosa che occorre memorizzare in

maniera permanente sul Disco, infatti le cartelle create vengono gestite come dei “files speciali”

che esattamente come i files hanno un proprietario, dei diritti (non sarà presente il diritto di

esecuzione), ma non hanno dei dati eccetto le informazioni su chi sono i figli (files e subdirectory).

La gerarchia a livelli delle directory elimina i conflitti che possono sorgere sui nomi dei file, ogni

utente può tuttavia avere l’esigenza di un ulteriore livello di astrazione per le directory, magari

perché vuole un secondo file con lo stesso nome di uno già esistente. Per questo motivo i moderni

sistemi consentono una gerarchia di directory che permette di avere un numero arbitrario di

sottodirectory. Quando il file system è organizzato su una gerarchia di directory, tipicamente detta

ad albero, è necessario una procedura sistematica che permetta di individuare un file. Un primo

metodo prevede l’uso del cosiddetto path assoluto: per indicare un file si parte sempre dalla

direcotory root (che per i sistemi UNIX è / mentre per i sistemi MS-DOS/Windows è C:\), quindi si

elencano tutte le sottodirectory intermedie fino al file utilizzando gli appositi Separatori di

6

Directory (nei sistemi MS-DOS/Windows è il simbolo \, nei sistemi UNIX il separatore è il simbolo

/). Un altro metodo per indicare un path di file fa uso del concetto di directory di lavoro, che è

l’attuale directory selezionata dall’utente che l’utente può selezionare con il comando change

directory cd NomeDirectory (nei sistemi UNIX il comando pwd restituisce l’attuale directory di

lavoro). In genere il contenuto della directory root viene caricato dal SO in RAM in quanto è da

quel punto che tutte le ricerche partono; il SO dopodiché deve effettuare diversi accessi al Disco

per “accedere” ai vari livelli dell’albero fino a ritrovare il file desiderato, per questo motivo la

OPEN rappresenta l’operazione più pesante di tutte e deve essere eseguita una sola volta all’inizio.

1.1.2. Implementazione di un File System

Dal punto di vista dell’utente il File System deve fornire le astrazioni necessarie per i file e per le

directory, e all’utente stesso spettano le assegnazioni dei nomi per i file e per le directory nonché

la struttura gerarchica per le directory. Il SO, invece, si prende cura di come implementare in

maniera efficiente delle opportune strutture dati, di come deve avvenire la gestione tramite le

System Call e di come lo spazio sul Disco debba essere mantenuto. I File Systems vengono

memorizzati sui Dischi, sia essi magnetici oppure ottici come i CD-ROM, ogni Disco è diviso in

Partizioni, ed ogni Partizione del disco può avere un proprio File System. La Partizione 0 di ogni

Disco è detta Master Boot Reco

Anteprima
Vedrai una selezione di 6 pagine su 25
Gestione dei File System nei Sistemi Operativi Pag. 1 Gestione dei File System nei Sistemi Operativi Pag. 2
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Gestione dei File System nei Sistemi Operativi Pag. 6
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Gestione dei File System nei Sistemi Operativi Pag. 11
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Gestione dei File System nei Sistemi Operativi Pag. 16
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Gestione dei File System nei Sistemi Operativi Pag. 21
1 su 25
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher appuntiDiIngegneria94 di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi della Campania "Luigi Vanvitelli" o del prof Aversa Rocco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community