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)
[modifica | modifica sorgente]Un file e' un contenitore di dati in formato elettronico
Filename
[modifica | modifica sorgente]Il 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
[modifica | modifica sorgente]Il 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
[modifica | modifica sorgente]I 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
[modifica | modifica sorgente]Un 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
[modifica | modifica sorgente]Un 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
[modifica | modifica sorgente]La 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
[modifica | modifica sorgente]I 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)
[modifica | modifica sorgente]Una 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
[modifica | modifica sorgente]Un 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
[modifica | modifica sorgente]Un 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
[modifica | modifica sorgente]Un 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
[modifica | modifica sorgente]Un 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)
[modifica | modifica sorgente]Un 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
[modifica | modifica sorgente]L'allocazione e' il processo attraverso il quale il SO riserva una parte della memoria per la memorizzazione di un file
Allocazione contigua
[modifica | modifica sorgente]L'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
[modifica | modifica sorgente]Le 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
[modifica | modifica sorgente]L'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
[modifica | modifica sorgente]Le 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)
[modifica | modifica sorgente]La 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
[modifica | modifica sorgente]L'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
[modifica | modifica sorgente]Le 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
[modifica | modifica sorgente]L'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
[modifica | modifica sorgente]Un puntatore indiretto e' un puntatore che punta ad un blocco di memoria che contiene puntatori a blocchi dati
Hard link
[modifica | modifica sorgente]Un 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
[modifica | modifica sorgente]Un 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)