X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileintro.tex;h=c786f2251ccb89b4da7ab1bd2e5e996c8577246d;hp=330f812b8a2a02dab3ebcc9bd94cbf10e93b93f9;hb=0ab3f419ed7721862f3a3bc012d681fbefdf0cfa;hpb=00c2fb226b0ad73a87d5d86a25a149b61c5f9a53 diff --git a/fileintro.tex b/fileintro.tex index 330f812..c786f22 100644 --- a/fileintro.tex +++ b/fileintro.tex @@ -19,6 +19,8 @@ nelle particolarit contempo tratteremo l'organizzazione dei file in un sistema unix-like, e le varie caratteristiche distintive. + + \section{L'organizzazione di file e directory} \label{sec:file_organization} @@ -87,7 +89,7 @@ directory; l'albero viene appunto creato inserendo directory in altre directory. Il nome completo di file generico è composto da una serie di nomi separati da -una \texttt{/} (in Linux più \texttt{/} consecutive sono considerate +una \file{/} (in Linux più \file{/} consecutive sono considerate equivalenti ad una sola). Il nome completo di un file viene usualmente chiamato \textit{pathname}, e anche se il manuale della glibc depreca questo nome (poiché genererebbe confusione, dato che con \textit{path} si indica @@ -104,7 +106,7 @@ precedente: ovviamente perch indicati come directory esistano e siano effettivamente directory, inoltre i permessi devono consentire l'accesso. -Se il pathname comincia per \texttt{/} la ricerca parte dalla directory radice +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 equivale alla directory radice dell'albero (come descritto in @@ -218,7 +220,7 @@ 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_xxx}). +\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 @@ -316,6 +318,7 @@ l'\acr{ext2}, come esempio di un filesystem unix-like. % abbiamo brevemente accennato le caratteristiche (dal lato dell'implementazione % nel kernel) in \secref{sec:file_vfs}. + \subsection{Il \textit{virtual filesystem} di Linux} \label{sec:file_vfs} @@ -343,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} @@ -505,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} @@ -518,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} @@ -571,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} @@ -584,6 +587,7 @@ 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 adesso sarà referenziata anche dalla voce \file{..} di \file{img}. + \subsection{Il filesystem \textsl{ext2}} \label{sec:file_ext2} @@ -635,14 +639,14 @@ 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 prestazioni dato che viene ridotta la distanza fra i dati e la tabella degli -inodes. +inode. Le directory sono implementate come una linked list con voci di dimensione variabile. Ciascuna voce della lista contiene il numero di inode, la sua @@ -652,5 +656,3 @@ in questo modo - -