Poca roba di domenica
[gapil.git] / fileintro.tex
index baef2cac8831f25ca34fe84291dceefcf8889141..e0c82cf212399126ee46da7d1ea69a2daf06bde2 100644 (file)
@@ -1,6 +1,6 @@
 %% fileintro.tex
 %%
 %% fileintro.tex
 %%
-%% Copyright (C) 2000-2007 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2009 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Prefazione",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Prefazione",
@@ -8,6 +8,7 @@
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
 %%
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
 %%
+
 \chapter{L'architettura dei file}
 \label{cha:file_intro}
 
 \chapter{L'architettura dei file}
 \label{cha:file_intro}
 
@@ -90,7 +91,7 @@ oggetto del filesystem, compresa un'altra directory, si ottiene naturalmente
 un'organizzazione ad albero inserendo nomi di directory in altre directory.
 
 Un file può essere indicato rispetto alla directory corrente semplicemente
 un'organizzazione ad albero inserendo nomi di directory in altre directory.
 
 Un file può essere indicato rispetto alla directory corrente semplicemente
-specificandone il nome\footnote{Il manuale delle \acr{glibc} chiama i nomi
+specificandone il nome\footnote{il manuale delle \acr{glibc} chiama i nomi
   contenuti nelle directory \textsl{componenti} (in inglese \textit{file name
     components}), noi li chiameremo più semplicemente \textsl{nomi} o
   \textsl{voci}.}  da essa contenuto.  All'interno dello stesso albero si
   contenuti nelle directory \textsl{componenti} (in inglese \textit{file name
     components}), noi li chiameremo più semplicemente \textsl{nomi} o
   \textsl{voci}.}  da essa contenuto.  All'interno dello stesso albero si
@@ -117,16 +118,15 @@ torneremo in sez.~\ref{sec:file_chroot}) 
 equivale alla directory radice dell'albero dei file: in questo caso si parla
 di un \textsl{pathname assoluto} \itindsub{pathname}{assoluto}.  Altrimenti la
 ricerca parte dalla directory corrente (su cui torneremo in
 equivale alla directory radice dell'albero dei file: in questo caso si parla
 di un \textsl{pathname assoluto} \itindsub{pathname}{assoluto}.  Altrimenti la
 ricerca parte dalla directory corrente (su cui torneremo in
-sez.~\ref{sec:file_work_dir}) ed il pathname è detto \textsl{pathname
-  relativo} \itindsub{pathname}{relativo}.
+sez.~\ref{sec:file_work_dir}) ed il pathname è detto
+\itindsub{pathname}{relativo} \textsl{pathname relativo}.
 
 
-I nomi \file{.} e \file{..} hanno un significato speciale e vengono inseriti
-in ogni directory: il primo fa riferimento alla directory corrente e il
-secondo alla directory \textsl{genitrice} (o \textit{parent directory}) cioè
-la directory che contiene il riferimento alla directory corrente; nel caso la
-directory corrente coincida con la directory radice, allora il riferimento è a
-se stessa.
-\itindend{pathname}
+I nomi ``\file{.}'' e ``\file{..}'' hanno un significato speciale e vengono
+inseriti in ogni directory: il primo fa riferimento alla directory corrente e
+il secondo alla directory \textsl{genitrice} (o \textit{parent directory})
+cioè la directory che contiene il riferimento alla directory corrente; nel
+caso la directory corrente coincida con la directory radice, allora il
+riferimento è a se stessa.  \itindend{pathname}
 
 
 \subsection{I tipi di file}
 
 
 \subsection{I tipi di file}
@@ -167,22 +167,22 @@ dispositivo sottostante effettua le operazioni di I/O.\footnote{in sostanza i
     \hline
     \hline
       \textit{regular file} & \textsl{file regolare} &
     \hline
     \hline
       \textit{regular file} & \textsl{file regolare} &
-      un file che contiene dei dati (l'accezione normale di file) \\
+      Un file che contiene dei dati (l'accezione normale di file).\\
       \textit{directory} & \textsl{cartella o direttorio} &
       \textit{directory} & \textsl{cartella o direttorio} &
-      un file che contiene una lista di nomi associati a degli
-      \index{inode} \textit{inode} (vedi sez.~\ref{sec:file_vfs}).  \\
+      Un file che contiene una lista di nomi associati a degli
+      \index{inode} \textit{inode} (vedi sez.~\ref{sec:file_vfs}).\\
       \textit{symbolic link} & \textsl{collegamento simbolico} &
       \textit{symbolic link} & \textsl{collegamento simbolico} &
-      un file che contiene un riferimento ad un altro file/directory \\
+      Un file che contiene un riferimento ad un altro file/directory.\\
       \textit{char device} & \textsl{dispositivo a caratteri} &
       \textit{char device} & \textsl{dispositivo a caratteri} &
-      un file che identifica una periferica ad accesso a caratteri \\
+      Un file che identifica una periferica ad accesso a caratteri.\\
       \textit{block device} & \textsl{dispositivo a blocchi} &
       \textit{block device} & \textsl{dispositivo a blocchi} &
-      un file che identifica una periferica ad accesso a blocchi \\
+      Un file che identifica una periferica ad accesso a blocchi.\\
       \textit{fifo} & ``\textsl{coda}'' &
       \textit{fifo} & ``\textsl{coda}'' &
-      un file speciale che identifica una linea di comunicazione software
+      Un file speciale che identifica una linea di comunicazione software
       unidirezionale (vedi sez.~\ref{sec:ipc_named_pipe}).\\
       \textit{socket} & ``\textsl{presa}''&
       unidirezionale (vedi sez.~\ref{sec:ipc_named_pipe}).\\
       \textit{socket} & ``\textsl{presa}''&
-      un file speciale che identifica una linea di comunicazione software
-      bidirezionale (vedi cap.~\ref{cha:socket_intro}) \\
+      Un file speciale che identifica una linea di comunicazione software
+      bidirezionale (vedi cap.~\ref{cha:socket_intro}).\\
     \hline
     \end{tabular}
     \caption{Tipologia dei file definiti nel VFS}
     \hline
     \end{tabular}
     \caption{Tipologia dei file definiti nel VFS}
@@ -317,6 +317,9 @@ Linux, l'\acr{ext2} (e derivati).
 \subsection{Il \textit{Virtual File System} di Linux}
 \label{sec:file_vfs}
 
 \subsection{Il \textit{Virtual File System} di Linux}
 \label{sec:file_vfs}
 
+% articolo interessante:
+% http://www.ibm.com/developerworks/linux/library/l-virtual-filesystem-switch/index.html?ca=dgr-lnxw97Linux-VFSdth-LXdW&S_TACT=105AGX59&S_CMP=GRlnxw97
+
 \itindbeg{Virtual~File~System}
 
 In Linux il concetto di \textit{everything is a file} è stato implementato
 \itindbeg{Virtual~File~System}
 
 In Linux il concetto di \textit{everything is a file} è stato implementato
@@ -446,25 +449,25 @@ tab.~\ref{tab:file_file_operations}.
     \textbf{Funzione} & \textbf{Operazione} \\
     \hline
     \hline
     \textbf{Funzione} & \textbf{Operazione} \\
     \hline
     \hline
-    \textsl{\code{open}}   & apre il file (vedi sez.~\ref{sec:file_open}). \\
-    \textsl{\code{read}}   & legge dal file (vedi sez.~\ref{sec:file_read}).\\
-    \textsl{\code{write}}  & scrive sul file (vedi 
+    \textsl{\code{open}}   & Apre il file (vedi sez.~\ref{sec:file_open}).\\
+    \textsl{\code{read}}   & Legge dal file (vedi sez.~\ref{sec:file_read}).\\
+    \textsl{\code{write}}  & Scrive sul file (vedi 
                              sez.~\ref{sec:file_write}).\\
                              sez.~\ref{sec:file_write}).\\
-    \textsl{\code{llseek}} & sposta la posizione corrente sul file (vedi
-                             sez.~\ref{sec:file_lseek}). \\
-    \textsl{\code{ioctl}}  & accede alle operazioni di controllo 
+    \textsl{\code{llseek}} & Sposta la posizione corrente sul file (vedi
+                             sez.~\ref{sec:file_lseek}).\\
+    \textsl{\code{ioctl}}  & Accede alle operazioni di controllo 
                              (vedi sez.~\ref{sec:file_ioctl}).\\
                              (vedi sez.~\ref{sec:file_ioctl}).\\
-    \textsl{\code{readdir}}& legge il contenuto di una directory \\
-    \textsl{\code{poll}}   & usata nell'I/O multiplexing (vedi
-                             sez.~\ref{sec:file_multiplexing}). \\
-    \textsl{\code{mmap}}   & mappa il file in memoria (vedi 
-                             sez.~\ref{sec:file_memory_map}). \\
-    \textsl{\code{release}}& chiamata quando l'ultimo riferimento a un file 
-                             aperto è chiuso. \\
-    \textsl{\code{fsync}}  & sincronizza il contenuto del file (vedi
-                             sez.~\ref{sec:file_sync}). \\
-    \textsl{\code{fasync}} & abilita l'I/O asincrono (vedi
-                             sez.~\ref{sec:file_asyncronous_io}) sul file. \\
+    \textsl{\code{readdir}}& Legge il contenuto di una directory.\\
+    \textsl{\code{poll}}   & Usata nell'I/O multiplexing (vedi
+                             sez.~\ref{sec:file_multiplexing}).\\
+    \textsl{\code{mmap}}   & Mappa il file in memoria (vedi 
+                             sez.~\ref{sec:file_memory_map}).\\
+    \textsl{\code{release}}& Chiamata quando l'ultimo riferimento a un file 
+                             aperto è chiuso.\\
+    \textsl{\code{fsync}}  & Sincronizza il contenuto del file (vedi
+                             sez.~\ref{sec:file_sync}).\\
+    \textsl{\code{fasync}} & Abilita l'I/O asincrono (vedi
+                             sez.~\ref{sec:file_asyncronous_io}) sul file.\\
     \hline
   \end{tabular}
   \caption{Operazioni sui file definite nel VFS.}
     \hline
   \end{tabular}
   \caption{Operazioni sui file definite nel VFS.}
@@ -588,21 +591,33 @@ di \index{inode} inode.
 
 La nuova directory avrà allora un numero di riferimenti pari a due, in quanto
 è referenziata dalla directory da cui si era partiti (in cui è inserita la
 
 La nuova directory avrà allora un numero di riferimenti pari a due, in quanto
 è 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 riferimenti di almeno tre, in quanto
-adesso sarà referenziata anche dalla voce \file{..} di \file{img}.
+nuova voce che fa riferimento a \texttt{img}) e dalla voce ``\texttt{.}''  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 riferimenti di almeno tre, in quanto adesso sarà
+referenziata anche dalla voce ``\texttt{..}'' di \texttt{img}.
+
 
 
+% TODO portare a ext3, ext4 e btrfs ed illustrare le problematiche che si
+% possono incontrare (in particolare quelle relative alla perdita di contenuti
+% in caso di crash del sistema)
 
 
-\subsection{Il filesystem \textsl{ext2}}
+\subsection{I filesystem di uso comune}
 \label{sec:file_ext2}
 
 \label{sec:file_ext2}
 
-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, estensibili a 1012) con una dimensione massima di
-4~Tb.
+Il filesystem standard più usato con Linux è il cosiddetto \textit{third
+  extended filesystem}, identificato dalla sigla \acr{ext3}. Esso nasce come
+evoluzione del precedente \textit{second extended filesystem}, o \acr{ext2},
+di cui eredita gran parte delle caratteristiche di base, per questo motivo
+parleremo anzitutto di questo, dato che molto di quanto diremo si applica
+anche ad \acr{ext3}.
+
+
+Il filesystem \acr{ext2} nasce come filesystem nativo di Linux a partire dalle
+prime versioni del kernel e supporta tutte le caratteristiche di un
+filesystem standard Unix; è in grado di gestire nomi di file lunghi (256
+caratteri, estensibili a 1012) e supporta una dimensione massima dei file fino
+a 4~Tb.
 
 Oltre alle caratteristiche standard, \acr{ext2} fornisce alcune estensioni che
 non sono presenti sugli altri filesystem Unix. Le 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:
@@ -678,7 +693,7 @@ caratteri) senza sprecare spazio disco.
 % LocalWords:  l'inode lookup ops read write llseek ioctl readdir poll nell'I
 % LocalWords:  multiplexing mmap fsync fasync seek MacOs group dall' dell' img
 % LocalWords:  count unlink nell' rename gapil second Tb attributes BSD SVr gid
 % LocalWords:  l'inode lookup ops read write llseek ioctl readdir poll nell'I
 % LocalWords:  multiplexing mmap fsync fasync seek MacOs group dall' dell' img
 % LocalWords:  count unlink nell' rename gapil second Tb attributes BSD SVr gid
-% LocalWords:  sgid append only log fs linux extented linked list
+% LocalWords:  sgid append only log fs linux extented linked list third
 
 
 %%% Local Variables: 
 
 
 %%% Local Variables: