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} &
-                                  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
-                                  \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
@@ -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{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}).\\
@@ -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
-                                       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 
@@ -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
-  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
@@ -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
-  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
@@ -2139,29 +2137,31 @@ infatti calcola tre tempi:
 \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
-\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
@@ -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
-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
@@ -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}.
 
+\itindend{clock~tick}
 
 
 \subsection{La gestione del \textit{process time}}
@@ -2219,12 +2220,12 @@ utilizzato dallo stesso; il suo prototipo è:
   \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
@@ -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
-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)}.
@@ -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. 
 
-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
@@ -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}
-                                           \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