X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=system.tex;h=cd62e7c97e325d3c8a6334ecaca66d0100c85d56;hp=12ed77c9fe12256b9b7a3dce63c7719011a79ef3;hb=4cbeb0e4fa1d31da798c8e68108eb6785586ab34;hpb=af4cf2bcebfaf023cc182b8370b978194e8027f7 diff --git a/system.tex b/system.tex index 12ed77c..cd62e7c 100644 --- a/system.tex +++ b/system.tex @@ -520,7 +520,7 @@ fig.~\ref{fig:sys_utsname}, solo definendo \macro{\_GNU\_SOURCE}. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/ustname.h} \end{minipage} \normalsize @@ -899,7 +899,7 @@ genere è il nome del filesystem stesso. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/statfs.h} \end{minipage} \normalsize @@ -929,9 +929,13 @@ tralasceremo la trattazione, rimandando al manuale delle \acr{glibc} % TODO documentare keyctl ???? % (fare sezione dedicata ????) -%\subsection{La gestione delle chiavi} +%\subsection{La gestione delle chiavi crittografiche} %\label{sec:keyctl_management} +% +% \subsection{La gestione dello spegnimento e del riavvio} +%\label{sec:sys_reboot} +% TODO trattare reboot, kexec_load, ... \subsection{La gestione delle informazioni su utenti e gruppi} @@ -1015,7 +1019,7 @@ illustrato il significato dei vari campi. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/passwd.h} \end{minipage} \normalsize @@ -1093,7 +1097,7 @@ fig.~\ref{fig:sys_group_struct}. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/group.h} \end{minipage} \normalsize @@ -1274,7 +1278,7 @@ disponibile; le altre due permettono di eseguire una ricerca. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/utmp.h} \end{minipage} \normalsize @@ -1395,7 +1399,7 @@ di tipo \struct{rusage}, la cui definizione (che si trova in \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/rusage.h} \end{minipage} \normalsize @@ -1492,7 +1496,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard \errcode{ENOMEM}, mentre se il superamento viene causato dalla crescita dello \itindex{stack} \textit{stack} il processo riceverà un segnale di - \const{SIGSEGV}.\\ + \signal{SIGSEGV}.\\ \const{RLIMIT\_CORE} & La massima dimensione per di un file di \itindex{core~dump} \textit{core dump} (vedi sez.~\ref{sec:sig_prog_error}) creato nella @@ -1504,13 +1508,13 @@ 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 - \const{SIGXCPU}, la cui azione predefinita (vedi + \signal{SIGXCPU}, la cui azione predefinita (vedi sez.~\ref{sec:sig_classification}) è terminare 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\\ + \signal{SIGKILL}.\footnotemark\\ \const{RLIMIT\_DATA} & La massima dimensione del \index{segmento!dati} segmento dati di un processo (vedi sez.~\ref{sec:proc_mem_layout}). @@ -1521,7 +1525,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard \const{RLIMIT\_FSIZE} & La massima dimensione di un file che un processo può creare. Se il processo cerca di scrivere oltre questa dimensione riceverà un segnale di - \const{SIGXFSZ}, che di norma termina il + \signal{SIGXFSZ}, che di norma termina il processo; se questo viene intercettato la system call che ha causato l'errore fallirà con un errore di \errcode{EFBIG}.\\ @@ -1564,7 +1568,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard \textit{stack} del processo. Se il processo esegue operazioni che estendano lo \textit{stack} oltre questa dimensione - riceverà un segnale di \const{SIGSEGV}.\\ + riceverà un segnale di \signal{SIGSEGV}.\\ \const{RLIMIT\_RSS} & L'ammontare massimo di pagine di memoria dato al \index{segmento!testo} testo del processo. Il limite è solo una indicazione per il kernel, @@ -1583,7 +1587,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard 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 il primo - \const{SIGXCPU} e terminare in maniera ordinata il processo.} + \signal{SIGXCPU} e terminare in maniera ordinata il processo.} \footnotetext{il limite su questa risorsa è stato introdotto con il kernel 2.6.8.} @@ -1640,7 +1644,7 @@ limite corrente e limite massimo. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/rlimit.h} \end{minipage} \normalsize @@ -1794,7 +1798,7 @@ La funzione attiva il salvataggio dei dati sul file indicato dal 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 -sez.~\ref{sec:proc_capabilities}). Se si specifica il valore \const{NULL} per +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 \texttt{AcctCtrl.c} dei sorgenti allegati alla guida. @@ -1935,6 +1939,8 @@ costante \const{CLOCKS\_PER\_SEC}.\footnote{le \acr{glibc} seguono lo standard valore massimo corrispondente a circa 72 minuti, dopo i quali il contatore riprenderà lo stesso valore iniziale. +% TODO questi valori sono obsoleti, verificare il tutto. + Come accennato in sez.~\ref{sec:sys_unix_time} il tempo di CPU è la somma di altri due tempi, l'\textit{user time} ed il \textit{system time} che sono quelli effettivamente mantenuti dal kernel per ciascun processo. Questi @@ -1957,7 +1963,7 @@ sez.~\ref{sec:sys_unix_time}. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/tms.h} \end{minipage} \normalsize @@ -2099,7 +2105,7 @@ effettuato. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/timex.h} \end{minipage} \normalsize @@ -2278,7 +2284,7 @@ tempo in una stringa contenente data ed ora, i loro prototipi sono: \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/tm.h} \end{minipage} \normalsize @@ -2320,10 +2326,11 @@ restituita la conversione. Come mostrato in fig.~\ref{fig:sys_tm_struct} il \textit{broken-down time} permette di tenere conto anche della differenza fra tempo universale e ora locale, compresa l'eventuale ora legale. Questo viene fatto attraverso le tre -variabili globali mostrate in fig.~\ref{fig:sys_tzname}, cui si accede quando -si include \file{time.h}. Queste variabili vengono impostate quando si chiama -una delle precedenti funzioni di conversione, oppure invocando direttamente la -funzione \funcd{tzset}, il cui prototipo è: +\index{variabili!globali} variabili globali mostrate in +fig.~\ref{fig:sys_tzname}, cui si accede quando si include +\file{time.h}. Queste variabili vengono impostate quando si chiama una delle +precedenti funzioni di conversione, oppure invocando direttamente la funzione +\funcd{tzset}, il cui prototipo è: \begin{prototype}{sys/timex.h} {void tzset(void)} @@ -2339,12 +2346,12 @@ verrà usato il file \conffile{/etc/localtime}. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/time_zone_var.c} \end{minipage} \normalsize - \caption{Le variabili globali usate per la gestione delle \textit{time - zone}.} + \caption{Le \index{variabili!globali} variabili globali usate per la + gestione delle \textit{time zone}.} \label{fig:sys_tzname} \end{figure} @@ -2459,12 +2466,12 @@ c'è stato un errore. Di solito questo valore è -1 o un puntatore nullo o la costante \val{EOF} (a seconda della funzione); ma questo valore segnala solo che c'è stato un errore, non il tipo di errore. -Per riportare il tipo di errore il sistema usa la variabile globale -\var{errno},\footnote{l'uso di una variabile globale può comportare alcuni - problemi (ad esempio nel caso dei \itindex{thread} \textit{thread}) ma lo - standard ISO C consente anche di definire \var{errno} come un - \textit{modifiable lvalue}, quindi si può anche usare una macro, e questo è - infatti il modo usato da Linux per renderla locale ai singoli +Per riportare il tipo di errore il sistema usa \index{variabili!globali} la +variabile globale \var{errno},\footnote{l'uso di una variabile globale può + comportare alcuni problemi (ad esempio nel caso dei \itindex{thread} + \textit{thread}) ma lo standard ISO C consente anche di definire \var{errno} + come un \textit{modifiable lvalue}, quindi si può anche usare una macro, e + questo è infatti il modo usato da Linux per renderla locale ai singoli \itindex{thread} \textit{thread}.} definita nell'header \file{errno.h}; la variabile è in genere definita come \direct{volatile} dato che può essere cambiata in modo asincrono da un segnale (si veda sez.~\ref{sec:sig_sigchld} @@ -2573,16 +2580,17 @@ riferiscono all'ultimo errore avvenuto. La stringa specificata con \param{message} viene stampato prima del messaggio d'errore, seguita dai due punti e da uno spazio, il messaggio è terminato con un a capo. -Il messaggio può essere riportato anche usando le due variabili globali: +Il messaggio può essere riportato anche usando le due +\index{variabili!globali} variabili globali: \includecodesnip{listati/errlist.c} dichiarate in \file{errno.h}. La prima contiene i puntatori alle stringhe di errore indicizzati da \var{errno}; la seconda esprime il valore più alto per un codice di errore, l'utilizzo di questa stringa è sostanzialmente equivalente a quello di \func{strerror}. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/errcode_mess.c} \end{minipage} \normalsize @@ -2642,8 +2650,9 @@ l'argomento \param{format} prende la stessa sintassi di \func{printf}, ed i relativi argomenti devono essere forniti allo stesso modo, mentre \param{errnum} indica l'errore che si vuole segnalare (non viene quindi usato il valore corrente di \var{errno}); la funzione stampa sullo standard error il -nome del programma, come indicato dalla variabile globale \var{program\_name}, -seguito da due punti ed uno spazio, poi dalla stringa generata da +nome del programma, come indicato dalla \index{variabili!globali} variabile +globale \var{program\_name}, seguito da due punti ed uno spazio, poi dalla +stringa generata da \param{format} e dagli argomenti seguenti, seguita da due punti ed uno spazio infine il messaggio di errore relativo ad \param{errnum}, il tutto è terminato da un a capo. @@ -2657,8 +2666,8 @@ L'argomento \param{status} può essere usato per terminare direttamente il programma in caso di errore, nel qual caso \func{error} dopo la stampa del messaggio di errore chiama \func{exit} con questo stato di uscita. Se invece il valore è nullo \func{error} ritorna normalmente ma viene incrementata -un'altra variabile globale, \var{error\_message\_count}, che tiene conto di -quanti errori ci sono stati. +un'altra \index{variabili!globali} variabile globale, +\var{error\_message\_count}, che tiene conto di quanti errori ci sono stati. Un'altra funzione per la stampa degli errori, ancora più sofisticata, che prende due argomenti aggiuntivi per indicare linea e file su cui è avvenuto @@ -2674,9 +2683,10 @@ Stampa un messaggio di errore formattato. \noindent ed il suo comportamento è identico a quello di \func{error} se non per il fatto che, separati con il solito due punti-spazio, vengono inseriti un nome di file indicato da \param{fname} ed un numero di linea subito dopo la -stampa del nome del programma. Inoltre essa usa un'altra variabile globale, -\var{error\_one\_per\_line}, che impostata ad un valore diverso da zero fa si -che errori relativi alla stessa linea non vengano ripetuti. +stampa del nome del programma. Inoltre essa usa un'altra +\index{variabili!globali} variabile globale, \var{error\_one\_per\_line}, che +impostata ad un valore diverso da zero fa si che errori relativi alla stessa +linea non vengano ripetuti. % LocalWords: filesystem like kernel saved header limits sysconf sez tab float