X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=fileintro.tex;h=56b8ef7f0f6333d01c757aff8023436ca5672817;hb=83b2cb23f7f2026b0d487f9d9461c25d39d7031c;hp=3ac94752e0a946e7f1e4a3a5c701406e28128bc3;hpb=b38fb9f5c8fb8360f7ac296baa8f4a0bdd692d1c;p=gapil.git diff --git a/fileintro.tex b/fileintro.tex index 3ac9475..56b8ef7 100644 --- a/fileintro.tex +++ b/fileintro.tex @@ -43,7 +43,6 @@ Questo viene fatto strutturando l'informazione sul disco attraverso quello che si chiama un \textit{filesystem} (vedi sez.~\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 sez.~\ref{sec:file_arch_func}). In questa sezione faremo una panoramica generica su come il sistema presenta i file ai processi, trattando l'organizzazione di file e directory, i tipi di @@ -302,12 +301,6 @@ portabilit \section{L'architettura della gestione dei file} \label{sec:file_arch_func} -%% Per capire fino in fondo le proprietà di file e directory in un sistema -%% unix-like ed il comportamento delle relative funzioni di manipolazione, -%% occorre una breve introduzione al funzionamento della gestione dei file da -%% parte del kernel e sugli oggetti su cui è basato un filesystem. In particolare -%% occorre tenere presente dov'è che si situa la divisione fondamentale fra -%% kernel space e user space che tracciavamo al cap.~\ref{cha:intro_unix}. In questa sezione esamineremo come viene implementato l'accesso ai file in Linux, come il kernel può gestire diversi tipi di filesystem, descrivendo @@ -315,21 +308,10 @@ prima le caratteristiche generali di un filesystem di un sistema unix-like, per poi trattare in maniera un po' più dettagliata il filesystem più usato con Linux, l'\acr{ext2}. -% in particolare si riprenderà, approfondendolo sul piano dell'uso nelle -% funzioni di libreria, il concetto di \textit{inode} di cui abbiamo brevemente -% accennato le caratteristiche (dal lato dell'implementazione nel kernel) in -% sez.~\ref{sec:file_vfs}. - \subsection{Il \textit{Virtual File System} di Linux} \label{sec:file_vfs} -% Questa sezione riporta informazioni sui dettagli di come il kernel gestisce i -% file. L'argomento è abbastanza ``esoterico'' e questa sezione può essere -% saltata ad una prima lettura; è bene però tenere presente che vengono -% introdotti qui alcuni termini che potranno comparire in seguito, come -% \textit{inode}, \textit{dentry}, \textit{dcache}. - \itindbeg{Virtual~File~System} In Linux il concetto di \textit{everything is a file} è stato implementato attraverso il \textit{Virtual File System} (da qui in avanti VFS) che è uno @@ -344,7 +326,7 @@ albero delle directory. 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 alle -opportune routine del filesystem specifico a cui si fa riferimento. Saranno +opportune funzioni 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 fig.~\ref{fig:file_VFS_scheme}. @@ -375,7 +357,7 @@ VFS pu nelle operazioni di montaggio. Quest'ultima è responsabile di leggere da disco il superblock (vedi sez.~\ref{sec:file_ext2}), inizializzare tutte le variabili interne e restituire uno speciale descrittore dei filesystem montati al VFS; -attraverso quest'ultimo diventa possibile accedere alle routine specifiche per +attraverso quest'ultimo diventa possibile accedere alle funzioni specifiche per l'uso di quel filesystem. Il primo oggetto usato dal VFS è il descrittore di filesystem, un puntatore ad @@ -383,7 +365,7 @@ 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 \textit{filesystem descriptor} per accedere -alle routine specifiche di quel filesystem. +alle funzioni specifiche di quel filesystem. Gli altri due descrittori usati dal VFS sono relativi agli altri due oggetti su cui è strutturata l'interfaccia. Ciascuno di essi contiene le informazioni @@ -486,7 +468,7 @@ tab.~\ref{tab:file_file_operations}. 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 l'opportuna routine dichiarata in \struct{f\_ops} appropriata al +utilizzare l'opportuna funzione dichiarata in \struct{f\_ops} appropriata al tipo di file in questione. Pertanto è possibile scrivere allo stesso modo sulla porta seriale come su un @@ -686,3 +668,15 @@ caratteri) senza sprecare spazio disco. %%% mode: latex %%% TeX-master: "gapil" %%% End: + +% LocalWords: everything is device kernel filesystem sez pathname root glibc +% LocalWords: path filename bootloader proc name components fifo socket dev LF +% LocalWords: resolution chroot parent Virtual System like tab cap l'I regular +% LocalWords: inode symbolic char block VFS VMS Windows dell'I raw access Mac +% LocalWords: CR dos HFS l'XFS SGI magic number descriptor system call int ext +% LocalWords: nell'header unistd stream dall'ANSI stdio locking POSIX fig type +% LocalWords: register superblock dell'inode stat entry cache dcache dentry ln +% 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