X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=system.tex;h=e5fe228b30d7bd41f80270be16f10a1bc2c37b4b;hp=03d1bed3556382319ccf57f0471e4ff57d99cff3;hb=6377acba6d39c62ceff07a420e0028bf6e03408c;hpb=da0899b61653d07d75c8df134906261f1afd2485 diff --git a/system.tex b/system.tex index 03d1bed..e5fe228 100644 --- a/system.tex +++ b/system.tex @@ -42,7 +42,7 @@ quelle della gestione dei file. \subsection{Limiti e parametri di sistema} \label{sec:sys_limits} -Quando si devono determinare le le caratteristiche generali del sistema ci si +Quando si devono determinare le caratteristiche generali del sistema ci si trova di fronte a diverse possibilità; alcune di queste infatti possono dipendere dall'architettura dell'hardware (come le dimensioni dei tipi interi), o dal sistema operativo (come la presenza o meno del gruppo degli @@ -157,7 +157,7 @@ file, riportate in \tabref{tab:sys_file_macro}). \begin{table}[htb] \centering \footnotesize - \begin{tabular}[c]{|l|r|p{8cm}|} + \begin{tabular}[c]{|l|r|p{7cm}|} \hline \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\ \hline @@ -201,7 +201,7 @@ riportati in \tabref{tab:sys_posix1_general}. \begin{table}[htb] \centering \footnotesize - \begin{tabular}[c]{|l|r|p{8cm}|} + \begin{tabular}[c]{|l|r|p{7cm}|} \hline \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\ \hline @@ -366,7 +366,7 @@ sostituendolo a \code{\_POSIX\_} per le macro definite dagli gli altri due. In generale si dovrebbe fare uso di \func{sysconf} solo quando la relativa macro non è definita, quindi con un codice analogo al seguente: %\footnotesize -\begin{lstlisting}[labelstep=0,frame=,indent=1cm]{} +\begin{lstlisting}[stepnumber=0,frame=]{} get_child_max(void) { #ifdef CHILD_MAX @@ -521,7 +521,7 @@ solo definendo \macro{\_GNU\_SOURCE}. \begin{figure}[!htb] \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} struct utsname { char sysname[]; char nodename[]; @@ -606,7 +606,7 @@ Legge o scrive uno dei parametri di sistema. \end{functions} I parametri a cui la funzione permettere di accedere sono organizzati in -maniera gerarchica all'interno un albero;\footnote{si tenga presente che +maniera gerarchica all'interno di un albero;\footnote{si tenga presente che includendo solo \file{unistd.h}, saranno definiti solo i parametri generici; dato che ce ne sono molti specifici dell'implementazione, nel caso di Linux occorrerà includere anche i file \file{linux/unistd.h} e @@ -620,7 +620,7 @@ arriva ad identificare un parametro specifico attraverso l'array \param{name}, di lunghezza \param{nlen}, che contiene la sequenza dei vari nodi da attraversare. Ogni parametro ha un valore in un formato specifico che può essere un intero, una stringa o anche una struttura -complessa, per questo motivo il valori vengono passati come puntatori +complessa, per questo motivo i valori vengono passati come puntatori \ctyp{void}. L'indirizzo a cui il valore corrente del parametro deve essere letto è @@ -896,7 +896,7 @@ genere \begin{figure}[!htb] \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} struct statfs { long f_type; /* tipo di filesystem */ long f_bsize; /* dimensione ottimale dei blocchi di I/O */ @@ -983,7 +983,7 @@ il significato dei vari campi. \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} struct passwd { char *pw_name; /* user name */ char *pw_passwd; /* user password */ @@ -1070,7 +1070,7 @@ in questo caso le informazioni vengono restituite in una struttura di tipo \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} struct group { char *gr_name; /* group name */ char *gr_passwd; /* group password */ @@ -1239,7 +1239,7 @@ eseguire una ricerca. \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} struct utmp { short int ut_type; /* Type of login. */ @@ -1377,7 +1377,7 @@ di tipo \struct{rusage}, la cui definizione (che si trova in \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} struct rusage { struct timeval ru_utime; /* user time used */ struct timeval ru_stime; /* system time used */ @@ -1467,13 +1467,13 @@ detto \textsl{duro} (o \textit{hard limit}), in quanto un processo normale non può modificarne il valore. Il valore di questi limiti è mantenuto in una struttura \struct{rlimit}, la cui definizione è riportata in \figref{fig:sys_rlimit_struct}, ed i cui campi corrispondono appunto a limite -corrente e massimo. +corrente e limite massimo. \begin{figure}[!htb] \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} struct rlimit { rlim_t rlim_cur; rlim_t rlim_max; @@ -1578,13 +1578,13 @@ poi effettuato attraverso la struttura \struct{rlimit} puntata da evitare la creazione di \file{core} file (al proposito si veda \secref{sec:sig_prog_error}).} -Nello specificare un limite, oltre a 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 -può innalzare un limite al di sopra del valore corrente del limite massimo. Si -tenga conto infine che tutti i limiti vengono ereditati dal processo padre -attraverso una \func{fork} (vedi \secref{sec:proc_fork}) e mantenuti per gli -altri programmi eseguiti attraverso una \func{exec} (vedi +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 può innalzare un limite al di sopra del valore corrente del +limite massimo. Si tenga conto infine che tutti i limiti vengono ereditati dal +processo padre attraverso una \func{fork} (vedi \secref{sec:proc_fork}) e +mantenuti per gli altri programmi eseguiti attraverso una \func{exec} (vedi \secref{sec:proc_exec}). @@ -1808,7 +1808,7 @@ struttura di tipo \struct{tms}, la cui definizione \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} struct tms { clock_t tms_utime; /* user time */ clock_t tms_stime; /* system time */ @@ -1836,16 +1836,16 @@ lo stato di terminazione di tutti i suoi figli, questi processi ``nipoti'' non verranno considerati nel calcolo di questi tempi. - \subsection{Le funzioni per il \textit{calendar time}} \label{sec:sys_time_base} Come anticipato in \secref{sec:sys_unix_time} il \textit{calendar time} è mantenuto dal kernel in una variabile di tipo \type{time\_t}, che usualmente -corrisponde ad un tipo nativo (in Linux è un intero a 32 bit). Il valore -corrente del \textit{calendar time}, che indicheremo come \textsl{tempo di - sistema}, può essere ottenuto con la funzione \funcd{time} che lo restituisce -in nel suddetto formato; il suo prototipo è: +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 +con la funzione \funcd{time} che lo restituisce nel suddetto formato; il suo +prototipo è: \begin{prototype}{time.h}{time\_t time(time\_t *t)} Legge il valore corrente del \textit{calendar time}. @@ -1908,7 +1908,7 @@ nanosecondo.\footnote{la precisione \begin{figure}[!htb] \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} struct timeval { long tv_sec; /* seconds */ @@ -1971,7 +1971,7 @@ effettuato. \begin{figure}[!htb] \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} struct timex { unsigned int modes; /* mode selector */ long int offset; /* time offset (usec) */ @@ -2131,7 +2131,7 @@ stata introdotta una ulteriore rappresentazione, detta \textit{broken-down \begin{figure}[!htb] \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} struct tm { int tm_sec; /* seconds */ int tm_min; /* minutes */ @@ -2143,7 +2143,7 @@ struct tm { int tm_yday; /* day in the year */ int tm_isdst; /* daylight saving time */ long int tm_gmtoff; /* Seconds east of UTC. */ - cost char *tm_zone; /* Timezone abbreviation. */ + const char *tm_zone; /* Timezone abbreviation. */ }; \end{lstlisting} \end{minipage} @@ -2242,7 +2242,7 @@ verr \footnotesize \centering \begin{minipage}[c]{15cm} - \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{} + \begin{lstlisting}[stepnumber=0]{} extern char *tzname[2]; extern long timezone; extern int daylight; @@ -2264,7 +2264,7 @@ solare, la seconda per l'ora legale.\footnote{anche se sono indicati come Benché la funzione \func{asctime} fornisca la modalità più immediata per stampare un tempo o una data, la flessibilità non fa parte delle sue caratteristiche; quando si vuole poter stampare solo una parte (l'ora, o il -gionrno) di un tempo si può ricorrere alla più sofisticata \funcd{strftime}, +giorno) di un tempo si può ricorrere alla più sofisticata \funcd{strftime}, il cui prototipo è: \begin{prototype}{time.h} {size\_t strftime(char *s, size\_t max, const char *format, @@ -2274,7 +2274,7 @@ Stampa il tempo \param{tm} nella stringa \param{s} secondo il formato \param{format}. \bodydesc{La funzione ritorna il numero di caratteri stampati in \param{s}, - altrimenti restuisce 0.} + altrimenti restituisce 0.} \end{prototype} La funzione converte opportunamente il tempo \param{tm} in una stringa di @@ -2331,7 +2331,7 @@ viene utilizzato come modificatore; alcuni\footnote{per la precisione quelli le \acr{glibc} provvedono tutte le estensioni introdotte da POSIX.2 per il comando \cmd{date}, i valori introdotti da SVID3 e ulteriori estensioni GNU; l'elenco completo dei possibili valori è riportato nella pagina di manuale - della funzione.} dei possibili valori che esso può assumere sono ripotati in + della funzione.} dei possibili valori che esso può assumere sono riportati in \tabref{tab:sys_strftime_format}. La funzione tiene conto anche della presenza di una localizzazione per stampare in maniera adeguata i vari nomi.