Path name

Quando il file system è organizzato secondo un albero di directory i nomi dei file vanno indicati in un modo più complesso. In queste situazioni sono utilizzati due metodi differenti:

  • Path name assoluto;
  • Path name relativo.

Path name assoluto

I path name assoluti rappresentano sempre l’indirizzo a partire della directory principale (root), e sono per questo motivo univoci. Il path name assoluto “/corso/os/file_system.docx” si riferisce ad esempio alla cartella “corso” contenuta all’interno della root, che a sua volta contiene una cartella “os”, che a sua volta contiene il file con il nome: “file_system.docx”. Ogni sistema operativo utilizza un separatore differente, ad esempio Windows usa il carattere “\” mentre UNIX utilizza il carattere “/”.

Path name relativo

La seconda metodologia di indirizzamento prevede l’utilizzo di un path name relativo, che viene definito in congiunzione con la directory di lavoro corrente. In genere ogni processo ha una cartella di lavoro predefinita, oppure è l’utente stesso che può decidere di impostare una specifica directory di lavoro. La cartella di lavoro permette di ridurre la dimensione degli indirizzi (rispetto agli indirizzi assoluti) nei casi in cui si faccia riferimento a una cartella o a un file contenuti all’interno della directory di lavoro scelta. Consideriamo come esempio il percorso “/corso/os/file_system.docx” ma questa volta impostiamo come directory di lavoro: “corso”.

Avendo impostato “corso” come directory di lavoro possiamo modificare l’indirizzo assoluto precedente e ottenere questo nuovo indirizzo relativo:
“os/file_system.docx” (notiamo l’assenza del carattere “/” iniziale).

Il path name relativo consente di specificare un indirizzo usando la cartella di lavoro come punto di partenza.

Risoluzione del path name

Vediamo come viene svolta dal sistema operativo la risoluzione di un indirizzo in caso di allocazione file tramite i-node. Supponiamo ad esempio che si debba risolvere il seguente indirizzo: “/usr/ast/mbox”.

Strutture utili alla risoluzione dei patch name
Strutture utili alla risoluzione dei patch name

Essendo l’indirizzo assoluto, il sistema inizierà la ricerca a partire dalla directory della root:

  1. Il SO ricerca all’interno della directory root il numero dell’i-node di “/usr”;
  2. All’interno del primo i-node il SO ricerca il numero del blocco della directory;
  3. All’interno della directory “/usr” viene ricercato il numero dell’i-node di “/usr/ast”;
  4. All’interno del secondo i-node si ricerca il numero del blocco della directory.

Altre informazioni

La maggior parte dei sistemi operativi in grado di supportare un sistema di directory gerarchico possiede due voci particolari in ogni cartella: la voce “.” e la voce “..”. La voce “.” (dot) fa riferimento alla directory corrente, mentre la voce “..” (dot dot) fa riferimento alla directory padre.

File System d'esempio
File System d’esempio

Supponiamo di trovarci all’interno della cartella “SO”, quanti modi diversi abbiamo per linkare il file 1? Dipende dalla situazione, soprattutto dipende dalla cartella in cui mi trovo, sicuramente, per non sbagliare possono utilizzare un path name assoluto:

  • “/Articoli/SO/1” – Path name assoluto

Oppure se mi trovo già nella cartella “SO” posso fare:

  • “1” – Path name relativo
  • “./1” – Utilizzando il sistema Dot
  • “../SO/1” – Utilizzando il sistema Dot Dot

Condivisione dei file

Quando più utenti condividono la stessa macchina possono aver bisogno di condividere tra loro alcuni file. Per semplicità d’uso i file condivisi devono comparire all’interno del file system di ciascun utente coinvolto.

La condivisione dei file è senza dubbio un aspetto essenziale dei file system moderni, tuttavia la sua implementazione introduce alcune problematiche. Se durante la condivisione di un file il sistema operativo si limitasse ad esempio, a inserirne l’indirizzo fisico in entrambe le directory, esso renderebbe impossibile la condivisione delle future modifiche. Futuri accodamenti di blocchi verrebbero elencati unicamente nella directory dell’utente responsabile della modifica. Per questo motivo alcuni sistemi creano una struttura dati indipendente, in cui tenere traccia delle informazioni del file. Questa struttura dati verrà poi condivisa tramite puntatore da entrambi le directory, come fosse il file condiviso. I sistemi UNIX ad esempio condividono una struttura dati di tipo i-node. Altri sistemi invece preferiscono mantenere il file all’interno del file system del suo creatore, ed inserire nei file system degli utenti autorizzati, un nuovo file di tipo link, che conterrà il percorso path da utilizzare per raggiungere il file.

Schema di condivisione dei file
Schema di condivisione dei file