X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=system.tex;h=9a37199c62aff381f3cf0754065acf843777579f;hb=6271cd1b0cc4d403753d1f48d3d562b16db7e613;hp=46b1bcec853b4bed21ec76d4a8fce0133b429465;hpb=0196c376e39fc18f8cd5e7fef47b61264f943faf;p=gapil.git diff --git a/system.tex b/system.tex index 46b1bce..9a37199 100644 --- a/system.tex +++ b/system.tex @@ -1,6 +1,6 @@ %% system.tex %% -%% Copyright (C) 2000-2008 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2009 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", @@ -1420,7 +1420,7 @@ In genere includere esplicitamente \file{} 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 -\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 @@ -1496,9 +1496,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 - \const{SIGXCPU} la cui azione predefinita (vedi + \const{SIGXCPU}, la cui azione predefinita (vedi 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} @@ -1529,6 +1531,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.\\ +% 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 @@ -1555,6 +1563,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 +% TODO integrare con le ultime aggiunte, vedi pagina di manuale \hline \end{tabular} \caption{Valori possibili dell'argomento \param{resource} delle funzioni @@ -1565,14 +1574,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 - 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.} -% 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 @@ -1816,10 +1823,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 -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 @@ -1844,7 +1851,7 @@ rispettivamente chiamati \itindend{calendar~time} \textit{calendar time} e 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}. @@ -1892,7 +1899,7 @@ del comando \cmd{time}. \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 @@ -1970,7 +1977,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} è -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 @@ -2026,25 +2036,13 @@ sono: \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,