Correzioni varie in aereo
[gapil.git] / system.tex
index 4ef44d3351f8efa5caac717cd0a6ca74c3e215b4..127095d603400be6e07b647da4ee324d274337a9 100644 (file)
@@ -344,11 +344,9 @@ relative spiegazioni, si può trovare nel manuale delle \acr{glibc}.
                                   Valore massimo del tipo di dato
                                   \type{ssize\_t}.\\ 
       \texttt{\_SC\_CLK\_TCK}   & \const{CLK\_TCK} &
                                   Valore massimo del tipo di dato
                                   \type{ssize\_t}.\\ 
       \texttt{\_SC\_CLK\_TCK}   & \const{CLK\_TCK} &
-                                  Il numero di \itindex{clock~tick}
-                                  \textit{clock tick} al secondo, 
+                                  Il numero di \textit{clock tick} al secondo, 
                                   cioè l'unità di misura del
                                   cioè l'unità di misura del
-                                  \itindex{process~time} \textit{process
-                                    time} (vedi
+                                  \textit{process time} (vedi
                                   sez.~\ref{sec:sys_unix_time}).\\  
       \texttt{\_SC\_JOB\_CONTROL}&\macro{\_POSIX\_JOB\_CONTROL}&
                                   Indica se è supportato il \textit{job
                                   sez.~\ref{sec:sys_unix_time}).\\  
       \texttt{\_SC\_JOB\_CONTROL}&\macro{\_POSIX\_JOB\_CONTROL}&
                                   Indica se è supportato il \textit{job
@@ -409,7 +407,7 @@ riportate in tab.~\ref{tab:sys_file_macro}.
     \const{LINK\_MAX}   &8  & Numero massimo di link a un file.\\
     \const{NAME\_MAX}&  14  & Lunghezza in byte di un nome di file. \\
     \const{PATH\_MAX}& 256  & Lunghezza in byte di un \textit{pathname}.\\
     \const{LINK\_MAX}   &8  & Numero massimo di link a un file.\\
     \const{NAME\_MAX}&  14  & Lunghezza in byte di un nome di file. \\
     \const{PATH\_MAX}& 256  & Lunghezza in byte di un \textit{pathname}.\\
-    \const{PIPE\_BUF}&4096  & Byte scrivibili atomicamente in una pipe
+    \const{PIPE\_BUF}&4096  & Byte scrivibili atomicamente in una \textit{pipe}
                               (vedi sez.~\ref{sec:ipc_pipes}).\\
     \const{MAX\_CANON}&255  & Dimensione di una riga di terminale in modo 
                               canonico (vedi sez.~\ref{sec:term_io_design}).\\
                               (vedi sez.~\ref{sec:ipc_pipes}).\\
     \const{MAX\_CANON}&255  & Dimensione di una riga di terminale in modo 
                               canonico (vedi sez.~\ref{sec:term_io_design}).\\
@@ -441,7 +439,7 @@ analoghe di tab.~\ref{tab:sys_posix1_general}.
     \const{\_POSIX\_PATH\_MAX}& 256  & Lunghezza in byte di un 
                                        \textit{pathname}.\\
     \const{\_POSIX\_PIPE\_BUF}& 512  & Byte scrivibili atomicamente in una
     \const{\_POSIX\_PATH\_MAX}& 256  & Lunghezza in byte di un 
                                        \textit{pathname}.\\
     \const{\_POSIX\_PIPE\_BUF}& 512  & Byte scrivibili atomicamente in una
-                                       pipe.\\
+                                       \textit{pipe}.\\
     \const{\_POSIX\_MAX\_CANON}&255  & Dimensione di una riga di
                                        terminale in modo canonico.\\
     \const{\_POSIX\_MAX\_INPUT}&255  & Spazio disponibile nella coda di input 
     \const{\_POSIX\_MAX\_CANON}&255  & Dimensione di una riga di
                                        terminale in modo canonico.\\
     \const{\_POSIX\_MAX\_INPUT}&255  & Spazio disponibile nella coda di input 
@@ -1666,12 +1664,12 @@ riportati nel seguente elenco:
   \textit{Address Space}, (vedi sez.~\ref{sec:proc_mem_gen}). Se il limite
   viene superato dall'uso di funzioni come \func{brk}, \func{mremap} o
   \func{mmap} esse falliranno con un errore di \errcode{ENOMEM}, mentre se il
   \textit{Address Space}, (vedi sez.~\ref{sec:proc_mem_gen}). Se il limite
   viene superato dall'uso di funzioni come \func{brk}, \func{mremap} o
   \func{mmap} esse falliranno con un errore di \errcode{ENOMEM}, mentre se il
-  superamento viene causato dalla crescita dello \itindex{stack}
-  \textit{stack} il processo riceverà un segnale di \signal{SIGSEGV}. Dato che
-  il valore usato è un intero di tipo \ctyp{long} nelle macchine a 32 bit
-  questo può assumere un valore massimo di 2Gb (anche se la memoria
-  disponibile può essere maggiore), in tal caso il limite massimo indicabile
-  resta 2Gb, altrimenti la risorsa si dà per non limitata.
+  superamento viene causato dalla crescita dello \textit{stack} il processo
+  riceverà un segnale di \signal{SIGSEGV}. Dato che il valore usato è un
+  intero di tipo \ctyp{long} nelle macchine a 32 bit questo può assumere un
+  valore massimo di 2Gb (anche se la memoria disponibile può essere maggiore),
+  in tal caso il limite massimo indicabile resta 2Gb, altrimenti la risorsa si
+  dà per non limitata.
 
 \item[\const{RLIMIT\_CORE}] Questa risorsa indica, in byte, la massima
   dimensione per un file di \textit{core dump} (vedi
 
 \item[\const{RLIMIT\_CORE}] Questa risorsa indica, in byte, la massima
   dimensione per un file di \textit{core dump} (vedi
@@ -1802,9 +1800,9 @@ messaggi vuoti che comunque richiede delle risorse di gestione. Questa risorsa
   introdotto con il kernel 2.6.8.
 
 \item[\const{RLIMIT\_STACK}] Questa risorsa indica, in byte, la massima
   introdotto con il kernel 2.6.8.
 
 \item[\const{RLIMIT\_STACK}] Questa risorsa indica, in byte, la massima
-  dimensione dello \itindex{stack} \textit{stack} del processo. Se il processo
-  esegue operazioni che estendano lo \textit{stack} oltre questa dimensione
-  riceverà un segnale di \signal{SIGSEGV}. 
+  dimensione dello \textit{stack} del processo. Se il processo esegue
+  operazioni che estendano lo \textit{stack} oltre questa dimensione riceverà
+  un segnale di \signal{SIGSEGV}.
 
   A partire dal kernel 2.6.23 questo stesso limite viene applicato per la gran
   parte delle architetture anche ai dati che possono essere passati come
 
   A partire dal kernel 2.6.23 questo stesso limite viene applicato per la gran
   parte delle architetture anche ai dati che possono essere passati come
@@ -2139,29 +2137,31 @@ infatti calcola tre tempi:
 \end{basedescript}
 
 La somma di \textit{user time} e \textit{system time} indica il
 \end{basedescript}
 
 La somma di \textit{user time} e \textit{system time} indica il
-\itindex{process~time} \textit{process time}, vale a dire il tempo di
-processore totale che il sistema ha effettivamente utilizzato per eseguire il
-programma di un certo processo. Si può ottenere un riassunto dei valori di
-questi tempi quando si esegue un qualsiasi programma lanciando quest'ultimo
-come argomento del comando \cmd{time}.
-
-Come accennato il \itindex{process~time} \textit{process time} viene misurato
-nei cosiddetti \itindex{clock~tick} \textit{clock tick}. Un tempo questo
-corrispondeva al numero di interruzioni effettuate dal timer di sistema, oggi
-lo standard POSIX richiede che esso sia espresso come multiplo della costante
-\const{CLOCKS\_PER\_SEC} che deve essere definita come 1000000, qualunque sia
-la risoluzione reale dell'orologio di sistema e la frequenza delle
-interruzioni del timer che, come accennato in sez.~\ref{sec:proc_hierarchy} e
-come vedremo a breve, è invece data dalla costante \const{HZ}.
+\textit{process time}, vale a dire il tempo di processore totale che il
+sistema ha effettivamente utilizzato per eseguire il programma di un certo
+processo. Si può ottenere un riassunto dei valori di questi tempi quando si
+esegue un qualsiasi programma lanciando quest'ultimo come argomento del
+comando \cmd{time}.
+
+\itindbeg{clock~tick}
+
+Come accennato il \textit{process time} viene misurato nei cosiddetti
+\textit{clock tick}. Un tempo questo corrispondeva al numero di interruzioni
+effettuate dal timer di sistema, oggi lo standard POSIX richiede che esso sia
+espresso come multiplo della costante \const{CLOCKS\_PER\_SEC} che deve essere
+definita come 1000000, qualunque sia la risoluzione reale dell'orologio di
+sistema e la frequenza delle interruzioni del timer che, come accennato in
+sez.~\ref{sec:proc_hierarchy} e come vedremo a breve, è invece data dalla
+costante \const{HZ}.
 
 Il tipo di dato usato per questo tempo, \type{clock\_t}, con questa
 convenzione ha una risoluzione del microsecondo. Ma non tutte le funzioni di
 sistema come vedremo seguono questa convenzione, in tal caso il numero di
 
 Il tipo di dato usato per questo tempo, \type{clock\_t}, con questa
 convenzione ha una risoluzione del microsecondo. Ma non tutte le funzioni di
 sistema come vedremo seguono questa convenzione, in tal caso il numero di
-\itindex{clock~tick} \textit{clock tick} al secondo può essere ricavato anche
-attraverso \func{sysconf} richiedendo il valore della costante
-\const{\_SC\_CLK\_TCK} (vedi sez.~\ref{sec:sys_limits}).  Il vecchio simbolo
-\const{CLK\_TCK} definito in \headfile{time.h} è ormai considerato obsoleto e
-non deve essere usato.
+\textit{clock tick} al secondo può essere ricavato anche attraverso
+\func{sysconf} richiedendo il valore della costante \const{\_SC\_CLK\_TCK}
+(vedi sez.~\ref{sec:sys_limits}).  Il vecchio simbolo \const{CLK\_TCK}
+definito in \headfile{time.h} è ormai considerato obsoleto e non deve essere
+usato.
 
 In realtà tutti calcoli dei tempi vengono effettuati dal kernel per il
 cosiddetto \textit{software clock}, utilizzando il \textit{timer di sistema} e
 
 In realtà tutti calcoli dei tempi vengono effettuati dal kernel per il
 cosiddetto \textit{software clock}, utilizzando il \textit{timer di sistema} e
@@ -2177,9 +2177,9 @@ le architetture, ma dal 2.6.13 il valore è diventato una opzione di
 compilazione del kernel, con un default di 250 e valori possibili di 100, 250,
 1000. Dal 2.6.20 è stato aggiunto anche il valore 300 che è divisibile per le
 frequenze di refresh della televisione (50 o 60 Hz). Si può pensare che questi
 compilazione del kernel, con un default di 250 e valori possibili di 100, 250,
 1000. Dal 2.6.20 è stato aggiunto anche il valore 300 che è divisibile per le
 frequenze di refresh della televisione (50 o 60 Hz). Si può pensare che questi
-valori determinino anche la corrispondente durata dei \itindex{clock~tick}
-\textit{clock tick}, ma in realtà questa granularità viene calcolata in
-maniera indipendente usando la costante del kernel \const{USER\_HZ}.
+valori determinino anche la corrispondente durata dei \textit{clock tick}, ma
+in realtà questa granularità viene calcolata in maniera indipendente usando la
+costante del kernel \const{USER\_HZ}.
 
 Fino al kernel 2.6.21 la durata di un \textit{jiffy} costituiva la risoluzione
 massima ottenibile nella misura dei tempi impiegabile in una \textit{system
 
 Fino al kernel 2.6.21 la durata di un \textit{jiffy} costituiva la risoluzione
 massima ottenibile nella misura dei tempi impiegabile in una \textit{system
@@ -2189,6 +2189,7 @@ divenuto possibile ottenere, per le funzioni di attesa ed i timer, la massima
 risoluzione possibile fornita dall'hardware. Torneremo su questo in
 sez.~\ref{sec:sig_timer_adv}.
 
 risoluzione possibile fornita dall'hardware. Torneremo su questo in
 sez.~\ref{sec:sig_timer_adv}.
 
+\itindend{clock~tick}
 
 
 \subsection{La gestione del \textit{process time}}
 
 
 \subsection{La gestione del \textit{process time}}
@@ -2219,12 +2220,12 @@ utilizzato dallo stesso; il suo prototipo è:
   \var{errno} non viene usata.}  
 \end{funcproto}
 
   \var{errno} non viene usata.}  
 \end{funcproto}
 
-La funzione restituisce il tempo in \itindex{clock~tick} \textit{clock tick}
-ma la \acr{glibc} segue lo standard POSIX e quindi se si vuole il tempo in
-secondi occorre dividere il risultato per la costante
-\const{CLOCKS\_PER\_SEC}. In genere \type{clock\_t} viene rappresentato come
-intero a 32 bit, il che comporta un valore massimo corrispondente a circa 72
-minuti, dopo i quali il contatore riprenderà lo stesso valore iniziale.
+La funzione restituisce il tempo in \textit{clock tick} ma la \acr{glibc}
+segue lo standard POSIX e quindi se si vuole il tempo in secondi occorre
+dividere il risultato per la costante \const{CLOCKS\_PER\_SEC}. In genere
+\type{clock\_t} viene rappresentato come intero a 32 bit, il che comporta un
+valore massimo corrispondente a circa 72 minuti, dopo i quali il contatore
+riprenderà lo stesso valore iniziale.
 
 La funzione è presente anche nello standard ANSI C, ma in tal caso non è
 previsto che il valore ritornato indichi un intervallo di tempo ma solo un
 
 La funzione è presente anche nello standard ANSI C, ma in tal caso non è
 previsto che il valore ritornato indichi un intervallo di tempo ma solo un
@@ -2301,7 +2302,7 @@ il comportamento è stato adeguato allo standard a partire dalla versione
 2.6.9.
 
 A differenza di quanto avviene per \func{clock} i valori restituiti nei campi
 2.6.9.
 
 A differenza di quanto avviene per \func{clock} i valori restituiti nei campi
-di una struttura \struct{tms} sono misurati in numero di \itindex{clock~tick}
+di una struttura \struct{tms} sono misurati in numero di 
 \textit{clock tick} effettivi e non in multipli di \const{CLOCKS\_PER\_SEC},
 pertanto per ottenere il valore effettivo in secondi occorrerà dividere per il
 risultato di \code{sysconf(\_SC\_CLK\_TCK)}.
 \textit{clock tick} effettivi e non in multipli di \const{CLOCKS\_PER\_SEC},
 pertanto per ottenere il valore effettivo in secondi occorrerà dividere per il
 risultato di \code{sysconf(\_SC\_CLK\_TCK)}.
@@ -2313,12 +2314,12 @@ versioni del kernel. Fino al kernel 2.4 si faceva infatti riferimento al
 momento dell'avvio del kernel. Con il kernel 2.6 si fa riferimento a
 $2^{32}/\mathtt{HZ}-300$ secondi prima dell'avvio. 
 
 momento dell'avvio del kernel. Con il kernel 2.6 si fa riferimento a
 $2^{32}/\mathtt{HZ}-300$ secondi prima dell'avvio. 
 
-Considerato che il numero dei \itindex{clock~tick} \textit{clock tick} per un
-kernel che è attivo da molto tempo può eccedere le dimensioni per il tipo
-\type{clock\_t} il comportamento più opportuno per i programmi è di ignorare
-comunque il valore di ritorno della funzione e ricorrere alle funzioni per il
-tempo di calendario del prossimo paragrafo qualora si voglia calcolare il
-tempo effettivamente trascorso dall'inizio del programma.
+Considerato che il numero dei \textit{clock tick} per un kernel che è attivo
+da molto tempo può eccedere le dimensioni per il tipo \type{clock\_t} il
+comportamento più opportuno per i programmi è di ignorare comunque il valore
+di ritorno della funzione e ricorrere alle funzioni per il tempo di calendario
+del prossimo paragrafo qualora si voglia calcolare il tempo effettivamente
+trascorso dall'inizio del programma.
 
 Infine si tenga presente che per dei limiti nelle convenzioni per il ritorno
 dei valori delle \textit{system call} su alcune architetture hardware (ed in
 
 Infine si tenga presente che per dei limiti nelle convenzioni per il ritorno
 dei valori delle \textit{system call} su alcune architetture hardware (ed in
@@ -2591,7 +2592,7 @@ riportate in tab.~\ref{tab:sys_timex_mode}.
                                            specificato nel campo
                                            \var{constant} di \struct{timex}.\\ 
     \const{ADJ\_TICK}           & 0x4000 & Imposta il valore dei \textit{tick}
                                            specificato nel campo
                                            \var{constant} di \struct{timex}.\\ 
     \const{ADJ\_TICK}           & 0x4000 & Imposta il valore dei \textit{tick}
-                                           \itindex{clock~tick} del timer in
+                                           del timer in
                                            microsecondi, espresso nel campo
                                            \var{tick} di \struct{timex}.\\  
     \const{ADJ\_OFFSET\_SINGLESHOT}&0x8001&Chiede uno spostamento una tantum 
                                            microsecondi, espresso nel campo
                                            \var{tick} di \struct{timex}.\\  
     \const{ADJ\_OFFSET\_SINGLESHOT}&0x8001&Chiede uno spostamento una tantum