Domande da passare a Kerrisk
[gapil.git] / system.tex
index cdbfdd3cda7500f533df1df0772fba2c02f5df96..4ef44d3351f8efa5caac717cd0a6ca74c3e215b4 100644 (file)
@@ -1594,8 +1594,7 @@ specifico segnale o il fallimento della \textit{system call} che lo ha
 provocato. A questo comportamento generico fanno eccezione \const{RLIMIT\_CPU}
 in cui si ha in comportamento diverso per il superamento dei due limiti e
 \const{RLIMIT\_CORE} che influenza soltanto la dimensione o l'eventuale
 provocato. A questo comportamento generico fanno eccezione \const{RLIMIT\_CPU}
 in cui si ha in comportamento diverso per il superamento dei due limiti e
 \const{RLIMIT\_CORE} che influenza soltanto la dimensione o l'eventuale
-creazione dei file di \itindex{core~dump} \textit{core dump} (vedi
-sez.~\ref{sec:sig_standard}).
+creazione dei file di \textit{core dump} (vedi sez.~\ref{sec:sig_standard}).
 
 Per permettere di leggere e di impostare i limiti di utilizzo delle risorse da
 parte di un processo sono previste due funzioni di sistema, \funcd{getrlimit}
 
 Per permettere di leggere e di impostare i limiti di utilizzo delle risorse da
 parte di un processo sono previste due funzioni di sistema, \funcd{getrlimit}
@@ -1650,7 +1649,7 @@ di quest'ultimo.  Nello specificare un limite, oltre a fornire dei valori
 specifici, si può anche usare la costante \const{RLIM\_INFINITY} che permette
 di sbloccare completamente l'uso di una risorsa. Si ricordi però che solo un
 processo con i privilegi di amministratore\footnote{per essere precisi in
 specifici, si può anche usare la costante \const{RLIM\_INFINITY} che permette
 di sbloccare completamente l'uso di una risorsa. Si ricordi però che solo un
 processo con i privilegi di amministratore\footnote{per essere precisi in
-  questo caso quello che serve è la \itindex{capabilities} \textit{capability}
+  questo caso quello che serve è la \textit{capability}
   \const{CAP\_SYS\_RESOURCE} (vedi sez.~\ref{sec:proc_capabilities}).} può
 innalzare un limite al di sopra del valore corrente del limite massimo ed
 usare un valore qualsiasi per entrambi i limiti.
   \const{CAP\_SYS\_RESOURCE} (vedi sez.~\ref{sec:proc_capabilities}).} può
 innalzare un limite al di sopra del valore corrente del limite massimo ed
 usare un valore qualsiasi per entrambi i limiti.
@@ -1675,11 +1674,10 @@ riportati nel seguente elenco:
   resta 2Gb, altrimenti la risorsa si dà per non limitata.
 
 \item[\const{RLIMIT\_CORE}] Questa risorsa indica, in byte, la massima
   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 \itindex{core~dump} \textit{core dump} (vedi
+  dimensione per un file di \textit{core dump} (vedi
   sez.~\ref{sec:sig_standard}) creato nella terminazione di un processo. File
   di dimensioni maggiori verranno troncati a questo valore, mentre con un
   sez.~\ref{sec:sig_standard}) creato nella terminazione di un processo. File
   di dimensioni maggiori verranno troncati a questo valore, mentre con un
-  valore nullo si bloccherà la creazione dei \itindex{core~dump} \textit{core
-    dump}.
+  valore nullo si bloccherà la creazione dei \textit{core dump}.
 
 \item[\const{RLIMIT\_CPU}] Questa risorsa indica, in secondi, il massimo tempo
   di CPU (vedi sez.~\ref{sec:sys_cpu_times}) che il processo può usare. Il
 
 \item[\const{RLIMIT\_CPU}] Questa risorsa indica, in secondi, il massimo tempo
   di CPU (vedi sez.~\ref{sec:sys_cpu_times}) che il processo può usare. Il
@@ -1858,8 +1856,8 @@ che sia stata definita la macro \macro{\_GNU\_SOURCE}. Il primo argomento
 indica il \ids{PID} del processo di cui si vogliono cambiare i limiti e si può
 usare un valore nullo per indicare il processo chiamante.  Per modificare i
 limiti di un altro processo, a meno di non avere privilegi
 indica il \ids{PID} del processo di cui si vogliono cambiare i limiti e si può
 usare un valore nullo per indicare il processo chiamante.  Per modificare i
 limiti di un altro processo, a meno di non avere privilegi
-amministrativi,\footnote{anche in questo caso la \itindex{capabilities}
-  \textit{capability} necessaria è \const{CAP\_SYS\_RESOURCE} (vedi
+amministrativi,\footnote{anche in questo caso la \textit{capability}
+  necessaria è \const{CAP\_SYS\_RESOURCE} (vedi
   sez.~\ref{sec:proc_capabilities}).}  l'\ids{UID} ed il \ids{GID} reale del
 chiamante devono coincidere con \ids{UID} e \ids{GID} del processo indicato
 per i tre gruppi reale, effettivo e salvato.
   sez.~\ref{sec:proc_capabilities}).}  l'\ids{UID} ed il \ids{GID} reale del
 chiamante devono coincidere con \ids{UID} e \ids{GID} del processo indicato
 per i tre gruppi reale, effettivo e salvato.
@@ -2019,7 +2017,7 @@ prototipo è:
 La funzione attiva il salvataggio dei dati sul file indicato dal
 \textit{pathname} contenuti nella stringa puntata da \param{filename}; la
 funzione richiede che il processo abbia i privilegi di amministratore (è
 La funzione attiva il salvataggio dei dati sul file indicato dal
 \textit{pathname} contenuti nella stringa puntata da \param{filename}; la
 funzione richiede che il processo abbia i privilegi di amministratore (è
-necessaria la \itindex{capabilities} capability \const{CAP\_SYS\_PACCT}, vedi
+necessaria la \textit{capability} \const{CAP\_SYS\_PACCT}, vedi
 sez.~\ref{sec:proc_capabilities}). Se si specifica il valore \val{NULL} per
 \param{filename} il \textit{BSD accounting} viene invece disabilitato. Un
 semplice esempio per l'uso di questa funzione è riportato nel programma
 sez.~\ref{sec:proc_capabilities}). Se si specifica il valore \val{NULL} per
 \param{filename} il \textit{BSD accounting} viene invece disabilitato. Un
 semplice esempio per l'uso di questa funzione è riportato nel programma
@@ -2027,10 +2025,9 @@ semplice esempio per l'uso di questa funzione è riportato nel programma
 
 Quando si attiva la contabilità, il file che si indica deve esistere; esso
 verrà aperto in sola scrittura e le informazioni verranno registrate in
 
 Quando si attiva la contabilità, il file che si indica deve esistere; esso
 verrà aperto in sola scrittura e le informazioni verranno registrate in
-\itindex{append~mode} \textit{append} in coda al file tutte le volte che un
-processo termina. Le informazioni vengono salvate in formato binario, e
-corrispondono al contenuto della apposita struttura dati definita all'interno
-del kernel.
+\textit{append} in coda al file tutte le volte che un processo termina. Le
+informazioni vengono salvate in formato binario, e corrispondono al contenuto
+della apposita struttura dati definita all'interno del kernel.
 
 Il funzionamento di \func{acct} viene inoltre modificato da uno specifico
 parametro di sistema, modificabile attraverso \sysctlfile{kernel/acct} (o
 
 Il funzionamento di \func{acct} viene inoltre modificato da uno specifico
 parametro di sistema, modificabile attraverso \sysctlfile{kernel/acct} (o
@@ -2059,19 +2056,21 @@ gestione di data e ora.
 \subsection{La misura del tempo in Unix}
 \label{sec:sys_unix_time}
 
 \subsection{La misura del tempo in Unix}
 \label{sec:sys_unix_time}
 
+\itindbeg{calendar~time}
+
 Tradizionalmente nei sistemi unix-like sono sempre stati previsti due tipi
 distinti di tempi, caratterizzati da altrettante modalità di misura ed
 espressi con diversi tipi di dati, chiamati rispettivamente \textit{calendar
   time} e \textit{process time}, secondo le seguenti definizioni:
 \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
 
 Tradizionalmente nei sistemi unix-like sono sempre stati previsti due tipi
 distinti di tempi, caratterizzati da altrettante modalità di misura ed
 espressi con diversi tipi di dati, chiamati rispettivamente \textit{calendar
   time} e \textit{process time}, secondo le seguenti definizioni:
 \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
 
-\item[\textit{calendar time}] \itindex{calendar~time} detto anche
-  \textsl{tempo di calendario}, \textsl{tempo d'orologio} o \textit{tempo
-    reale}. Si tratta di un tempo assoluto o di un intervallo di tempo come lo
-  intende normalmente per le misure fatte con un orologio. Per esprimere
+\item[\textit{calendar time}] detto anche \textsl{tempo di calendario}, 
+  \textsl{tempo d'orologio} o \textit{tempo reale}. Si tratta di un
+  tempo assoluto o di un intervallo di tempo come lo intende
+  normalmente per le misure fatte con un orologio. Per esprimere
   questo tempo è stato riservato il tipo \type{time\_t}, e viene
   questo tempo è stato riservato il tipo \type{time\_t}, e viene
-  tradizionalmente misurato in secondi a partire dalla mezzanotte del primo
-  gennaio 1970, data che viene chiamata \textit{the Epoch}.
+  tradizionalmente misurato in secondi a partire dalla mezzanotte del
+  primo gennaio 1970, data che viene chiamata \textit{the Epoch}.
 
 \item[\textit{process time}] \itindex{process~time} detto anche \textsl{tempo
     di processore} o \textsl{tempo di CPU}. Si tratta del tempo impiegato da
 
 \item[\textit{process time}] \itindex{process~time} detto anche \textsl{tempo
     di processore} o \textsl{tempo di CPU}. Si tratta del tempo impiegato da
@@ -2083,14 +2082,15 @@ espressi con diversi tipi di dati, chiamati rispettivamente \textit{calendar
   precedente indica soltanto un intervallo di durata.
 \end{basedescript}
 
   precedente indica soltanto un intervallo di durata.
 \end{basedescript}
 
-Il \itindex{calendar~time} \textit{calendar time} viene sempre mantenuto
-facendo riferimento al cosiddetto \textit{tempo universale coordinato} UTC,
-anche se talvolta viene usato il cosiddetto GMT (\textit{Greenwich Mean Time})
-dato che l'UTC corrisponde all'ora locale di Greenwich. Si tratta del tempo su
-cui viene mantenuto il cosiddetto \textsl{orologio di sistema}, e viene usato
-per indicare i tempi dei file (quelli di sez.~\ref{sec:file_file_times}) o le
-date di avvio dei processi, ed è il tempo che viene usato dai demoni che
-compiono lavori amministrativi ad orari definito, come \cmd{cron}.
+Il \textit{calendar time} viene sempre mantenuto facendo riferimento
+al cosiddetto \textit{tempo universale coordinato} UTC, anche se
+talvolta viene usato il cosiddetto GMT (\textit{Greenwich Mean Time})
+dato che l'UTC corrisponde all'ora locale di Greenwich. Si tratta del
+tempo su cui viene mantenuto il cosiddetto \textsl{orologio di
+  sistema}, e viene usato per indicare i tempi dei file (quelli di
+sez.~\ref{sec:file_file_times}) o le date di avvio dei processi, ed è
+il tempo che viene usato dai demoni che compiono lavori amministrativi
+ad orari definito, come \cmd{cron}.
 
 Si tenga presente che questo tempo è mantenuto dal kernel e non è detto che
 corrisponda al tempo misurato dall'orologio hardware presente su praticamente
 
 Si tenga presente che questo tempo è mantenuto dal kernel e non è detto che
 corrisponda al tempo misurato dall'orologio hardware presente su praticamente
@@ -2112,6 +2112,8 @@ opportune informazioni di localizzazione (specificate in
 di sistema misuri sempre un tempo monotono crescente come nella realtà, anche
 in presenza di cambi di fusi orari.
 
 di sistema misuri sempre un tempo monotono crescente come nella realtà, anche
 in presenza di cambi di fusi orari.
 
+\itindend{calendar~time}
+
 Il \itindex{process~time} \textit{process time} invece indica sempre una
 misura di un lasso di tempo e viene usato per tenere conto dei tempi di
 esecuzione dei processi. Esso viene sempre diviso in \textit{user time} e
 Il \itindex{process~time} \textit{process time} invece indica sempre una
 misura di un lasso di tempo e viene usato per tenere conto dei tempi di
 esecuzione dei processi. Esso viene sempre diviso in \textit{user time} e
@@ -2120,7 +2122,7 @@ infatti calcola tre tempi:
 \begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}}
 \item[\textit{clock time}] il tempo \textsl{reale}, viene chiamato anche
   \textit{wall clock time} o \textit{elapsed time}, passato dall'avvio del
 \begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}}
 \item[\textit{clock time}] il tempo \textsl{reale}, viene chiamato anche
   \textit{wall clock time} o \textit{elapsed time}, passato dall'avvio del
-  processo. Questo tempo fa riferimento al \itindex{calendar~time}
+  processo. Questo tempo fa riferimento al 
   \textit{calendar time} e dice la durata effettiva dell'esecuzione del
   processo, ma chiaramente dipende dal carico del sistema e da quanti altri
   processi stanno girando nello stesso momento.
   \textit{calendar time} e dice la durata effettiva dell'esecuzione del
   processo, ma chiaramente dipende dal carico del sistema e da quanti altri
   processi stanno girando nello stesso momento.
@@ -2195,12 +2197,12 @@ sez.~\ref{sec:sig_timer_adv}.
 \itindbeg{process~time}
 
 Di norma tutte le operazioni del sistema fanno sempre riferimento al
 \itindbeg{process~time}
 
 Di norma tutte le operazioni del sistema fanno sempre riferimento al
-\itindex{calendar~time} \textit{calendar time}, l'uso del \textit{process
-  time} è riservato a quei casi in cui serve conoscere i tempi di esecuzione
-di un processo (ad esempio per valutarne l'efficienza). In tal caso infatti
-fare ricorso al \textit{calendar time} è inutile in quanto il tempo può essere
-trascorso mentre un altro processo era in esecuzione o in attesa del risultato
-di una operazione di I/O.
+\textit{calendar time}, l'uso del \textit{process time} è riservato a
+quei casi in cui serve conoscere i tempi di esecuzione di un processo
+(ad esempio per valutarne l'efficienza). In tal caso infatti fare
+ricorso al \textit{calendar time} è inutile in quanto il tempo può
+essere trascorso mentre un altro processo era in esecuzione o in
+attesa del risultato di una operazione di I/O.
 
 La funzione più semplice per leggere il \textit{process time} di un processo è
 \funcd{clock}, che da una valutazione approssimativa del tempo di CPU
 
 La funzione più semplice per leggere il \textit{process time} di un processo è
 \funcd{clock}, che da una valutazione approssimativa del tempo di CPU
@@ -2377,9 +2379,9 @@ sia necessario; il suo prototipo è:
 
 Dato che modificare l'ora ha un impatto su tutto il sistema il cambiamento
 dell'orologio è una operazione privilegiata e questa funzione può essere usata
 
 Dato che modificare l'ora ha un impatto su tutto il sistema il cambiamento
 dell'orologio è una operazione privilegiata e questa funzione può essere usata
-solo da un processo con i privilegi di amministratore (per la precisione la la
-\itindex{capabilities} capability \const{CAP\_SYS\_TIME}), altrimenti la
-chiamata fallirà con un errore di \errcode{EPERM}.
+solo da un processo con i privilegi di amministratore (per la precisione la
+\textit{capability} \const{CAP\_SYS\_TIME}), altrimenti la chiamata fallirà
+con un errore di \errcode{EPERM}.
 
 Data la scarsa precisione nell'uso di \type{time\_t}, che ha una risoluzione
 massima di un secondo, quando si devono effettuare operazioni sui tempi di
 
 Data la scarsa precisione nell'uso di \type{time\_t}, che ha una risoluzione
 massima di un secondo, quando si devono effettuare operazioni sui tempi di
@@ -2415,10 +2417,9 @@ non dipende dall'uso di queste strutture.
 
 Come nel caso di \func{stime} anche \func{settimeofday} può essere utilizzata
 solo da un processo coi privilegi di amministratore e più precisamente con la
 
 Come nel caso di \func{stime} anche \func{settimeofday} può essere utilizzata
 solo da un processo coi privilegi di amministratore e più precisamente con la
-\itindex{capability} capacità \const{CAP\_SYS\_TIME}. Si tratta comunque di
-una condizione generale che continua a valere per qualunque funzione che vada
-a modificare l'orologio di sistema, comprese tutte quelle che tratteremo in
-seguito.
+capacità \const{CAP\_SYS\_TIME}. Si tratta comunque di una condizione generale
+che continua a valere per qualunque funzione che vada a modificare l'orologio
+di sistema, comprese tutte quelle che tratteremo in seguito.
 
 Il secondo argomento di entrambe le funzioni è una struttura
 \struct{timezone}, che storicamente veniva utilizzata per specificare appunto
 
 Il secondo argomento di entrambe le funzioni è una struttura
 \struct{timezone}, che storicamente veniva utilizzata per specificare appunto