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
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}
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
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}
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}}
-\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
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}.
\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
\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
\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,