Molte correzioni ed risistemazioni indici. Inizio trattazione dei
[gapil.git] / system.tex
index 46b1bcec853b4bed21ec76d4a8fce0133b429465..664c26afc4bc375b48f00bbfa8e42135b19e5e43 100644 (file)
@@ -1,6 +1,6 @@
 %% system.tex
 %%
 %% system.tex
 %%
-%% Copyright (C) 2000-2008 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2010 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -528,9 +528,9 @@ fig.~\ref{fig:sys_utsname}, solo definendo \macro{\_GNU\_SOURCE}.
   \label{fig:sys_utsname}
 \end{figure}
 
   \label{fig:sys_utsname}
 \end{figure}
 
-In generale si tenga presente che le dimensioni delle stringe di una
-\struct{utsname} non è specificata, e che esse sono sempre terminate con NUL;
-il manuale delle \acr{glibc} indica due diverse dimensioni,
+In generale si tenga presente che le dimensioni delle stringhe di una
+struttura \struct{utsname} non è specificata, e che esse sono sempre terminate
+con NUL; il manuale delle \acr{glibc} indica due diverse dimensioni,
 \const{\_UTSNAME\_LENGTH} per i campi standard e
 \const{\_UTSNAME\_DOMAIN\_LENGTH} per quello specifico per il nome di dominio;
 altri sistemi usano nomi diversi come \const{SYS\_NMLN} o \const{\_SYS\_NMLN}
 \const{\_UTSNAME\_LENGTH} per i campi standard e
 \const{\_UTSNAME\_DOMAIN\_LENGTH} per quello specifico per il nome di dominio;
 altri sistemi usano nomi diversi come \const{SYS\_NMLN} o \const{\_SYS\_NMLN}
@@ -559,6 +559,7 @@ lettura.  Affronteremo questi argomenti in questa sezione, insieme alle
 funzioni che si usano per il controllo di altre caratteristiche generali del
 sistema, come quelle per la gestione dei filesystem e di utenti e gruppi.
 
 funzioni che si usano per il controllo di altre caratteristiche generali del
 sistema, come quelle per la gestione dei filesystem e di utenti e gruppi.
 
+% TODO ristrutturare e aggiungere \func{prctl}
 
 \subsection{La funzione \func{sysctl} ed il filesystem \file{/proc}}
 \label{sec:sys_sysctl}
 
 \subsection{La funzione \func{sysctl} ed il filesystem \file{/proc}}
 \label{sec:sys_sysctl}
@@ -661,8 +662,8 @@ inclusa nei sorgenti del kernel, nella directory \file{Documentation/sysctl}.
 
 Ma oltre alle informazioni ottenibili da \func{sysctl} dentro \file{proc} sono
 disponibili moltissime altre informazioni, fra cui ad esempio anche quelle
 
 Ma oltre alle informazioni ottenibili da \func{sysctl} dentro \file{proc} sono
 disponibili moltissime altre informazioni, fra cui ad esempio anche quelle
-fornite da \func{uname} (vedi sez.~\ref{sec:sys_config}) che sono mantenute
-nei file \procrelfile{/proc/sys/kernel}{ostype},
+fornite da \func{uname} (vedi sez.~\ref{sec:sys_uname}) che sono mantenute nei
+file \procrelfile{/proc/sys/kernel}{ostype},
 \procrelfile{/proc/sys/kernel}{hostname},
 \procrelfile{/proc/sys/kernel}{osrelease},
 \procrelfile{/proc/sys/kernel}{version} e
 \procrelfile{/proc/sys/kernel}{hostname},
 \procrelfile{/proc/sys/kernel}{osrelease},
 \procrelfile{/proc/sys/kernel}{version} e
@@ -922,9 +923,16 @@ semplice invocare direttamente il programma \cmd{mount}, per cui ne
 tralasceremo la trattazione, rimandando al manuale delle \acr{glibc}
 \cite{glibc} per la documentazione completa.
 
 tralasceremo la trattazione, rimandando al manuale delle \acr{glibc}
 \cite{glibc} per la documentazione completa.
 
+% TODO scrivere relativamente alle varie funzioni (getfsent e getmntent &C)
+% TODO documentare swapon e swapoff (man 2 ...)
+
+
+% TODO documentare keyctl ????
+% (fare sezione dedicata ????)
+%\subsection{La gestione delle chiavi}
+%\label{sec:keyctl_management}
 
 
 
 
-% TODO scrivere relativamente alle varie funzioni (getfsent e getmntent &C)
 
 \subsection{La gestione delle informazioni su utenti e gruppi}
 \label{sec:sys_user_group}
 
 \subsection{La gestione delle informazioni su utenti e gruppi}
 \label{sec:sys_user_group}
@@ -1420,7 +1428,7 @@ In genere includere esplicitamente \file{<sys/time.h>} non 
 necessario, ma aumenta la portabilità, e serve comunque quando, come nella
 maggior parte dei casi, si debba accedere ai campi di \struct{rusage} relativi
 ai tempi di utilizzo del processore, che sono definiti come strutture di tipo
 necessario, ma aumenta la portabilità, e serve comunque quando, come nella
 maggior parte dei casi, si debba accedere ai campi di \struct{rusage} relativi
 ai tempi di utilizzo del processore, che sono definiti come strutture di tipo
-\struct{timeval}.
+\struct{timeval} (vedi fig.~\ref{fig:sys_timeval_struct}).
 
 Questa è la stessa struttura utilizzata da \func{wait4} (si ricordi quando
 visto in sez.~\ref{sec:proc_wait}) per ricavare la quantità di risorse
 
 Questa è la stessa struttura utilizzata da \func{wait4} (si ricordi quando
 visto in sez.~\ref{sec:proc_wait}) per ricavare la quantità di risorse
@@ -1496,9 +1504,11 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard
                               sez.~\ref{sec:sys_cpu_times}) che il processo può
                               usare. Il superamento del limite corrente
                               comporta l'emissione di un segnale di
                               sez.~\ref{sec:sys_cpu_times}) che il processo può
                               usare. Il superamento del limite corrente
                               comporta l'emissione di un segnale di
-                              \const{SIGXCPU} la cui azione predefinita (vedi
+                              \const{SIGXCPU}, la cui azione predefinita (vedi
                               sez.~\ref{sec:sig_classification}) è terminare
                               sez.~\ref{sec:sig_classification}) è terminare
-                              il processo. Il superamento del limite massimo
+                              il processo, una volta al secondo fino al
+                              raggiungimento del limite massimo. Il
+                              superamento del limite massimo 
                               comporta l'emissione di un segnale di
                               \const{SIGKILL}.\footnotemark\\
     \const{RLIMIT\_DATA}   &  La massima dimensione del \index{segmento!dati}
                               comporta l'emissione di un segnale di
                               \const{SIGKILL}.\footnotemark\\
     \const{RLIMIT\_DATA}   &  La massima dimensione del \index{segmento!dati}
@@ -1529,6 +1539,12 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard
                               sez.~\ref{sec:ipc_sysv_shm}) che viene
                               contabilizzata separatamente ma sulla quale
                               viene applicato questo stesso limite.\\ 
                               sez.~\ref{sec:ipc_sysv_shm}) che viene
                               contabilizzata separatamente ma sulla quale
                               viene applicato questo stesso limite.\\ 
+% TODO trattare i seguenti...
+%    \const{RLIMIT\_MSGQUEUE}& Il numero massimo di \\
+%    \const{RLIMIT\_NICE}& Il numero massimo di \\
+%    \const{RLIMIT\_RTPRIO}& Il numero massimo di \\
+% aggiungere i limiti che mancano come RLIMIT_RTTIME introdotto con il 2.6.25
+% vedi file include/asm-generic/resource.h
     \const{RLIMIT\_NOFILE} &  Il numero massimo di file che il processo può
                               aprire. L'apertura di un ulteriore file farà
                               fallire la funzione (\func{open}, \func{dup} o
     \const{RLIMIT\_NOFILE} &  Il numero massimo di file che il processo può
                               aprire. L'apertura di un ulteriore file farà
                               fallire la funzione (\func{open}, \func{dup} o
@@ -1555,6 +1571,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard
                               qualora ci fosse un surplus di memoria questa
                               verrebbe assegnata.\\ 
 % TODO integrare con la roba di madvise
                               qualora ci fosse un surplus di memoria questa
                               verrebbe assegnata.\\ 
 % TODO integrare con la roba di madvise
+% TODO integrare con le ultime aggiunte, vedi pagina di manuale
     \hline
   \end{tabular}
   \caption{Valori possibili dell'argomento \param{resource} delle funzioni
     \hline
   \end{tabular}
   \caption{Valori possibili dell'argomento \param{resource} delle funzioni
@@ -1565,14 +1582,12 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard
 \footnotetext[18]{questo è quanto avviene per i kernel dalla serie 2.2 fino ad
   oggi (la 2.6.x); altri kernel possono avere comportamenti diversi per quanto
   avviene quando viene superato il \textit{soft limit}; perciò per avere
 \footnotetext[18]{questo è quanto avviene per i kernel dalla serie 2.2 fino ad
   oggi (la 2.6.x); altri kernel possono avere comportamenti diversi per quanto
   avviene quando viene superato il \textit{soft limit}; perciò per avere
-  operazioni portabili è sempre opportuno intercettare \const{SIGXCPU} e
-  terminare in maniera ordinata il processo.}
+  operazioni portabili è sempre opportuno intercettare il primo
+  \const{SIGXCPU} e terminare in maniera ordinata il processo.}
 
 \footnotetext{il limite su questa risorsa è stato introdotto con il kernel
   2.6.8.}
 
 
 \footnotetext{il limite su questa risorsa è stato introdotto con il kernel
   2.6.8.}
 
-% aggiungere i limiti che mancano come RLIMIT_RTTIME introdotto con il 2.6.25
-% vedi file include/asm-generic/resource.h
 
 In generale il superamento di un limite corrente\footnote{di norma quanto
   riportato in tab.~\ref{tab:sys_rlimit_values} fa riferimento a quanto
 
 In generale il superamento di un limite corrente\footnote{di norma quanto
   riportato in tab.~\ref{tab:sys_rlimit_values} fa riferimento a quanto
@@ -1636,12 +1651,13 @@ Nello specificare un limite, oltre a fornire dei valori specifici, si pu
 anche usare la costante \const{RLIM\_INFINITY} che permette di sbloccare l'uso
 di una risorsa; ma si ricordi che solo un processo con i privilegi di
 amministratore\footnote{per essere precisi in questo caso quello che serve è
 anche usare la costante \const{RLIM\_INFINITY} che permette di sbloccare l'uso
 di una risorsa; ma si ricordi che solo un processo con i privilegi di
 amministratore\footnote{per essere precisi in questo caso quello che serve è
-  la \itindex{capabilities} \textit{capability} \const{CAP\_SYS\_RESOURCE}.}
-può innalzare un limite al di sopra del valore corrente del limite massimo ed
-usare un valore qualsiasi per entrambi i limiti. Si tenga conto infine che
-tutti i limiti vengono ereditati dal processo padre attraverso una \func{fork}
-(vedi sez.~\ref{sec:proc_fork}) e mantenuti per gli altri programmi eseguiti
-attraverso una \func{exec} (vedi sez.~\ref{sec:proc_exec}).
+  la \itindex{capabilities} \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. Si tenga conto infine che tutti i limiti vengono ereditati
+dal processo padre attraverso una \func{fork} (vedi sez.~\ref{sec:proc_fork})
+e mantenuti per gli altri programmi eseguiti attraverso una \func{exec} (vedi
+sez.~\ref{sec:proc_exec}).
 
 
 \subsection{Le risorse di memoria e processore}
 
 
 \subsection{Le risorse di memoria e processore}
@@ -1797,6 +1813,10 @@ minimo indicato dal secondo valore (sempre in percentuale di spazio disco
 libero). Infine l'ultimo valore indica la frequenza in secondi con cui deve
 essere controllata detta percentuale.
 
 libero). Infine l'ultimo valore indica la frequenza in secondi con cui deve
 essere controllata detta percentuale.
 
+% TODO trattare quote disco 
+% vedi man quotactl
+%\section{La gestione delle quote disco}
+%\label{sec:disk_quota}
 
 
 
 
 
 
@@ -1816,10 +1836,10 @@ gestione di data e ora.
 
 Storicamente i sistemi unix-like hanno sempre mantenuto due distinti tipi di
 dati per la misure dei tempi all'interno del sistema: essi sono
 
 Storicamente i sistemi unix-like hanno sempre mantenuto due distinti tipi di
 dati per la misure dei tempi all'interno del sistema: essi sono
-rispettivamente chiamati \itindend{calendar~time} \textit{calendar time} e
+rispettivamente chiamati \itindex{calendar~time} \textit{calendar time} e
 \itindex{process~time} \textit{process time}, secondo le definizioni:
 \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
 \itindex{process~time} \textit{process time}, secondo le definizioni:
 \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
-\item[\textit{calendar time}] \itindend{calendar~time} detto anche
+\item[\textit{calendar time}] \itindex{calendar~time} detto anche
   \textsl{tempo di calendario}. È il numero di secondi dalla mezzanotte del
   primo gennaio 1970, in tempo universale coordinato (o UTC), data che viene
   usualmente indicata con 00:00:00 Jan, 1 1970 (UTC) e chiamata \textit{the
   \textsl{tempo di calendario}. È il numero di secondi dalla mezzanotte del
   primo gennaio 1970, in tempo universale coordinato (o UTC), data che viene
   usualmente indicata con 00:00:00 Jan, 1 1970 (UTC) e chiamata \textit{the
@@ -1844,7 +1864,7 @@ rispettivamente chiamati \itindend{calendar~time} \textit{calendar time} e
   obsoleto.
 \end{basedescript}
 
   obsoleto.
 \end{basedescript}
 
-In genere si usa il \itindend{calendar~time} \textit{calendar time} per
+In genere si usa il \itindex{calendar~time} \textit{calendar time} per
 esprimere le date dei file e le informazioni analoghe che riguardano i
 cosiddetti \textsl{tempi di orologio}, che vengono usati ad esempio per i
 demoni che compiono lavori amministrativi ad ore definite, come \cmd{cron}.
 esprimere le date dei file e le informazioni analoghe che riguardano i
 cosiddetti \textsl{tempi di orologio}, che vengono usati ad esempio per i
 demoni che compiono lavori amministrativi ad ore definite, come \cmd{cron}.
@@ -1892,7 +1912,7 @@ del comando \cmd{time}.
 \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
-\itindend{calendar~time} \textit{calendar time}, l'uso del \textit{process
+\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
   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
@@ -1970,7 +1990,10 @@ lo stato di terminazione di tutti i suoi figli, questi processi
 \itindbeg{calendar~time}
 
 Come anticipato in sez.~\ref{sec:sys_unix_time} il \textit{calendar time} è
 \itindbeg{calendar~time}
 
 Come anticipato in sez.~\ref{sec:sys_unix_time} il \textit{calendar time} è
-mantenuto dal kernel in una variabile di tipo \type{time\_t}, che usualmente
+mantenuto dal kernel in una variabile di tipo \type{time\_t},\footnote{in
+  realtà il kernel usa una rappresentazione interna di che fornisce una
+  precisione molto maggiore, e consente per questo anche di usare
+  rappresentazioni diverse del \textit{calendar time}.} che usualmente
 corrisponde ad un tipo elementare (in Linux è definito come \ctyp{long int},
 che di norma corrisponde a 32 bit).  Il valore corrente del \textit{calendar
   time}, che indicheremo come \textsl{tempo di sistema}, può essere ottenuto
 corrisponde ad un tipo elementare (in Linux è definito come \ctyp{long int},
 che di norma corrisponde a 32 bit).  Il valore corrente del \textit{calendar
   time}, che indicheremo come \textsl{tempo di sistema}, può essere ottenuto
@@ -2026,30 +2049,19 @@ sono:
     \errval{EPERM}.}
 \end{functions}
 
     \errval{EPERM}.}
 \end{functions}
 
-Queste funzioni utilizzano una struttura di tipo \struct{timeval}, la cui
-definizione, insieme a quella della analoga \struct{timespec}, è riportata in
-fig.~\ref{fig:sys_timeval_struct}. Le \acr{glibc} infatti forniscono queste due
-rappresentazioni alternative del \textit{calendar time} che rispetto a
-\type{time\_t} consentono rispettivamente precisioni del microsecondo e del
-nanosecondo.\footnote{la precisione è solo teorica, la precisione reale della
-  misura del tempo dell'orologio di sistema non dipende dall'uso di queste
-  strutture.}
-
-\begin{figure}[!htb]
-  \footnotesize \centering
-  \begin{minipage}[c]{15cm}
-    \includestruct{listati/timeval.h}
-  \end{minipage} 
-  \normalsize 
-  \caption{Le strutture \structd{timeval} e \structd{timespec} usate per una
-    rappresentazione ad alta risoluzione del \textit{calendar time}.}
-  \label{fig:sys_timeval_struct}
-\end{figure}
+Si noti come queste funzioni utilizzino per indicare il tempo una struttura di
+tipo \struct{timeval}, la cui definizione si è già vista in
+fig.~\ref{fig:sys_timeval_struct}, questa infatti permette una espressione
+alternativa dei valori del \textit{calendar time}, con una precisione,
+rispetto a \type{time\_t}, fino al microsecondo.\footnote{la precisione è solo
+  teorica, la precisione reale della misura del tempo dell'orologio di sistema
+  non dipende dall'uso di queste strutture.}
 
 Come nel caso di \func{stime} anche \func{settimeofday} (la cosa continua a
 valere per qualunque funzione che vada a modificare l'orologio di sistema,
 quindi anche per quelle che tratteremo in seguito) può essere utilizzata solo
 
 Come nel caso di \func{stime} anche \func{settimeofday} (la cosa continua a
 valere per qualunque funzione che vada a modificare l'orologio di sistema,
 quindi anche per quelle che tratteremo in seguito) può essere utilizzata solo
-da un processo coi privilegi di amministratore.
+da un processo coi privilegi di amministratore.\footnote{più precisamente la
+  capabitity \const{CAP\_SYS\_TIME}.}
 
 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