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.
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: