Correzioni alle figure e scritto un po' di chroot e tmpnam
[gapil.git] / fileintro.tex
index 6d9fec87dd623376500d02ccd8a225237db92e21..3715f895158fb7405ddfb97480c89f198d2d0cbd 100644 (file)
@@ -1,4 +1,4 @@
-\chapter{I file: l'architettura}
+\chapter{L'architettura dei file}
 \label{cha:file_intro}
 
 Uno dei concetti fondamentali della architettura di unix è il cosiddetto
@@ -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}).
 
@@ -108,7 +108,7 @@ permessi devono consentire l'accesso.
 
 Se il pathname comincia per \file{/} la ricerca parte dalla directory radice
 del processo; questa, a meno di un \textit{chroot} (su cui torneremo in
-seguito, vedi \secref{sec:xxx_chroot}) è la stessa per tutti i processi ed
+seguito, vedi \secref{sec:file_chroot}) è la stessa per tutti i processi ed
 equivale alla directory radice dell'albero (come descritto in
 \secref{sec:file_organization}): in questo caso si parla di un pathname
 \textsl{assoluto}. Altrimenti la ricerca parte dalla directory corrente (su
@@ -199,7 +199,7 @@ L'interfaccia 
 bufferizzato in quanto la lettura e la scrittura vengono eseguite chiamando
 direttamente le system call del kernel (in realtà il kernel effettua al suo
 interno alcune bufferizzazioni per aumentare l'efficienza nell'accesso ai
-dispositivi); i file descriptors sono rappresentati da numeri interi (cioè
+dispositivi); i file descriptor sono rappresentati da numeri interi (cioè
 semplici variabili di tipo \type{int}).  L'interfaccia è definita
 nell'header \file{unistd.h}.
 
@@ -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 descriptors. 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
@@ -346,7 +346,7 @@ di I/O sul dispositivo fisico, secondo lo schema riportato in \nfig.
 
 \begin{figure}[htb]
   \centering
-  \includegraphics[width=7cm]{img/vfs.eps}
+  \includegraphics[width=7cm]{img/vfs}
   \caption{Schema delle operazioni del VFS}
   \label{fig:file_VFS_scheme}
 \end{figure}
@@ -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.
 
@@ -377,7 +377,7 @@ Il primo oggetto usato dal VFS 
 una apposita struttura che contiene vari dati come le informazioni comuni ad
 ogni filesystem, i dati privati relativi a quel filesystem specifico, e i
 puntatori alle funzioni del kernel relative al filesystem. Il VFS può così
-usare le funzioni contenute nel filesystem decriptor per accedere alle routine
+usare le funzioni contenute nel filesystem descriptor per accedere alle routine
 specifiche di quel filesystem.
 
 Gli altri due descrittori usati dal VFS sono relativi agli altri due oggetti
@@ -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.
 
@@ -508,7 +508,7 @@ lista degli inodes e lo spazio a disposizione per i dati e le directory.
 
 \begin{figure}[htb]
   \centering
-  \includegraphics[width=9cm]{img/disk_struct.eps}
+  \includegraphics[width=9cm]{img/disk_struct}
   \caption{Organizzazione dello spazio su un disco in partizioni e filesystem}
   \label{fig:file_disk_filesys}
 \end{figure}
@@ -521,7 +521,7 @@ esemplificare la situazione con uno schema come quello esposto in \nfig.
 
 \begin{figure}[htb]
   \centering
-  \includegraphics[width=11cm]{img/filesys_struct.eps}
+  \includegraphics[width=11cm]{img/filesys_struct}
   \caption{Strutturazione dei dati all'interno di un filesystem}
   \label{fig:file_filesys_detail}
 \end{figure}
@@ -574,7 +574,7 @@ chiarezza abbiamo aggiunto dei numeri di inode.
 
 \begin{figure}[htb]
   \centering 
-  \includegraphics[width=11cm]{img/dir_links.eps}
+  \includegraphics[width=11cm]{img/dir_links}
   \caption{Organizzazione dei link per le directory}
   \label{fig:file_dirs_link}
 \end{figure}
@@ -605,14 +605,14 @@ seguenti:
   kernel quando agisce su gruppi di file. Possono essere settati su file e
   directory e in quest'ultimo caso i nuovi file creati nella directory
   ereditano i suoi attributi.
-\item sono supportate entrambe le semantiche di BSD e SYSV come opzioni di
+\item sono supportate entrambe le semantiche di BSD e SVr4 come opzioni di
   montaggio. La semantica BSD comporta che i file in una directory sono creati
   con lo stesso identificatore di gruppo della directory che li contiene. La
-  semantica SYSV comporta che i file vengono creati con l'identificatore del
+  semantica SVr4 comporta che i file vengono creati con l'identificatore del
   gruppo primario del processo, eccetto il caso in cui la directory ha il bit
   di \acr{sgid} settato (per una descrizione dettagliata del significato di
   questi termini si veda \secref{sec:file_access_control}), nel qual caso file
-  e sotto-directory ereditano sia il \acr{gid} che lo \acr{sgid}.
+  e subdirectory ereditano sia il \acr{gid} che lo \acr{sgid}.
 \item l'amministratore può scegliere la dimensione dei blocchi del filesystem
   in fase di creazione, a seconda delle sue esigenze (blocchi più grandi
   permettono un accesso più veloce, ma sprecano più spazio disco).
@@ -639,12 +639,12 @@ superblock principale.
 
 \begin{figure}[htb]
   \centering
-  \includegraphics[width=9cm]{img/dir_struct.eps}  
+  \includegraphics[width=9cm]{img/dir_struct}  
   \caption{Struttura delle directory nel \textit{second extented filesystem}.}
   \label{fig:file_ext2_dirs}
 \end{figure}
 
-L'utilizzo di raggrupamenti di blocchi ha inoltre degli effetti positivi nelle
+L'utilizzo di raggruppamenti di blocchi ha inoltre degli effetti positivi nelle
 prestazioni dato che viene ridotta la distanza fra i dati e la tabella degli
 inode.