next up previous contents index return to home!
Next: Funzione dup() Up: Il File System di Previous: La libreria Posix per   Indice   Indice analitico

Strutture dati coinvolte

Per meglio comprendere cosa succede all'interno del sistema operativo quando viene effettuata una operazione su un file, bisogna analizzare le strutture dati sono coinvolte. Innanzitutto, ogni processo ha una propria tabella dei descrittori di file: un esempio è mostrato in figura 3.2, dove il processo A ha aperto 2 file e il processo B ha aperto un solo file.

Figura 3.2: Strutture dati nel kernel.
\begin{figure}\centerline{\psfig{figure=figs/file-table.eps,width=13cm}}\end{figure}

Ogni volta che un processo esegue una open() viene creata un'entrata nella tabella dei file e una entrata nella tabella dei descrittori del processo. Notare che informazioni come la modalità di apertura (read/write, append, ecc.) e l'offset corrente sono memorizzate nell'entrata corrispondente della tabella dei file e non nella tabella dei descrittori. Inoltre, le informazioni sui file sono contenute direttamente nel file (struttura v-node in figura).

Quindi, ad esempio, se il file è stato aperto con il seguente comando:

fd = open(``testo.txt'', O_WRONLY | O_APPEND);

allora una operazione di write() sul descrittore fd esegue (in maniera atomica) i seguenti passi:



Subsections
next up previous contents index
Next: Funzione dup() Up: Il File System di Previous: La libreria Posix per   Indice   Indice analitico
Giuseppe Lipari 2002-10-27