4.5.1 La struttura logica

La struttura logica del filesystem si compone di due tipi di oggetti, la directory ed il file, e la sua organizzazione è quella di un albero. I nodi dell’albero sono rappresentati dagli oggetti del filesystem ed in particolare i file costituisono le foglie dell’albero, ovvero sono nodi terminali (non hanno nodi figli). Tutti gli oggetti del filesystem sono identificati da un nome che deve essere univoco per tutti quelli dello stesso livello (cioè figli dello stesso nodo). È opportuno sottolineare il fatto che il nome di un oggetto del filesytem, secondo la tradizione dei sitemi Unix-like, è case sentitive, cioè il sistema fa differenza tra le lettere maiuscole e quelle minuscole utilizzate nel nome dell’oggetto. Pertanto i nomi Pippo e pippo identificano due oggetti del filesystem (file o directory) diversi.

Mentre un file è essenzialmente una raccolta di informazioni, una directory può essere considerata come un contenitore, che può contenere sia file che altre directory.

L’albero della gerarchia del filesystem, cioè il directory tree (o albero delle directory) ha come radice (unico nodo che non è figlio di nessun altro) la root directory identificata dal simbolo ‘/’ (slash). Questa directory contiene tutti gli altri nodi dell’albero. In ogni directory sono presenti due directory particolari: ‘.’ e ‘..’ che rappresentano rispettivamente la directory stessa e la directory padre, cioè quella gerarchicamente superiore (nel caso della root directory ..’ coincide con ‘.’ ovvero con ‘/’).

Nei sistemi Unix-like è definita anche una working directory (directory di lavoro o directory corrente) che indica la directory di default da considerare per determinate operazioni sul filesystem (una sorta di directory sott’intesa).

Il path (percorso) è l’elenco delle directory da attraversare per raggiungere un determinato nodo dell’albero (file o directory). Questo può essere di due tipi:

Il simbolo utilizzato come separatore dei nomi dei nodi del filesystem è ‘/’, lo stesso utilizzato per rappresentare la root directory. Non c’è ambiguità nello specificare il path di un nodo del filesystem, poiché il simbolo ‘/’ viene interpretato come root directory soltanto nel caso in cui sia specificato come primo carattere del path, altrimenti è considerato come carattere di separazione dei nomi dei nodi dell’albero delle directory.

Dunque, si supponga ad esempio di voler raggiungere il file prova contenuto nella directory seconda contenuta nella directory prima che a sua volta è contenuta nella root directory (/). Il path assoluto del file in questione è quindi /prima/seconda/prova, mentre il suo path relativo alla working directory, supponendo che questa sia la directory prima contenuta nella root directory (cioè /prima), è seconda/prova (è come se /prima fosse un percorso sott’inteso).

Nei sistemi GNU/Linux, le informazioni memorizzate nel directory tree possono essere classificate in base ai seguenti criteri:7

Tale classificazione è soltanto indicativa e può anche non essere seguita, ma seguirla può aiutare a gestire l’albero delle directory.


pict
Figura 4.3: Struttura tipica del filesystem di un sistema GNU/Linux.

In generale un sistema GNU/Linux ha l’albero delle directory riportato nella fig. 4.3 con le caratteristiche seguenti:

Alcune distribuzioni utilizzano la directory /media, al posto di /mnt, come contenitore dei mount point relativi alle periferiche rimovibili (floppy disk, CD, USB flash memory, ...).