From b26cbb461558b73852b680d524e8f91675998116 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Sun, 20 Mar 2005 22:45:12 +0000 Subject: [PATCH] Piccole correzioni e uniformati i font dei link esterni. --- fileintro.tex | 89 ++++++++++++--------------------------------------- ipc.tex | 6 ++-- prochand.tex | 4 +-- 3 files changed, 26 insertions(+), 73 deletions(-) diff --git a/fileintro.tex b/fileintro.tex index eaea002..78c2a71 100644 --- a/fileintro.tex +++ b/fileintro.tex @@ -87,38 +87,38 @@ particolare che il kernel riconosce come tale. Il suo scopo contenere una lista di nomi di file e le informazioni che associano ciascun nome al contenuto. Dato che questi nomi possono corrispondere ad un qualunque oggetto del filesystem, compresa un'altra directory, si ottiene naturalmente -un'organizzazione ad albero inserendo directory in altre directory. +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 \textit{nomi}.} 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}). +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}). 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 -risoluzione del nome (\textit{file name resolution} o \textit{pathname - resolution}). La risoluzione viene fatta esaminando il \textit{pathname} da +risoluzione del nome (\textit{filename resolution} o \textit{pathname +resolution}). La risoluzione viene fatta esaminando il \textit{pathname} da sinistra a destra e localizzando ogni nome nella directory indicata dal nome -precedente usando \file{/} come separatore\footnote{nel caso di nome vuoto, il - costrutto \file{//} viene considerato equivalente a \file{/}.}: ovviamente, +precedente usando \texttt{/} come separatore\footnote{nel caso di nome vuoto, +il costrutto \file{//} viene considerato equivalente a \file{/}.}: ovviamente, perché il procedimento funzioni, occorre che i nomi indicati come directory esistano e siano effettivamente directory, inoltre i permessi (si veda sez.~\ref{sec:file_access_control}) devono consentire l'accesso all'intero \textit{pathname}. -Se il \textit{pathname} comincia per \file{/} la ricerca parte dalla directory -radice del processo; questa, a meno di un \func{chroot} (su cui torneremo in -sez.~\ref{sec:file_chroot}) è la stessa per tutti i processi ed equivale alla -directory radice dell'albero dei file: in questo caso si parla di un -\textsl{pathname assoluto}\index{\textit{pathname}!assoluto}. Altrimenti la -ricerca parte dalla directory corrente (su cui torneremo in +Se il \textit{pathname} comincia per \texttt{/} la ricerca parte dalla +directory radice del processo; questa, a meno di un \func{chroot} (su cui +torneremo in sez.~\ref{sec:file_chroot}) è la stessa per tutti i processi ed +equivale alla directory radice dell'albero dei file: in questo caso si parla +di un \textsl{pathname assoluto}\index{\textit{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}\index{\textit{pathname}!relativo}. +relativo}\index{\textit{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 @@ -297,53 +297,6 @@ infatti segue solo lo standard POSIX.1 dei sistemi Unix, ed portabilità più limitata. -% \subsection{Caratteristiche specifiche dei file in Unix} -% \label{sec:fileint_unix_spec} - -% Essendo un sistema multitasking e multiutente esistono alcune caratteristiche -% specifiche di un sistema unix-like che devono essere tenute in conto -% nell'accesso ai file. È infatti normale che più processi o programmi possano -% accedere contemporaneamente allo stesso file e devono poter eseguire le loro -% operazioni indipendentemente da quello che fanno gli altri processi. - -% Per questo motivo le strutture usate per all'accesso ai file sono relative al -% processo che effettua l'accesso. All'apertura di ogni file infatti viene -% creata all'interno del processo una apposita struttura in cui sono memorizzati -% tutti gli attributi del medesimo, che viene utilizzata per tutte le -% operazioni. Questa è una struttura che resta locale al processo stesso; in -% questo modo processi diversi possono usare le proprie strutture locali per -% accedere ai file (che può essere sempre lo stesso) in maniera assolutamente -% indipendente. - -% Questo ha delle conseguenze di cui è bene tenere conto; ad esempio in tutti i -% sistemi POSIX uno degli attributi di un file aperto è la posizione corrente nel -% file, cioè il punto nel file in cui verrebbe letto o scritto alla operazione -% successiva. Essa è rappresentata da un numero intero che indica il numero di -% byte dall'inizio del file, che viene (a meno che non si apra il file in -% append) inizializzato a zero all'apertura del medesimo. - -% Questo è uno dei dati che viene mantenuto nella suddetta struttura, per cui -% ogni processo avrà la sua posizione corrente nel file, che non sarà -% influenzata da quello che altri processi possono fare. Anzi, aprire un file -% significa appunto creare ed inizializzare una tale struttura, per cui se si -% apre due volte lo stesso file all'interno dello stesso processo, si otterranno -% due file descriptor o due stream che avranno ancora una posizione corrente nel -% file assolutamente indipendente. - -% Si tenga conto inoltre che un'altro dei dati contenuti nella struttura di -% accesso è un riferimento all'inode del file, pertanto anche se il file viene -% cancellato da un altro processo, sarà sempre possibile mantenere l'accesso ai -% dati, e lo spazio su disco non verrà rilasciato fintanto che il file non sarà -% chiuso e l'ultimo riferimento cancellato. È pertanto possibile (come vedremo -% in dettaglio in sez.~\ref{sec:file_link}) aprire un file provvisorio per -% cancellarlo immediatamente dopo; in questo modo all'uscita del programma il -% file scomparirà definitivamente dal disco, ma il file ed il suo contenuto -% saranno disponibili per tutto il tempo in cui il processo è attivo. - -% Ritorneremo su questo più avanti in sez.~\ref{sec:file_fd}, quando tratteremo -% l'input/output sui file, esaminando in dettaglio come tutto ciò viene -% realizzato. - \section{L'architettura della gestione dei file} \label{sec:file_arch_func} @@ -550,7 +503,7 @@ unix-like) organizza i dati che tiene su disco attraverso l'uso di un filesystem. Una delle caratteristiche di Linux rispetto agli altri Unix è quella di poter supportare, grazie al VFS, una enorme quantità di filesystem diversi, ognuno dei quali ha una sua particolare struttura e funzionalità -proprie. Per questo, per il momento non entreremo nei dettagli di un +proprie. Per questo per il momento non entreremo nei dettagli di un filesystem specifico, ma daremo una descrizione a grandi linee che si adatta alle caratteristiche comuni di qualunque filesystem di sistema unix-like. @@ -693,7 +646,7 @@ non sono presenti sugli altri filesystem Unix. Le principali sono le seguenti: La struttura di \acr{ext2} è stata ispirata a quella del filesystem di BSD: un filesystem è composto da un insieme di blocchi, la struttura generale è quella riportata in fig.~\ref{fig:file_filesys_detail}, in cui la partizione è divisa -in gruppi di blocchi.\footnote{non si confonda la questa definizione con +in gruppi di blocchi.\footnote{non si confonda questa definizione con quella riportata in fig.~\ref{fig:file_dirent_struct}; in quel caso si fa riferimento alla struttura usata in user space per riportare i dati contenuti in una directory generica, questa fa riferimento alla struttura diff --git a/ipc.tex b/ipc.tex index 503792b..bd5b25d 100644 --- a/ipc.tex +++ b/ipc.tex @@ -3313,9 +3313,9 @@ processo che esegue la creazione). Le code di messaggi non sono ancora supportate nel kernel ufficiale, esiste però una implementazione sperimentale di Michal Wronski e Krzysztof Benedyczak,\footnote{i patch al kernel e la relativa libreria possono essere - trovati su \href{http://www.mat.uni.torun.pl/~wrona/posix_ipc} - {http://www.mat.uni.torun.pl/\tild{}wrona/posix\_ipc}, questi sono stati - inseriti nel kernel ufficiale a partire dalla versione 2.6.6-rc1.}. In +trovati su \href{http://www.mat.uni.torun.pl/~wrona/posix_ipc} +{\textsf{http://www.mat.uni.torun.pl/\tild{}wrona/posix\_ipc}}, questi sono +stati inseriti nel kernel ufficiale a partire dalla versione 2.6.6-rc1.}. In generale, come le corrispettive del SysV IPC, le code di messaggi sono poco usate, dato che i socket\index{socket}, nei casi in cui sono sufficienti, sono più comodi, e che in casi più complessi la comunicazione può essere gestita diff --git a/prochand.tex b/prochand.tex index a663b9f..ab71e82 100644 --- a/prochand.tex +++ b/prochand.tex @@ -400,8 +400,8 @@ degli eventuali tempi di attesa in secondi (eseguiti tramite la funzione descrizione delle opzioni); il codice completo, compresa la parte che gestisce le opzioni a riga di comando, è disponibile nel file \file{ForkTest.c}, distribuito insieme agli altri sorgenti degli esempi su -\href{http://gapil.firenze.linux.it/gapil_source.tgz} -{\texttt{http://gapil.firenze.linux.it/gapil\_source.tgz}}. +\href{http://gapil.truelite.it/gapil_source.tgz} +{\textsf{http://gapil.truelite.it/gapil\_source.tgz}}. Decifrato il numero di figli da creare, il ciclo principale del programma (\texttt{\small 24--40}) esegue in successione la creazione dei processi figli -- 2.30.2