Sistemi operativi: manuale pratico/Introduzione ai sistemi operativi/File system linux

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search
Indice del libro

Sistemi operativi: manuale pratico/Introduzione ai sistemi operativi/File system linux

File (o archivio)[modifica]

Un file e' un contenitore di dati in formato elettronico

Filename[modifica]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

L'allocazione e' il processo attraverso il quale il SO riserva una parte della memoria per la memorizzazione di un file

Allocazione contigua[modifica]

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]

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]

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]

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]

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]

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]

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]

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]

Un puntatore indiretto e' un puntatore che punta ad un blocco di memoria che contiene puntatori a blocchi dati

Hard link[modifica]

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]

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)