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:
-
assoluto è il percorso per raggiungere un determinato nodo a partire dalla root
directory (compresa);
-
relativo è il percorso per raggiungere un determinato nodo a partire da una
determinata directory, che in genere coincide con la working directory.
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:
-
Condivisibili (shareable) le informazioni possono essere condivise tra più computer;
-
Non condivisibili (unshareable) le informazioni non possono essere condivise tra più
computer;
-
Statiche (static) le informazioni non possono essere modificate;
-
Variabili (variable) le informazioni possono essere modificate;
Tale classificazione è soltanto indicativa e può anche non essere seguita, ma seguirla può
aiutare a gestire l’albero delle directory.
In generale un sistema GNU/Linux ha l’albero delle directory riportato nella fig. 4.3 con
le caratteristiche seguenti:
-
/bin contiene dei file eseguibili necessari per l’utilizzo del sistema ed usufruibili
da tutti gli utenti (ls, cp, mv, rm, ...) - Informazioni statiche, non
condivisibili;
-
/boot contiene i file necessari all’avvio del sistema (procedura di boot), come il
boot loader ed il kernel - Informazioni statiche, non condivisibili;
-
/dev contiene i file relativi ai dispositivi (devices), a partire dalle partizioni
degli hard disk (/dev/hda1, /dev/hda2, ..., /dev/sda1, /dev/sda2, ...),
ai CD ROM (/dev/cdrom), ai floppy disk (/dev/fd0), alla scheda audio
(/dev/dsp), alle porte seriali (/dev/ttyS0 e /dev/ttyS1) - Informazioni
statiche, non condivisibili;
-
/etc contiene i file relativi alla configurazione del sistema e dei programmi, che
generalmente hanno estensione conf o cfg. All’interno di questa directory
si trovano, tra le altre, la directory X11, contenente i file di configurazione
del server grafico (v. cap. 11), e la directory rc.d, che contiene i file per
l’avvio del sistema (v. cap. 2) - Informazioni statiche, non condivisibili;
-
/home contiene i file relativi agli utenti. Ad ogni utente è assegnata una home
directory, che in genere è una directory che ha lo stesso nome dello
username dell’utente, che si trova all’interno della directory /home. Alla
home directory può essere fatto riferimento con il simbolo ‘~’.
Per esempio l’utente con username pippo avrà come home directory
/home/pippo e per tale utente, la directory ‘~’ rappresenta appunto la
directory /home/pippo. Tale directory sarà utilizzata per salvare i file di
configurazione a livello utente di vari applicativi - Informazioni variabili,
condivisibili;
-
/lib contiene le librerie (library) di sistema utilizzate per il funzionamento
delle applicazioni e i moduli utilizzati dal kernel (/lib/modules) -
Informazioni statiche, non condivisibili;
-
/lost+found contiene gli eventuali file “corrotti” (danneggiati) trovati dopo un riavvio
successivo ad un arresto non “adeguato” del sistema - Informazioni
variabili, non condivisibili;
-
/mnt è utilizzata come directory contenente i mount point (v. sez. 4.9) delle
periferiche che contegono dei filesystem (partizione di hard disk, floppy
disk, CD, ...): es. /mnt/floppy è generalmente il nome della directory
che funge da mount point per il floppy disk, /mnt/cdrom quella che funge
da mount point per il CD, ... - Informazioni variabili, non condivisibili;
-
/opt contiene i file di applicazioni non fornite dal sistema. È un retaggio dei
primi Unix e si tende a non utilizzarla;
-
/proc è un filesystem virtuale che contiene informazioni relative ai processi in
esecuzione sul sistema (non utilizza spazio fisico su disco);
-
/root è
la home directory dell’utente superuser che rappresenta l’amministratore
del sistema (tale utente è di solito identificato dallo username root) -
Informazioni variabili, non condivisibili.
-
/sbin contiene dei file eseguibili necessari al funzionamento del sistema
utilizzabili soltanto dall’utente superuser - Informazioni statiche, non
condivisibili;
-
/tmp contiene file temporanei che possono essere creati da alcuni processi.
In alcuni sistemi il conenuto di tale directory può essere cancellato
automaticamente allo spegnimento o all’avvio del sistema - Informazioni
variabili, non condivisibili;
-
/usr contiene i file relativi alle applicazioni installate nel sistema. Al
suo interno sono contenute varie directory tra cui bin e sbin,
contenenti i comandi non essenziali del sistema, X11R6, che contiene
i programmi per il funzionamento dell’interfaccia grafica del sistema,
share, in cui dovrebbero essere riposti i file contenenti i dati
(indipendenti dall’architettura) relativi ai programmi presenti in
/usr/bin e /usr/sbin, nonché i file relativi alla documentazione
contenuti in /usr/share/doc e /usr/share/man - Informazioni statiche,
condivisibili;
-
/var contiene file di sistema che variano con frequenza elevata (i log di sistema
/var/log, le caselle di posta elettronica /var/spool/mail, i file di stampa
temporanei /var/spool/lpd, la http root directory /var/www/html,
...) - Informazioni variabili condivisibili o meno (dipendentemente dalle
sottodirectory).
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, ...).
|