X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=system.tex;h=e8bd3703984be60bdee25011de9cd1a1d2126474;hp=6391861615fea46c486a14bcfdac023218986542;hb=b72f18d024a942eca58a8109c60479d835ee7350;hpb=9c8e87c281e632b8b9be81e8f27da473d1f544cb diff --git a/system.tex b/system.tex index 6391861..e8bd370 100644 --- a/system.tex +++ b/system.tex @@ -2,22 +2,73 @@ \label{cha:system} In questo capitolo si è raccolta le trattazione delle varie funzioni -concernenti la gestione generale del sistema che permettono di trattare -le varie informazioni ad esso connesse, come i limiti sulle risorse, la -gestione dei tempi, degli errori, degli utenti ed in generale dei vari -parametri di configurazione del sistema. +concernenti la gestione generale del sistema che permettono di trattare le +varie informazioni ad esso connesse, i limiti sulle risorse, la gestione dei +tempi, degli errori e degli utenti ed in generale la gestione dei vari +parametri di configurazione dei vari componenti del sistema. +\section{La gestione della configurazione del sistema} +\label{sec:sys_config} + + +\subsection{Opzioni e configurazione del systema} +\label{sec:sys_sys_config} + +La funzione \func{sysconf} ... + +\subsection{La configurazione dei file} +\label{sec:sys_file_config} + +La funzione \func{statfs} ... + +La funzione \func{pathconf} ... \section{La gestione delle risorse e dei limiti di sistema} \label{sec:sys_limits} -In questa sezione esamimeremo le funzioni che permettono di gestire le -varie risorse associate ad un processo ed i relativi limiti, e quelle -relatica al sistema in quanto tale. +In questa sezione esamimeremo le funzioni che permettono di gestire le varie +risorse associate ad un processo ed i relativi limiti, e quelle relatica al +sistema in quanto tale. +\begin{figure}[!htb] + \footnotesize + \centering + \begin{minipage}[c]{15cm} + \begin{lstlisting}[labelstep=0,frame=,indent=1cm]{} +struct rusage { + struct timeval ru_utime; /* user time used */ + struct timeval ru_stime; /* system time used */ + long ru_maxrss; /* maximum resident set size */ + long ru_ixrss; /* integral shared memory size */ + long ru_idrss; /* integral unshared data size */ + long ru_isrss; /* integral unshared stack size */ + long ru_minflt; /* page reclaims */ + long ru_majflt; /* page faults */ + long ru_nswap; /* swaps */ + long ru_inblock; /* block input operations */ + long ru_oublock; /* block output operations */ + long ru_msgsnd; /* messages sent */ + long ru_msgrcv; /* messages received */ + long ru_nsignals; ; /* signals received */ + long ru_nvcsw; /* voluntary context switches */ + long ru_nivcsw; /* involuntary context switches */ +}; + \end{lstlisting} + \end{minipage} + \normalsize + \caption{La struttura \var{rusage} per la lettura delle informazioni dei + delle risorse usate da un processo.} + \label{fig:sys_rusage_struct} +\end{figure} + + + + +\var{tms\_utime}, \var{tms\_stime}, \var{tms\_cutime}, \var{tms\_uetime} + \section{La gestione dei tempi del sistema} @@ -43,13 +94,13 @@ definizioni: dato che l'UTC corrisponde all'ora locale di Greenwich. È il tempo su cui viene mantenuto l'orologio del calcolatore, e viene usato ad esempio per indicare le date di modifica dei file o quelle di avvio dei processi. Per - memorizzare questo tempo è stato riservato il tipo primitivo \func{time\_t}. + memorizzare questo tempo è stato riservato il tipo primitivo \type{time\_t}. \item \textit{process time}: talvolta anche detto tempo di CPU. Viene misurato in \textit{clock tick}, corrispondenti al numero di interruzioni effettuate dal timer di sistema, e che per Linux avvengono ogni centesimo di secondo\footnote{eccetto per la piattaforma alpha dove avvengono ogni millesimo di secondo}. Il dato primitivo usato per questo tempo è - \func{clock\_t}, inoltre la costante \macro{HZ} restituisce la frequenza di + \type{clock\_t}, inoltre la costante \macro{HZ} restituisce la frequenza di operazione del timer, e corrisponde dunque al numero di tick al secondo. Lo standard POSIX definisce allo stesso modo la costante \macro{CLK\_TCK}); questo valore può comunque essere ottenuto con \func{sysconf} (vedi @@ -95,7 +146,7 @@ presenta una serie di problemi nel caso lo si debba usare con i thread. Esamineremo in questa sezione le sue caratteristiche principali. -\subsection{La variabile \func{errno}} +\subsection{La variabile \var{errno}} \label{sec:sys_errno} Quasi tutte le funzioni delle librerie del C sono in grado di individuare e @@ -149,8 +200,8 @@ riportare in opportuni messaggi le condizioni di errore verificatesi. La prima funzione che si può usare per ricavare i messaggi di errore è \func{strerror}, il cui prototipo è: \begin{prototype}{string.h}{char * strerror(int errnum)} - La funzione ritorna una stringa (statica) che descrive l'errore il cui - codice è passato come parametro. + Ritorna una stringa (statica) che descrive l'errore il cui codice è passato + come parametro. \end{prototype} In generale \func{strerror} viene usata passando \var{errno} come parametro; @@ -162,7 +213,7 @@ provvista\footnote{questa funzione standard POSIX} una versione apposita: \begin{prototype}{string.h} {char * strerror\_r(int errnum, char * buff, size\_t size)} - La funzione è analoga a \func{strerror} ma ritorna il messaggio in un buffer + Analoga a \func{strerror} ma ritorna il messaggio in un buffer specificato da \param{buff} di lunghezza massima (compreso il terminatore) \param{size}. \end{prototype} @@ -178,8 +229,8 @@ Una seconda funzione usata per riportare i codici di errore in maniera automatizzata sullo standard error (vedi \secref{sec:file_std_descr}) è \func{perror}, il cui prototipo è: \begin{prototype}{stdio.h}{void perror (const char *message)} - La funzione stampa il messaggio di errore relativo al valore corrente di - \var{errno} sullo standard error; preceduto dalla stringa \var{message}. + Stampa il messaggio di errore relativo al valore corrente di \var{errno} + sullo standard error; preceduto dalla stringa \var{message}. \end{prototype} i messaggi di errore stampati sono gli stessi di \func{strerror}, (riportati in \capref{cha:errors}), e, usando il valore corrente di \var{errno}, si @@ -234,3 +285,8 @@ o la macro (\texttt{\small 15--17}) associate a quel codice. \caption{Codice per la stampa del messaggio di errore standard.} \label{fig:sys_err_mess} \end{figure} + + +\section{La gestione di utenti e gruppi} +\label{sec:sys_user_group} +