-Per capire come funziona questo canale di comunicazione occorre spiegare
-brevemente qual'è architettura con cui il kernel gestisce l'interazione fra
-processi e file. Il kernel mantiene sempre un elenco dei processi
-attivi nella cosiddetta \textit{process table} ed un elenco dei file aperti
-nella \textit{file table}.
-
-Ciascuna voce della \textit{process table}, che in Linux è costituita da una
-struttura \var{task\_struct}, contiene le informazioni relative ad ogni
-processo attivo nel sistema; fra queste c'è anche il puntatore ad una
-ulteriore struttura \var{files\_struct} in cui sono contenute le informazioni
-relative a ogni file che il processo ha aperto, ed in particolare:
+All'interno di ogni processo i file aperti sono identificati da un intero non
+negativo, chiamato appunto \textit{file descriptors}, quando un file viene
+aperto la funzione restituisce il file descriptor, e tutte le successive
+operazioni devono passare il \textit{file descriptors} come argomento.
+
+Per capire come funziona il meccanismo occorre spiegare a grandi linee come è
+che il kernel gestisce l'interazione fra processi e file. Il kernel mantiene
+sempre un elenco dei processi attivi nella cosiddetta \textit{process table}
+ed un elenco dei file aperti nella \textit{file table}.
+
+La \textit{process table} è una tabella che contiene una voce per ciascun
+processo attivo nel sistema. In Linux la tabella è costituita da strutture di
+tipo \var{task\_struct} nelle quali sono raccolte tutte le informazioni
+relative ad un singolo processo; fra queste informazioni c'è anche il
+puntatore ad una ulteriore struttura di tipo \var{files\_struct} in cui sono
+contenute le informazioni relative ai file che il processo ha aperto, ed in
+particolare: