In questo nuovo articolo dedicato ai sistemi operativi, vedremo una cosa molto importante per l’utente: il File System.

Il File System permette all’ utente di creare una collezione di dati (chiamati files) che hanno le seguenti proprietà:

  • Permangono a lungo termine: I file vengono memorizzati su sistemi di archiviazione secondari e permangono anche dopo il logoff.
  • Condivisibili a più processi: Possono avere permessi associati per controllarne la condivisione.
  • Strutturati: I file possono essere strutturati in una forma gerarchica e conveniente a seconda del File System.

Le operazioni che è possibile effettuare su questi file sono:

  • Create: Creazione di un file  e posizionamento nel file system.
  • Delete: Rimozione di un file dal filesystem.
  • Open: Un file esistente viene dichiarato aperto da un processo.
  • Close: Il file viene chiuso. Finchè non verrà aperto il suo contenuto non verrà modificato.
  • Read: Il file viene letto da un processo.
  • Write: Un processo aggiorna un file, aggiungendo o modificando dati di questo.

Il file system poi mantiene una serie di informazioni per ogni file: data di modifica, data di creazione ecc.

Quando si ha a che fare con i files vengono spesso citati questi quattro elementi:

  • Campo: è l’elemento base dei dati. Contiene un valore e a seconda del design del file possono avere lunghezza fissa o variabile (nell’ ultimo caso il campo è diviso in due sottocampi, campo e lunghezza).
  • Record: è una collezione di Campi che può essere tratta come singola unità da alcuni programmi.
  • File: E’ una collezione di records simili. E’ referenziato dal suo nome e trattato come una singola entità da Utenti e Programmi. Un utente può o non può avere accesso ad un file: in alcuni sistemi più complessi è possibile creare restrizioni a livello di records e campi.
  • Database: E’ una collezione di oggetti.Il database contiene relazioni esplicite fra gli elementi dati ed è progettato per essere utilizzato da applicazioni multiple.

All’ interno di *nix la struttura dei file è salvata come uno stream di byte, non vengono quindi usati campi e records.

File Management System

Un File Management System è un insieme di programmi di sistema che fornisce servizi nell’ uso dei files ad utenti e applicazioni. Un FMS deve poi offrire diversi servizi, fra cui:

  • Soddisfare i bisogni dell’ utente e della gestione dei files (quindi Creazione, modifica, privilegi ecc),
  • Garantire la validità dei file
  • Minimizzare o eliminare le perdite di dati
  • Fornire supporto I/O per più tipi di dispositivi di storage.
  • Fornire routines e interfaccie standardizzate rispetto all’ I/O.

Per quanto riguarda invece l’ organizzazione dell’ architettura del File Management System, di solito troviamo:

  • Device Drivers: Comunicano con i controller o con i dispositivi. E’ responsabile dell’avvio delle operazioni di I/O. (Spesso considerato parte del OS)
  • Basic File System (o Physical I/O Level): Interfaccia primaria con l’ambiente fuori dal sistema, lavora con blocchi di dati (Spesso considerato parte dell’ OS).
  • Basico I/O Supervisor: Responsabile delle inizializzazioni e terminazioni di file I/O. Pensa allo scheduling del disco e mantiene le strutture dati necessarie per gestire i file.
  • Logical I/O: Fornisce l’ accesso ai records agli utenti e alle applicazioni. Mentre il Basic File System lavora con blocchi di dati, il Logica I/O lavora con i records.
  • Access Method: Livello dedicato all’ utente. Fornisce un’ interfaccia standard tra le applicazioni e i File System e i dispositivi che contengono i dati. Differenti metodi d’accesso comportano differenti strutture e differenti metodi di accesso.

Directory di files

Una Directory (conosciuta anche col nome di “Cartella”) contiene un’ insieme di informazioni riguardante i files, come gli attributi, la locazione e le proprietà.

Molte di queste informazioni vengono gestite dal Sistema Operativo: una directory è essa stessa un file, accessibile dalle varie File Management Routines.

Le informazioni che deve sapere una directory riguardante i suoi file all’ interno, sono:

  • Nome del file,
  • Tipo,
  • Organizzazione: Per sistemi che supportano differenti organizzazioni,
  • Volume: Dispositivo su cui il file è salvato,
  • Indirizzo di partenza: Cilindro, Traccia, settore,
  • Dimensione utilizzata
  • Massima dimensione consentita,
  • Proprietario,
  • Informazioni di accesso,
  • Azioni permesse,
  • Data creazione e identità creatore,
  • Data ultima modifica,
  • Data ultima lettura,
  • Data ultimo backup,
  • Utilizzo corrente: Es. se è bloccato da un processo.

Struttura delle Directory

Il modo in cui le informazioni che deve conoscere ogni Directory vengono salvate, varia a seconda del sistema. Alcune informazioni possono trovarsi in un Header Record associato al file, riducendo l’ammontare di spazio richiesto per la directory.

Esistono diversi tipi di struttura per una Directory, il più semplice è creare una lista di elementi dove ogni elemento corrisponde ad un file.

I primi sistemi monoutente utilizzavano questa gestione dei file: con la creazione di una directory contentente tutti i file dell’utente però non si ha la possibilità di ordinarli in modo particolare e si ha poca scelta nei nomi (che devono essere univoci).

Un primo miglioramento è quello di implementare una Master Directory, contenente tante directory quanti sono gli utenti: in questo modo si possono supportare sistemi multiutente e c’è più spazio per i nomi dei file.

Un’ ulteriore miglioramento, è quello di permettere directory identate ad ogni utente in modo che un file sia individuato dalla sua pathname: un percorso che parte dalla root directory (/) fino alla directory che lo contiene.