1. Introduzione e Modelli Storici
Una directory può essere vista come una tabella di simboli che traduce i nomi dei file nei rispettivi puntatori ai blocchi di memoria o ai metadati (come gli inode). Nel corso dell'evoluzione dei sistemi operativi, l'organizzazione delle directory ha assunto diverse configurazioni logiche:
- Directory a Livello Singolo (Single-Level Directory): Tutti i file risiedono in un'unica directory comune a tutti gli utenti. Presenta gravi limitazioni: impossibilità di avere file con lo stesso nome e problemi di gestione in sistemi multiutente.
- Directory a Due Livelli (Two-Level Directory): Viene creata una directory separata per ciascun utente (Master File Directory - MFD e User File Directory - UFD). Risolve il conflitto di nomi tra utenti differenti, ma isola i file impedendo la condivisione diretta.
2. Struttura ad Albero (Tree-Structured Directories)
È il modello standard dei moderni sistemi operativi (UNIX, Linux, Windows). La directory principale (root) contiene file e sottodirectory, formando una gerarchia ad albero. Ogni utente dispone di una directory corrente (working directory) e può indirizzare i file tramite percorsi assoluti o relativi.
- Percorso Assoluto: Parte sempre dalla radice (es.
/home/studenti/appunti.txt). - Percorso Relativo: Parte dalla directory corrente (es.
./immagini/logo.pngoppure../config.json).
3. Grafi Aciclici (Acyclic-Graph Directories)
Per consentire la condivisione di file e directory tra utenti diversi senza duplicare i dati, si estende la struttura ad albero introducendo i grafi aciclici. Questo permette di avere collegamenti simbolici (symlink) o collegamenti fisici (hard link) verso lo stesso file, gestiti tramite contatori di riferimenti (reference counts).
4. Simulatore Interattivo: Risoluzione di Path e Navigazione
Seleziona un modello di struttura a directory o un comando di navigazione per verificarne il comportamento e la risoluzione dei percorsi.