Sistemati gli indici.
[gapil.git] / fileintro.tex
index 2dce07e878e8190bf31b8c060e5bbd8e42e35212..14e4f274eb7ef4ef6ce9fafb414f67f1900e97c3 100644 (file)
@@ -25,13 +25,13 @@ delle modalit
 \section{L'architettura generale}
 \label{sec:file_access_arch}
 
-Per poter accedere ai file il kernel deve mettere a disposizione dei programmi
-le opportune interfacce che consentano di leggerne il contenuto; il sistema
-cioè deve provvedere ad organizzare e rendere accessibile in maniera opportuna
-l'informazione tenuta sullo spazio grezzo disponibile sui dischi. Questo viene
-fatto strutturando l'informazione sul disco attraverso quello che si chiama un
-\textit{filesystem} (vedi \ref{sec:file_arch_func}), essa poi viene resa
-disponibile ai processi attraverso quello che viene chiamato il
+Per poter accedere ai file, il kernel deve mettere a disposizione dei
+programmi le opportune interfacce che consentano di leggerne il contenuto; il
+sistema cioè deve provvedere ad organizzare e rendere accessibile in maniera
+opportuna l'informazione tenuta sullo spazio grezzo disponibile sui dischi.
+Questo viene fatto strutturando l'informazione sul disco attraverso quello che
+si chiama un \textit{filesystem} (vedi \ref{sec:file_arch_func}), essa poi
+viene resa disponibile ai processi attraverso quello che viene chiamato il
 \textsl{montaggio} del \textit{filesystem}.
 % (approfondiremo tutto ciò in \secref{sec:file_arch_func}).
 
@@ -118,7 +118,7 @@ questa sia la directory radice, allora il riferimento 
 \subsection{I tipi di file}
 \label{sec:file_file_types}
 
-Come detto in precedenza in Unix esistono vari tipi di file; in Linux questi
+Come detto in precedenza, in Unix esistono vari tipi di file; in Linux questi
 sono implementati come oggetti del \textit{Virtual File System} (vedi
 \secref{sec:file_vfs_work}) e sono presenti in tutti i filesystem unix-like
 utilizzabili con Linux. L'elenco dei vari tipi di file definiti dal
@@ -170,7 +170,7 @@ per il cosiddetto ``accesso diretto'' come nel caso del VMS.\footnote{con i
   ha nulla a che fare con questo, trattandosi solo di operazioni fatte senza
   passare attraverso un filesystem.}
 
-Una seconda differenza è nel formato dei file ASCII; in Unix la fine riga è
+Una seconda differenza è nel formato dei file ASCII: in Unix la fine riga è
 codificata in maniera diversa da Windows o Mac, in particolare il fine riga è
 il carattere \texttt{LF} (o \verb|\n|) al posto del \texttt{CR} (\verb|\r|)
 del Mac e del \texttt{CR LF} di Windows.\footnote{per questo esistono in Linux
@@ -205,7 +205,7 @@ 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 \textit{file descriptor}\index{file descriptor} sono
-rappresentati da numeri interi (cioè semplici variabili di tipo \type{int}).
+rappresentati da numeri interi (cioè semplici variabili di tipo \ctyp{int}).
 L'interfaccia è definita nell'header \file{unistd.h}.
 
 La seconda interfaccia è quella che il manuale della \acr{glibc} chiama degli
@@ -217,7 +217,7 @@ Questa 
 anche su tutti i sistemi non Unix. Gli \textit{stream} sono oggetti complessi
 e sono rappresentati da puntatori ad un opportuna struttura definita dalle
 librerie del C; si accede ad essi sempre in maniera indiretta utilizzando il
-tipo \type{FILE *}.  L'interfaccia è definita nell'header \type{stdio.h}.
+tipo \ctyp{FILE *}.  L'interfaccia è definita nell'header \file{stdio.h}.
 
 Entrambe le interfacce possono essere usate per l'accesso ai file come agli
 altri oggetti del VFS (fifo, socket, device, sui quali torneremo in dettaglio
@@ -335,21 +335,22 @@ strato intermedio che il kernel usa per accedere ai pi
 mantenendo la stessa interfaccia per i programmi in user space. Esso fornisce
 un livello di indirezione che permette di collegare le operazioni di
 manipolazione sui file alle operazioni di I/O, e gestisce l'organizzazione di
-queste ultime nei vari modi in cui diversi filesystem le effettuano,
+queste ultime nei vari modi in cui diversi filesystem le effettuano,
 permettendo la coesistenza di filesystem differenti all'interno dello stesso
 albero delle directory.
 
-Quando un processo esegue una system call che opera su un file il kernel
+Quando un processo esegue una system call che opera su un file, il kernel
 chiama sempre una funzione implementata nel VFS; la funzione eseguirà le
-manipolazioni sulle strutture generiche e utilizzerà poi la chiamata alla
+manipolazioni sulle strutture generiche e utilizzerà poi la chiamata alle
 opportune routine del filesystem specifico a cui si fa riferimento. Saranno
 queste a chiamare le funzioni di più basso livello che eseguono le operazioni
-di I/O sul dispositivo fisico, secondo lo schema riportato in \nfig.
+di I/O sul dispositivo fisico, secondo lo schema riportato in
+\figref{fig:file_VFS_scheme}.
 
 \begin{figure}[htb]
   \centering
   \includegraphics[width=7cm]{img/vfs}
-  \caption{Schema delle operazioni del VFS}
+  \caption{Schema delle operazioni del VFS.}
   \label{fig:file_VFS_scheme}
 \end{figure}
 
@@ -475,12 +476,12 @@ operazioni previste dal kernel 
 
 In questo modo per ciascun file diventano possibili una serie di operazioni
 (non è detto che tutte siano disponibili), che costituiscono l'interfaccia
-astratta del VFS.  Qualora se ne voglia eseguire una il kernel andrà ad
-utilizzare lopportuna routine dichiarata in \var{f\_ops} appropriata al tipo
+astratta del VFS.  Qualora se ne voglia eseguire una, il kernel andrà ad
+utilizzare l'opportuna routine dichiarata in \var{f\_ops} appropriata al tipo
 di file in questione.
 
 In questo modo è possibile scrivere allo stesso modo sulla porta seriale come
-su un file di dati normale; ovviamente certe operazioni (nel caso della
+su normale un file di dati; ovviamente certe operazioni (nel caso della
 seriale ad esempio la \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
@@ -493,9 +494,9 @@ programmatore.
 Come già accennato in \secref{sec:file_organization} Linux (ed ogni sistema
 unix-like) organizza i dati che tiene su disco attraverso l'uso di un
 filesystem. Una delle caratteristiche di Linux rispetto agli altri Unix è
-quella di poter supportare grazie al VFS una enorme quantità di filesystem
+quella di poter supportare, grazie al VFS, una enorme quantità di filesystem
 diversi, ognuno dei quali ha una sua particolare struttura e funzionalità
-proprie.  Per questo per il momento non entreremo nei dettagli di un
+proprie.  Per questo, per il momento non entreremo nei dettagli di un
 filesystem specifico, ma daremo una descrizione a grandi linee che si adatta
 alle caratteristiche comuni di qualunque filesystem di sistema unix-like.
 
@@ -512,7 +513,8 @@ lista degli inodes e lo spazio a disposizione per i dati e le directory.
 \begin{figure}[htb]
   \centering
   \includegraphics[width=12cm]{img/disk_struct}
-  \caption{Organizzazione dello spazio su un disco in partizioni e filesystem}
+  \caption{Organizzazione dello spazio su un disco in partizioni e
+  filesystem.}
   \label{fig:file_disk_filesys}
 \end{figure}
 
@@ -525,7 +527,7 @@ esemplificare la situazione con uno schema come quello esposto in \nfig.
 \begin{figure}[htb]
   \centering
   \includegraphics[width=12cm]{img/filesys_struct}
-  \caption{Strutturazione dei dati all'interno di un filesystem}
+  \caption{Strutturazione dei dati all'interno di un filesystem.}
   \label{fig:file_filesys_detail}
 \end{figure}
 
@@ -553,7 +555,7 @@ ricordare sempre che:
   solo quando questo contatore si annulla i dati del file vengono
   effettivamente rimossi dal disco. Per questo la funzione per cancellare un
   file si chiama \func{unlink}, ed in realtà non cancella affatto i dati del
-  file, ma si limita a eliminare la relativa voce da una directory e
+  file, ma si limita ad eliminare la relativa voce da una directory e
   decrementare il numero di riferimenti nell'\textit{inode}.
 
 \item Il numero di \textit{inode} nella voce si riferisce ad un \textit{inode}
@@ -561,25 +563,25 @@ ricordare sempre che:
   riferimenti ad \textit{inodes} relativi ad altri filesystem. Questo limita
   l'uso del comando \cmd{ln} (che crea una nuova voce per un file
   esistente, con la funzione \func{link}) al filesystem corrente.
-
-\item Quando si cambia nome ad un file senza cambiare filesystem il contenuto
-  del file non deve essere spostato, viene semplicemente creata una nuova voce
-  per l'\textit{inode} in questione e rimossa la vecchia (questa è la modalità
-  in cui opera normalmente il comando \cmd{mv} attraverso la funzione
-  \func{rename}).
+  
+\item Quando si cambia nome ad un file senza cambiare filesystem, il contenuto
+  del file non viene spostato fisicamente, viene semplicemente creata una
+  nuova voce per l'\textit{inode} in questione e rimossa la vecchia (questa è
+  la modalità in cui opera normalmente il comando \cmd{mv} attraverso la
+  funzione \func{rename}).
 
 \end{enumerate}
 
 Infine è bene avere presente che, essendo file pure loro, esiste un numero di
-riferimenti anche per le directory; per cui se a partire dalla situazione
+riferimenti anche per le directory; per cui, se a partire dalla situazione
 mostrata in \curfig\ creiamo una nuova directory \file{img} nella directory
-\file{gapil}: avremo una situazione come quella in \nfig, dove per chiarezza
+\file{gapil}, avremo una situazione come quella in \nfig, dove per chiarezza
 abbiamo aggiunto dei numeri di inode.
 
 \begin{figure}[htb]
   \centering 
   \includegraphics[width=12cm]{img/dir_links}
-  \caption{Organizzazione dei link per le directory}
+  \caption{Organizzazione dei link per le directory.}
   \label{fig:file_dirs_link}
 \end{figure}
 
@@ -587,8 +589,8 @@ La nuova directory avr
 è referenziata dalla directory da cui si era partiti (in cui è inserita la
 nuova voce che fa riferimento a \file{img}) e dalla voce \file{.}
 che è sempre inserita in ogni directory; questo vale sempre per ogni directory
-che non contenga a sua volta altre directory. Al contempo la directory da
-cui si era partiti avrà un numero di riferiementi di almeno tre, in quanto
+che non contenga a sua volta altre directory. Al contempo, la directory da
+cui si era partiti avrà un numero di riferimenti di almeno tre, in quanto
 adesso sarà referenziata anche dalla voce \file{..} di \file{img}.
 
 
@@ -598,11 +600,11 @@ adesso sar
 Il filesystem standard usato da Linux è il cosiddetto \textit{second extended
   filesystem}, identificato dalla sigla \acr{ext2}. Esso supporta tutte le
 caratteristiche di un filesystem standard Unix, è in grado di gestire nomi di
-file lunghi (256 caratteri, estendibili a 1012), una dimensione fino a 4~Tb.
+file lunghi (256 caratteri, estendibili a 1012) con una dimensione massima di
+4~Tb.
 
-Oltre alle caratteristiche standard \acr{ext2} fornisce alcune estensioni che
-non sono presenti sugli altri filesystem Unix, le cui principali sono le
-seguenti:
+Oltre alle caratteristiche standard, \acr{ext2} fornisce alcune estensioni che
+non sono presenti sugli altri filesystem Unix. Le principali sono le seguenti:
 \begin{itemize}
 \item i \textit{file attributes} consentono di modificare il comportamento del
   kernel quando agisce su gruppi di file. Possono essere settati su file e