File

[[Immagine:Ls_xterm.png|thumb|350px|Una serie di ls data da un utente normale chiamato "prova" con shell zsh in un xterm sotto ]]

Un file (termine inglese per "archivio") in informatica è un insieme di informazioni codificate organizzate come una sequenza (di byte), immagazzinate come un singolo elemento su una memoria di massa, all'interno del File System esistente su quella particolare memoria di massa.

Se dal punto di vista dell'utente un file è solitamente un singolo elemento, può succedere che invece fisicamente sia scritto su più zone diverse del supporto che lo ospita: questo fenomeno è molto comune se il supporto di memorizzazione è un disco, mentre è molto raro su nastri magnetici. Uno dei compiti del sistema operativo è rendere trasparente alle applicazioni la reale suddivisione fisica del file e occuparsi di gestire la scrittura e il recupero delle informazioni dai vari blocchi fisici.

I file sono generati dal software e solitamente sono conformi ad un particolare tipo di file. Alcuni sistemi operativi, come Windows e l'MS-DOS, riconoscono il tipo di file in base all'estensione del loro nome; altri, come il Mac OS da una serie di dati aggiuntivi salvati insieme al file in un blocco separato; altri ancora, come Unix, distinguono i file in base a dei flag assegnati loro nel file system al momento della creazione.

Un tipo di file molto comune sono i file di testo ASCII. Un simile file è una sequenza di caratteri ASCII pura e semplice, tale da poter essere letta ed interpretata nello stesso modo da tutti i sistemi operativi. Il termine "File binario", invece, si riferisce solitamente a tutti i file che non sono di testo ASCII.

Il concetto di file è molto semplice ed elegante: in ultima analisi, un file è una sorgente (o un deposito) di informazioni, che si può leggere e scrivere; questa sorgente/deposito ha anche delle "proprietà" (nome, estensione, flags) che possono essere modificate. Questa definizione si adatta molto bene a molte periferiche ed interfacce hardware; i sistemi operativi Unix e derivati hanno generalizzato il concetto di file tanto da farne una vera filosofia: in Unix tutto è un file, cioè può essere "aperto", "chiuso", "letto", "scritto" eccetera; questi "file speciali" possono essere delle comunicazioni fra processi, delle pipe, delle interfacce hardware o altro ancora: il sistema operativo si occuperà di gestire tutto nel modo appropriato lasciando ai programmi l'illusione di stare usando un normale file.

I file sono organizzati spesso gerarchicamente dal sistema operativo, che li ripone in cartelle o directory.

Operazioni sui file

Poiché accedere a un file da una memoria di massa è una operazione piuttosto lenta, necessita una conoscenza dettagliata dell'hardware del computer e crea un rischio di conflitto di risorse fra programmi in esecuzione, queste operazioni sono eseguite dal sistema operativo per conto dei programmi che le richiedono. Le operazioni più comuni, universalmente presenti in tutti i sistemi operativi, sono:

Un programma non può leggere o scrivere un file se prima non lo ha "aperto", e una volta finito di usarlo lo deve sempre "chiudere" per dare modo al sistema operativo di liberare le risorse occupate.

Note

Una sequenza di byte in RAM non è ritenuta solitamente un file, a meno che non sia immagazzinata in un disco virtuale risiedente in RAM. Nei primi sistemi di elaborazione i file erano gestiti ed elaborati sequenzialemente, quindi per poter analizzare le ultime modifiche al file bisognava scorrrere l'intero file e leggere in fondo le ultime modifiche. Nei sistemi operativi moderni questo non è più vero, dato che il File System provvede ad astrarre l'organizzazione fisica del file ed a riorganizzare il file nel caso sia necessario.

Voci correlate

See also: File, ASCII, Buffer, Byte, Elenco di tipi di file, Estensione di un file, File system, FreeBSD, Hardware, Informatica