Sistemi operativi: manuale pratico/Introduzione ai sistemi operativi/File system linux
Sistemi operativi: manuale pratico/Introduzione ai sistemi operativi/File system linux
File (o archivio)
modificaUn file e' un contenitore di dati in formato elettronico
Filename
modificaIl nome di un file puo' essere una sequenza di caratteri qualunque (eccetto: / " ' * ; ? [ ] ( ) ! $ # @ & ) Se il nome di un file inizia con il carattere "." il file e' nascosto Non esiste (formalmente) l'estensione di un file; esistono estensioni utilizzate per scopi specifici
File path
modificaIl path (assoluto o relativo) di un file e' una stringa di nomi di directory separate da "/" che indica in modo univoco la posizione di un file all'interno di un file-system
Codifica dei caratteri
modificaI codici standard per la codifica dei caratteri sono:
- Extended ASCII (American Standard Code for Information Interchange): composto da 255 caratteri
- Unicode (implementato come UCS o UTF): composto da 110000 caratteri
File di testo
modificaUn file di testo è un file i cui bit sono organizzati a gruppi (8, 16, ...) ognuno dei quali rappresenta caratteri (lettere, numeri, ...) di un codice (ASCII o Unicode)
File binario
modificaUn file binario è un file i cui bit (singolarmente o a gruppi) possono rappresentare qualunque tipo di dati (anche non caratteri); i file binari necessitano di applicazioni in grado di interpretare il loro contenuto; i file binari sono più compatti dei file di testo (non sono codificati)
Serializzazione
modificaLa serializzazione e' un processo di traduzione di una struttura (e.g.: "struct" in C) in un formato tale per cui la memorizzazione e la trasmissione della struttura avvenga come un'unica entità (e non come oggetto composto da entità diverse)
Parametri di un file-system
modificaI parametri di un file-system sono:
- efficienza: velocità nel localizzare un file
- convenienza: semplicità per un utente di identificare i propri file
- organizzazione: raggruppamento delle informazioni in base alle caratteristiche
Directory (direttorio)
modificaUna directory e' un nodo (di un albero) o un vertice (di un grafo) contenente file e informazioni riguardanti tali file
File-system a un livello
modificaUn file-system a un livello e' un file-system in cui tutti i file sono contenuti in un'unica directory
- vantaggi: efficienza (semplice)
- svantaggi: convenienza (filename univoci), organizzazione (gestione multi utente complessa)
File-system a due livelli
modificaUn file-system a un livello e' un file-system in cui ogni utente ha una propria directory
- vantaggi: efficienza (semplice)
- svantaggi: convenienza parziale (filename univoci per ogni utente), organizzazione parziale (ogni utente ha solo la sua home)
File-system ad albero
modificaUn file-system ad albero e' un file-system in cui ogni directory puo' contenere come entry altre directory
- vantaggi: convenienza (filename diversi solo nella stessa directory), organizzazione (a discrezione dell'utente)
- svantaggi: efficienza parziale (ricerche pi\`{u} lunghe)
File-system a grafo
modificaUn file-system a grafo e' un file-system in cui ogni directory puo' contenere come entry: altre directory o link ad altri file (Linux non consente link a directory per evitare cicli)
- vantaggi: convenienza (filename diversi solo nella stessa directory), organizzazione (a discrezione dell'utente), condivisione di file e directory (tramite i link)
- svantaggi: efficienza (ricerche pi\`{u} lunghe e gestione di eventuali cicli complessa)
Link (collegamento)
modificaUn link e' un riferimento (puntatore) ad un'altra entry preesistente; un file viene eliminato quando viene eliminato il suo ultimo link (occorre memorizzare un contatore del numero di link)
Allocazione
modificaL'allocazione e' il processo attraverso il quale il SO riserva una parte della memoria per la memorizzazione di un file
Allocazione contigua
modificaL'allocazione contigua e' una tecnica di allocazione in cui ogni file occupa blocchi di memoria contigui; per memorizzare un file e' necessario specificare l'indirizzo del primo blocco e la dimensione del file
Prestazioni
modificaLe prestazioni dell'allocazione contigua sono:
- vantaggi: tecnica semplice (per memorizzare un file sono necessari solo 2 parametri), permette accessi sequenziali immediati, permette accessi diretti semplici (tramite offset)
- svantaggi: politica di allocazione complessa e mai efficiente (frammentazione esterna, si creano "buchi"), problemi di allocazione dinamica (la dimensione del file non può aumentare liberamente)
Allocazione concatenata
modificaL'allocazione concatenata e' una tecnica di allocazione in cui ogni file occupa blocchi di memoria organizzati in una lista concatenata (ogni blocco contiene un puntatore al blocco successivo); per memorizzare un file e' necessario specificare l'indirizzo del primo e dell'ultimo blocco
Prestazioni
modificaLe prestazioni dell'allocazione concatenata sono:
- vantaggi: permette allocazione dinamica di file, elimina la frammentazione esterna
- svantaggi: efficiente solo per accessi sequenziali (non per accessi diretti), spazio per memorizzazione puntatori, poco affidabile (se si perde un puntatore si butta tutto)
File Allocation Table (FAT)
modificaLa FAT e' una tabella di puntatori a blocchi di memoria; la FAT e' molto lenta perché per la lettura di un blocco di memoria sono necessari accessi alla memoria
Allocazione indicizzata
modificaL'allocazione indicizzata e' una tecnica di allocazione in cui per ogni file esiste un blocco di memoria che contiene l'elenco dei puntatori ai blocchi che compongono il file; per memorizzare un file e' necessario specificare i suoi puntatori; per leggere un file e' necessario specificare il puntatore al blocco indice
Prestazioni
modificaLe prestazioni dell'allocazione indicizzata sono:
- vantaggi: permette allocazione dinamica di file, elimina la frammentazione esterna, permette accesso diretto efficiente, affidabile
- svantaggi: gestione dei blocchi indice (e.g.: inode)
Inode
modificaL'inode e' un blocco di memoria (nei sistemi Unix/linux) associato ad ogni file che contiene tutte le informazioni relative a quel file; l'inode contiene puntatori diretti a blocchi dati del file; puntatori indiretti a blocchi dati del file; con questa tecnica e' possibile memorizzare file di dimensione pari a
Puntatore indiretto
modificaUn puntatore indiretto e' un puntatore che punta ad un blocco di memoria che contiene puntatori a blocchi dati
Hard link
modificaUn hard link e' una directory entry che punta all'inode di un file; un file e' fisicamente rimosso quando tutti i suoi hard link sono stati rimossi Non e' possibile creare hard link: verso directory e verso file memorizzati su altri file-system
Soft link
modificaUn soft link e' una directory entry che contiene il path name di un file (cioe' il percorso della entry che punta all'inode del file)