Corso di Sistemi Operativi

Gestione del file system

 

Uno degli aspetti che più interessano l’utente di un SO è la possibilità di memorizzare permanentemente (anche per decenni) le proprie informazioni e che sia possibile reperirle facilmente in un secondo momento.
A tal riguardo, i requisiti essenziali che vengono richiesti ad un SO sono tre:
1. possibilità di memorizzare grandi quantità di informazioni;
2. conservazione i dati anche dopo la terminazione del processo che li ha creati;
3. possibilità per più processi di accedere concorrentemente a tali informazioni.
Per raggiungere questi obiettivi la soluzione comune adottata da tutti i SO è quella di registrare i dati su dischi e altri supporti esterni, in unità dette file (termine inglese che vuol dire archivio).
Il sottosistema del SO che si occupa della gestione dei file è detto File Management System (FMS).
I file di un sistema, inclusi quelli che servono al suo stesso funzionamento, sono raccolti in una struttura detta file system, che ha il compito di presentare agli utenti un’interfaccia semplice e immediata per accedere ai dati.

Le caratteristiche e l’organizzazione di un file system variano da un sistema ad un altro, ma presentano, complessivamente, dei punti in comune:
- I file sono un meccanismo di astrazione, cioè offrono un modo per memorizzare e recuperare dati su un disco, senza che l’utente debba preoccuparsi del modo in cui tale servizio viene realizzato.
- Un processo che crea un nuovo file gli assegna un nome, permettendo ad altri processi di utilizzare quel nome per accedere alle informazioni che esso contiene.
- Ad ogni file è associato un gruppo di attributi, come il nome del file, la data e l’ora di creazione, la data e l’ora dell’ultimo accesso, la data e l’ora dell’ultima modifica, la dimensione, il proprietario, un flag di sola lettura (per indicare se è possibile leggere/scrivere il file o se è consentita la sola lettura), un flag di sistema (per indicare se è un file utente normale o un file di sistema), un flag “nascosto” (per indicare se è un file da non visualizzare nel listato del file system), campi di protezione e tanti altri.

- Il file system viene generalmente organizzato in una struttura ad albero, per mezzo di opportuni contenitori chiamati directory, che possono raccogliere al loro interno file e altre directory.
- Vengono fornite dal SO una serie di operazioni per creare, cancellare, leggere, scrivere e rinominare file e directory, nonché operazioni per leggerne e/o scriverne gli attributi.

Sebbene questi ed altri meccanismi siano forniti da tutti i sistemi operativi, vi sono delle differenze significative.
Alcuni sistemi, come MS-DOS, nominano i file mediante un meccanismo di estensione, cioè dividono il nome del file in due parti separate da un punto, dando un significato particolare alla parte del nome che segue il punto.

Ad es. un file chiamato prog.c rappresenta, per sistemi che adottano questa convenzione, un programma sorgente scritto in linguaggio C.
Altri sistemi, come UNIX, lasciano all’utente piena libertà sul nome da assegnare, permettendo che il nome di un file abbia più estensioni; ad es. prog.c.tgz può essere utilizzato per nominare un file sorgente C compresso.
Inoltre il numero ed il tipo di attributi che un file può avere dipendono fortemente dal SO.
Ad es. i sistemi Windows 9x e Me, che adottano un file system basato su MS-DOS, noto come FAT, non associano dei campi di protezione ai file, che così possono essere acceduti da chiunque.
Invece i sistemi Windows NT e 2000 (che adottano il file system denominato NTFS) e quelli basati su UNIX, come Linux, FreeBSD, Solaris e altri, associano ad ogni file dei bit di protezione, ad es. distinguendo tra l’utente proprietario, il gruppo di utenti del proprietario e tutti gli altri utenti del sistema (questi concetti verrano chiariti nelle lezioni successive).

Altra importante differenza è l’implementazione delle directory.
Tipicamente una directory contiene un certo numero di elementi, uno per ogni file e directory in essa contenuti.
Prima che un utente possa accedere ad un file, il SO deve esaminarne gli attributi per decidere se rendere possibile o meno l’accesso e per aggiornarne alcuni, come ad es. la data e l’ora dell’ultimo accesso.

Il progettista di un SO può scegliere di memorizzare gli attributi del file nell’elemento corrispondente della directory oppure in altre strutture indirizzate da quell’elemento (v. figura).

Nella prossima puntata vedremo come un SO gestisce la memoria secondaria.

 

Torna all'indice Generale del corso di Corso di Sistemi Operativi di Software Planet