X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileintro.tex;h=cf0e674aeb98c510953620739e44bb40cc428250;hp=24fec34cbc44e70992e40650c676d41108529082;hb=f43b330570ece41d80aaca3c775eb4b7835aab28;hpb=d58b732f24797c3c17ab1cc8d8aa85ec04df62ed diff --git a/fileintro.tex b/fileintro.tex index 24fec34..cf0e674 100644 --- a/fileintro.tex +++ b/fileintro.tex @@ -66,7 +66,7 @@ alcune strutture interne del kernel) sono generati automaticamente dal kernel stesso, ma anche essi devono essere montati all'interno dell'albero. All'interno dello stesso albero si potranno poi inserire anche gli altri -oggetti visti attraverso l'interfaccia che manipola i file come le FIFO, i +oggetti visti attraverso l'interfaccia che manipola i file come le fifo, i link, i socket e gli stessi i file di dispositivo (questi ultimi, per convenzione, sono inseriti nella directory \file{/dev}). @@ -215,12 +215,12 @@ del C, si accede ad essi sempre in maniera indiretta utilizzando il tipo \type{FILE *}. L'interfaccia è definita nell'header \type{stdio.h}. Entrambe le interfacce possono essere usate per l'accesso ai file come agli -altri oggetti del VFS (pipe, socket, device), ma per poter accedere alle -operazioni di controllo sul particolare tipo di oggetto del VFS scelto occorre -usare l'interfaccia standard di unix coi file descriptor. Allo stesso modo -devono essere usati i file descriptor se si vuole ricorrere a modalità -speciali di I/O come il polling o il non-bloccante (vedi -\secref{sec:file_noblocking}). +altri oggetti del VFS (pipe, socket, device, sui quali torneremo in dettaglio +a tempo opportuno), ma per poter accedere alle operazioni di controllo sul +particolare tipo di oggetto del VFS scelto occorre usare l'interfaccia +standard di unix coi file descriptor. Allo stesso modo devono essere usati i +file descriptor se si vuole ricorrere a modalità speciali di I/O come il +polling o il non-bloccante (vedi \secref{sec:file_noblocking}). Gli stream forniscono un'interfaccia di alto livello costruita sopra quella dei file descriptor, che tratta tutti i file nello stesso modo, con @@ -359,7 +359,7 @@ e file, corrispondenti a tre apposite strutture definite nel kernel. Il VFS usa una tabella mantenuta dal kernel che contiene il nome di ciascun filesystem supportato: quando si vuole inserire il supporto di un nuovo filesystem tutto quello che occorre è chiamare la funzione -\func{register\_filesystem} passandole un'apposita struttura +\code{register\_filesystem} passandole un'apposita struttura (\var{file\_system\_type}) che contiene i dettagli per il riferimento all'implementazione del medesimo, che sarà aggiunta alla citata tabella. @@ -423,7 +423,7 @@ per i quali pathname il VFS deve creare una nuova \textit{dentry} e caricare l'inode corrispondente in memoria. -Questo procedimento viene eseguito dal metodo \func{lookup()} dell'inode +Questo procedimento viene eseguito dal metodo \code{lookup()} dell'inode della directory che contiene il file; questo viene installato nelle relative strutture in memoria quando si effettua il montaggio lo specifico filesystem su cui l'inode va a vivere. @@ -450,20 +450,20 @@ operazioni previste dal kernel \textbf{Funzione} & \textbf{Operazione} \\ \hline \hline - \textsl{\func{open}} & apre il file \\ - \textsl{\func{read}} & legge dal file \\ - \textsl{\func{write}} & scrive sul file \\ - \textsl{\func{llseek}} & sposta la posizione corrente sul file \\ - \textsl{\func{ioctl}} & accede alle operazioni di controllo + \textsl{\code{open}} & apre il file \\ + \textsl{\code{read}} & legge dal file \\ + \textsl{\code{write}} & scrive sul file \\ + \textsl{\code{llseek}} & sposta la posizione corrente sul file \\ + \textsl{\code{ioctl}} & accede alle operazioni di controllo (tramite la \func{ioctl})\\ - \textsl{\func{readdir}}& per leggere il contenuto di una directory \\ - \textsl{\func{poll}} & \\ - \textsl{\func{mmap}} & chiamata dalla system call \func{mmap}. + \textsl{\code{readdir}}& per leggere il contenuto di una directory \\ + \textsl{\code{poll}} & \\ + \textsl{\code{mmap}} & chiamata dalla system call \func{mmap}. mappa il file in memoria\\ - \textsl{\func{release}}& chiamata quando l'ultima referenza a un file + \textsl{\code{release}}& chiamata quando l'ultima referenza a un file aperto è chiusa\\ - \textsl{\func{fsync}} & chiamata dalla system call \func{fsync} \\ - \textsl{\func{fasync}} & chiamate da \func{fcntl} quando è abilitato + \textsl{\code{fsync}} & chiamata dalla system call \func{fsync} \\ + \textsl{\code{fasync}} & chiamate da \func{fcntl} quando è abilitato il modo asincrono per l'I/O su file. \\ \hline \end{tabular} @@ -479,7 +479,7 @@ di file in questione. Così sarà possibile scrivere sulla porta seriale come su un file di dati normale; ovviamente certe operazioni (nel caso della seriale ad esempio la -\func{seek}) non saranno disponibili, però con questo sistema l'utilizzo di +\code{seek}) non saranno disponibili, però con questo sistema l'utilizzo di diversi filesystem (come quelli usati da Windows o MacOs) è immediato e (relativamente) trasparente per l'utente ed il programmatore.