X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=fileintro.tex;h=628ab8a02d9d551c0cba40d2477bec3829cd3333;hb=5b0fe246734ccb203053e5e78e047ee4d6e991ca;hp=6fea57d59babf2a0d8e9770e63ae1686b82486b4;hpb=6f8e0ca42d3d0b97b5e5747798a1eaffb44e8521;p=gapil.git diff --git a/fileintro.tex b/fileintro.tex index 6fea57d..628ab8a 100644 --- a/fileintro.tex +++ b/fileintro.tex @@ -90,13 +90,13 @@ 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 -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 potranno poi inserire anche tutti gli altri oggetti visti attraverso -l'interfaccia che manipola i file come le fifo, i link, i socket\index{socket} -e gli stessi file di dispositivo \index{file!di~dispositivo} (questi ultimi, -per convenzione, sono inseriti nella directory \file{/dev}). +l'interfaccia che manipola i file come le fifo, i link, i socket e gli stessi +file di dispositivo \index{file!di~dispositivo} (questi ultimi, per +convenzione, sono inseriti nella directory \file{/dev}). Il nome completo di un file viene chiamato \textit{pathname} ed il procedimento con cui si individua il file a cui esso fa riferimento è chiamato @@ -143,19 +143,19 @@ la classificazione dei file (che in questo caso sono sempre file di dati) in base al loro contenuto, o tipo di accesso. Essa riguarda invece il tipo di oggetti; in particolare è da notare la presenza dei cosiddetti file speciali. Alcuni di essi, come le \textit{fifo} (che tratteremo in -sez.~\ref{sec:ipc_named_pipe}) ed i \textit{socket}\index{socket} (che -tratteremo in cap.~\ref{cha:socket_intro}) non sono altro che dei riferimenti -per utilizzare delle funzionalità di comunicazione fornite dal kernel. Gli -altri sono i \textsl{file di dispositivo}\index{file!di~dispositivo} (o -\textit{device file}) che costituiscono una interfaccia diretta per leggere e -scrivere sui dispositivi fisici; essi vengono suddivisi in due grandi -categorie, \textsl{a blocchi} e \textsl{a caratteri} a seconda delle modalità -in cui il dispositivo sottostante effettua le operazioni di I/O.\footnote{in - sostanza i dispositivi a blocchi (ad esempio i dischi) corrispondono a - periferiche per le quali è richiesto che l'I/O venga effettuato per blocchi - di dati di dimensioni fissate (ad esempio le dimensioni di un settore), - mentre nei dispositivi a caratteri l'I/O viene effettuato senza nessuna - particolare struttura.} +sez.~\ref{sec:ipc_named_pipe}) ed i \textit{socket} (che tratteremo in +cap.~\ref{cha:socket_intro}) non sono altro che dei riferimenti per utilizzare +delle funzionalità di comunicazione fornite dal kernel. Gli altri sono i +\textsl{file di dispositivo} \index{file!di~dispositivo} (o \textit{device + file}) che costituiscono una interfaccia diretta per leggere e scrivere sui +dispositivi fisici; essi vengono suddivisi in due grandi categorie, \textsl{a + blocchi} e \textsl{a caratteri} a seconda delle modalità in cui il +dispositivo sottostante effettua le operazioni di I/O.\footnote{in sostanza i + dispositivi a blocchi (ad esempio i dischi) corrispondono a periferiche per + le quali è richiesto che l'I/O venga effettuato per blocchi di dati di + dimensioni fissate (ad esempio le dimensioni di un settore), mentre nei + dispositivi a caratteri l'I/O viene effettuato senza nessuna particolare + struttura.} \begin{table}[htb] \footnotesize @@ -179,7 +179,7 @@ in cui il dispositivo sottostante effettua le operazioni di I/O.\footnote{in \textit{fifo} & ``\textsl{coda}'' & un file speciale che identifica una linea di comunicazione software unidirezionale (vedi sez.~\ref{sec:ipc_named_pipe}).\\ - \textit{socket}\index{socket} & ``\textsl{presa}''& + \textit{socket} & ``\textsl{presa}''& un file speciale che identifica una linea di comunicazione software bidirezionale (vedi cap.~\ref{cha:socket_intro}) \\ \hline @@ -264,12 +264,12 @@ utilizzando il tipo \ctyp{FILE *}. L'interfaccia \file{stdio.h}. Entrambe le interfacce possono essere usate per l'accesso ai file come agli -altri oggetti del VFS (fifo, socket\index{socket}, device, sui quali torneremo -in dettaglio a tempo opportuno), ma per poter accedere alle operazioni di +altri oggetti del VFS (fifo, socket, dispositivi, sui quali torneremo in +dettaglio a tempo opportuno), ma per poter accedere alle operazioni di controllo (descritte in sez.~\ref{sec:file_fcntl} e sez.~\ref{sec:file_ioctl}) su un qualunque tipo di oggetto del VFS occorre usare l'interfaccia standard di Unix con i \textit{file descriptor}. Allo stesso modo devono essere usati i -\textit{file descriptor}\index{file!descriptor} se si vuole ricorrere a +\textit{file descriptor} \index{file!descriptor} se si vuole ricorrere a modalità speciali di I/O come il \textit{file locking}\index{file!locking} o l'I/O non-bloccante (vedi cap.~\ref{cha:file_advanced}). @@ -326,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}. @@ -357,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 @@ -365,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 @@ -468,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 @@ -662,9 +662,19 @@ lunghezza, secondo lo schema in fig.~\ref{fig:file_ext2_dirs}; in questo modo caratteri) senza sprecare spazio disco. - - %%% Local Variables: %%% 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