Guida Cos'e' file system di un sistema operativo!?

Stato
Discussione chiusa ad ulteriori risposte.

syscall

Utente Emerald
21 Settembre 2013
683
43
581
475
Ultima modifica da un moderatore:
Si sente spesso parlare di file system, alcuni danno per scontato cosa sia, altri un po meno, non sapendo dove postare l'argomento (ho notato che nella sezione "Sistemi Operativi" non c'e' un'area generica in cui poter parlare della teoria dei sistemi operativi) ho deciso di scrivere qui, poiche' sempre di Informatica si parla, prego comunque il moderatore di spostare qualora ci fosse una sezione piu' adeguata di cui poter discutere argomenti simili :)

Leggo sul forum che molti sono affascinati dal mondo della sicurezza, dei sistemi operativi e quant'altro concerne il mondo dell'informatica ma, prima di addentrarsi in determinati ambiti reputo corretto conoscere e capire le fondamenta di cio' che si sta utilizzando, anche a grandi linee.

Tengo a precisare che questa mia guida e' stata scritta al fine di semplificare concetti che a prima vista potrebbero essere un po ostici per chi si avvicina allo studio di quest'affascinante materia e, come al solito, ben vengano commenti e critiche costruttive qualora l'argomento fosse di vostro interesse ! Si presume che comunque, chi legga questa guida abbia idea almeno in generale idea di cosa si stia parlando :) Tratteremo comunque in maniera molto introduttiva i vari aspetti che compongono un file system.

Ma bando alle ciance, iniziamo subito col dire che gli aspetti di un sistema operativo sono molteplici, la gestione dell'input/output, delle periferiche, il file system (di cui parleremo oggi), la memoria virtuale, memoria paginata, protezione dei file e tanto altro ancora...

Oggi volevo parlare, in maniera concisa, del file system... sperando che apprezzerete quanto seguira' in modo da poter continuare con altri argomenti inerenti il funzionamento teorico vero e proprio di un sistema operativo, in generale, indipendentemente da Gnu/linux, Windows, OSX o quel che sia !

Il file system, rappresenta l'astrazione delle informazioni presenti nei dispositivi fisici, ed e' ottenuta grazie all'introduzione di una visione logica dei dispositivi fisici di memorizzazione e di trasferimento di informazioni e fornisce, sia una visione omogenea dei dispositivi, sia il supporto alla memorizzazione a lungo termine delle informazioni.

Consiste nella collezione e gestione di informazioni (dati e programmi) e di meta-informazioni (directory).
Il file system gestisce queste informazioni come flussi di informazioni elementari.

Il supporto fisico del file system e' costituito dalla memoria secondaria (che sarebbe il disco :p), la cui caratteristica e' quella di memorizzare blocchi di informazioni in dischi eventualmente partizionati. Inoltre, il compito del file system e' trasformare il livello fisico di memorizzazione dei dati su disco, in livello logico (file), quindi virtualizzando le informazioni!

La gestione del file system e' suddivisa in moduli:

- La gestione della periferica, che permette la comunicazione con la stessa;
- Il file system di base, che si occupa della lettura e scrittura dei blocchi fisici;
- l'organizzazione dei file, che si occupa di gestire lo spazio libero nei dischi, ed infine,
- il file system logico, che fornisce all'utente il supporto alla navigazione in directory e sottodirectory per l'identificazione dei file!

La struttura del file system puo' essere:

1) A singolo livello: sul disco viene posta un'unica directory che contiene tutti i descrittori ai file posti sul disco
2) A due livelli: soluzione adatta per piccoli sistemi multi utente, dove la directory piu' alta contiene i riferimenti ai file di ciascun utente
3) Ad albero: permette di ottenere una visione logica del file system ragruppando i file in modo logico per i diversi utenti del sistema, associando ai file delle specifiche proprieta' per controllarne la visibilita' e l'usabilita'.
4) A grafo aciclico: generalizzazione della struttura ad albero che abbiam visto in riga sopra!
5) A grafo generale: ulteriore generalizzazione che prevede la presenza di cicli.

Il file system, puo' essere memorizzato su macchina locale o remota e la sua interfaccia deve creare una virtualizazione per rendere indipendente la localizzazione fisica dei file rispetto l'accesso ad essi da parte dei processi.

I file sono un insieme omogeneo di elementi e possono riguardare dati o programmi, identificati tramite un nome ed un'estensione.

Gli attributi invece sono informazioni che caratterizzano il file e rappresentano il descrittore del file stesso. L'accesso al file puo essere diretto, sequenziale o indicizzato, in base alle caratteristiche del sistema operativo o delle periferiche.

Il mappaggio tra blocchi fisici e record logici consente nel memorizzare uno o piu' record logici in un blocco fisico. Esiste pero' un problema di spreco nel caso in cui un blocco fisico abbia dimensioni maggiori rispetto al record logico e, per ovviare a questo problema, viene introdotto un ulteriore livello tra strato fisico e logico, chiamato Byte Stream. In questo caso, qualsiasi file a livello logico verra' interpretato come un flusso di byte, il cui tipo base e' sempre e solo il byte. Il mappaggio avviene in due fasi: nella prima si traduce la visione logica in byte stream, nella seconda si passa dal byte stream alla visione fisicia, ragruppando gli elementi logici in gruppi fisici.

La directory e' invece una struttura logica che permette il ragruppamento dei file seguendo criteri logici e gestisce in maniera efficiente l'accesso, la condivisione e la protezione dei file! Puo' essere realizzata mediante una lista composta da un elenco di descrittori dei vari file che conterranno un puntatore all'elemento successivo. L'ordinamento degli elementi e' un'operazione costosa poche' prevede comunque la scansione dell'intera lista.

Al fine di velocizzare tale operazione e' pero' possibile utilizzare una tabella di hash gestita tramite opportune funzioni di hash che permettono una rapita identificazione degli elementi nella lista, anche se e' necessario tener conto di possibili collisioni.
E' necessario anche prestare attenzione alla manutenzione del file system al fine di garantire la conservazione e la consistenza delle informazioni e, proprio per questo motivo, e' necessario effettuare delle copie delle informazioni in esso contenute. Questa operazione e' nota come backup. Il restore e' invece l'operazione mediante la quale, tramite un file di backup, e' possibile ripristinare il sistema a uno stato precedente ad un malfunzionamento. Restore e backup sono gestite efficientemente tramite logging o jorunaling.

Successivamente, parleremo di memoria virtuale, cos'e', e la sua utilita' all'interno di un sistema operativo ;)

Alla prossima ;-)
 
Bella guida... se riesci semplifica un po il linguaggio

Beh ,si presume un po che tutti coloro interessati a queste nozioni ,hanno un minimo di linguaggio technico. La guida e gia abbastanza semplice in se.Se non si sa nulla di moduli, processi , generalizazzione e indicizazzione dei elementi - dei hash e dei indirizzi di allocazione di memoria , forse bisogna tornare un attimo a rileggere queste cosette prima. [MENTION=200075]syscall[/MENTION] - ottima guida ,aspetto di leggere le altre.
 
Stato
Discussione chiusa ad ulteriori risposte.