Aggiornamento al 2010 delle note di copyright
[gapil.git] / fileintro.tex
index bc11f826886a4d1a7938128af89266d8e0005a69..4bcbd4209fc9e40fbf62d646f2c8a8bbd08152ad 100644 (file)
@@ -1,6 +1,6 @@
 %% fileintro.tex
 %%
-%% Copyright (C) 2000-2007 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2010 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",
@@ -91,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
-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
@@ -118,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
-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}
@@ -168,22 +167,22 @@ dispositivo sottostante effettua le operazioni di I/O.\footnote{in sostanza i
     \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} &
-      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} &
-      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} &
-      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} &
-      un file che identifica una periferica ad accesso a blocchi \\
+      Un file che identifica una periferica ad accesso a blocchi.\\
       \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}''&
-      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}
@@ -318,6 +317,9 @@ Linux, l'\acr{ext2} (e derivati).
 \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
@@ -447,25 +449,25 @@ tab.~\ref{tab:file_file_operations}.
     \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}).\\
-    \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}).\\
-    \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.}
@@ -589,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
-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}
 
-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:
@@ -679,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:  sgid append only log fs linux extented linked list
+% LocalWords:  sgid append only log fs linux extented linked list third
 
 
 %%% Local Variables: