X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=system.tex;h=df7d3c8e4a3a0e46f774cc1f8cb12a7b682dfae5;hb=c6c3ca02fdb433ef054e56f288d50d74ce8ec4ec;hp=9ca37675a72227cd8dde9459ad0b8e393f17c2f1;hpb=e7010c3fbd41a2de44c7b513c5de6e2c6d7ab4b4;p=gapil.git diff --git a/system.tex b/system.tex index 9ca3767..df7d3c8 100644 --- a/system.tex +++ b/system.tex @@ -88,23 +88,23 @@ avere un valore minimo di 8. \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\ \hline \hline - \const{MB\_LEN\_MAX}& 16 & massima dimensione di un - carattere esteso\\ - \const{CHAR\_BIT} & 8 & bit di \ctyp{char}\\ - \const{UCHAR\_MAX}& 255 & massimo di \ctyp{unsigned char}\\ - \const{SCHAR\_MIN}& -128 & minimo di \ctyp{signed char}\\ - \const{SCHAR\_MAX}& 127 & massimo di \ctyp{signed char}\\ - \const{CHAR\_MIN} &\footnotemark& minimo di \ctyp{char}\\ - \const{CHAR\_MAX} &\footnotemark& massimo di \ctyp{char}\\ - \const{SHRT\_MIN} & -32768 & minimo di \ctyp{short}\\ - \const{SHRT\_MAX} & 32767 & massimo di \ctyp{short}\\ - \const{USHRT\_MAX}& 65535 & massimo di \ctyp{unsigned short}\\ - \const{INT\_MAX} & 2147483647 & minimo di \ctyp{int}\\ - \const{INT\_MIN} &-2147483648 & minimo di \ctyp{int}\\ - \const{UINT\_MAX} & 4294967295 & massimo di \ctyp{unsigned int}\\ - \const{LONG\_MAX} & 2147483647 & massimo di \ctyp{long}\\ - \const{LONG\_MIN} &-2147483648 & minimo di \ctyp{long}\\ - \const{ULONG\_MAX}& 4294967295 & massimo di \ctyp{unsigned long}\\ + \const{MB\_LEN\_MAX}& 16 & Massima dimensione di un + carattere esteso.\\ + \const{CHAR\_BIT} & 8 & Numero di bit di \ctyp{char}.\\ + \const{UCHAR\_MAX}& 255 & Massimo di \ctyp{unsigned char}.\\ + \const{SCHAR\_MIN}& -128 & Minimo di \ctyp{signed char}.\\ + \const{SCHAR\_MAX}& 127 & Massimo di \ctyp{signed char}.\\ + \const{CHAR\_MIN} &\footnotemark& Minimo di \ctyp{char}.\\ + \const{CHAR\_MAX} &\footnotemark& Massimo di \ctyp{char}.\\ + \const{SHRT\_MIN} & -32768 & Minimo di \ctyp{short}.\\ + \const{SHRT\_MAX} & 32767 & Massimo di \ctyp{short}.\\ + \const{USHRT\_MAX}& 65535 & Massimo di \ctyp{unsigned short}.\\ + \const{INT\_MAX} & 2147483647 & Minimo di \ctyp{int}.\\ + \const{INT\_MIN} &-2147483648 & Minimo di \ctyp{int}.\\ + \const{UINT\_MAX} & 4294967295 & Massimo di \ctyp{unsigned int}.\\ + \const{LONG\_MAX} & 2147483647 & Massimo di \ctyp{long}.\\ + \const{LONG\_MIN} &-2147483648 & Minimo di \ctyp{long}.\\ + \const{ULONG\_MAX}& 4294967295 & Massimo di \ctyp{unsigned long}.\\ \hline \end{tabular} \caption{Costanti definite in \file{limits.h} in conformità allo standard @@ -130,10 +130,10 @@ tab.~\ref{tab:sys_isoc90_macro}. \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\ \hline \hline - \const{LLONG\_MAX}& 9223372036854775807& massimo di \ctyp{long long}\\ - \const{LLONG\_MIN}&-9223372036854775808& minimo di \ctyp{long long}\\ + \const{LLONG\_MAX}& 9223372036854775807& Massimo di \ctyp{long long}.\\ + \const{LLONG\_MIN}&-9223372036854775808& Minimo di \ctyp{long long}.\\ \const{ULLONG\_MAX}&18446744073709551615& - massimo di \ctyp{unsigned long long}\\ + Massimo di \ctyp{unsigned long long}.\\ \hline \end{tabular} \caption{Macro definite in \file{limits.h} in conformità allo standard @@ -341,7 +341,8 @@ relative spiegazioni, si pu Valore massimo del tipo di dato \type{ssize\_t}.\\ \texttt{\_SC\_CLK\_TCK} & \const{CLK\_TCK} & - Il numero di \textit{clock tick} al secondo, + Il numero di \itindex{clock~tick} + \textit{clock tick} al secondo, cioè l'unità di misura del \itindex{process~time} \textit{process time} (vedi @@ -533,7 +534,7 @@ il manuale delle \acr{glibc} indica due diverse dimensioni, \const{\_UTSNAME\_LENGTH} per i campi standard e \const{\_UTSNAME\_DOMAIN\_LENGTH} per quello specifico per il nome di dominio; altri sistemi usano nomi diversi come \const{SYS\_NMLN} o \const{\_SYS\_NMLN} -o \const{UTSLEN} che possono avere valori diversi.\footnote{Nel caso di Linux +o \const{UTSLEN} che possono avere valori diversi.\footnote{nel caso di Linux \func{uname} corrisponde in realtà a 3 system call diverse, le prime due usano rispettivamente delle lunghezze delle stringhe di 9 e 65 byte; la terza usa anch'essa 65 byte, ma restituisce anche l'ultimo campo, @@ -658,11 +659,14 @@ in \file{linux/sysctl.h},\footnote{indicando un file di definizioni si fa disponibile in \file{/proc/sys} è riportata inoltre nella documentazione inclusa nei sorgenti del kernel, nella directory \file{Documentation/sysctl}. -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 \file{ostype}, \file{hostname}, \file{osrelease}, -\file{version} e \file{domainname} di \file{/proc/kernel/}. +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}, +\procrelfile{/proc/sys/kernel}{hostname}, +\procrelfile{/proc/sys/kernel}{osrelease}, +\procrelfile{/proc/sys/kernel}{version} e +\procrelfile{/proc/sys/kernel}{domainname} di \file{/proc/sys/kernel/}. @@ -906,8 +910,8 @@ file \conffile{/etc/fstab} ed \conffile{/etc/mtab}, che convenzionalmente sono usati in quasi tutti i sistemi unix-like per mantenere rispettivamente le informazioni riguardo ai filesystem da montare e a quelli correntemente montati. Le funzioni servono a leggere il contenuto di questi file in -opportune strutture \struct{fstab} e \struct{mntent}, e, per \file{/etc/mtab} -per inserire e rimuovere le voci presenti nel file. +opportune strutture \struct{fstab} e \struct{mntent}, e, per +\conffile{/etc/mtab} per inserire e rimuovere le voci presenti nel file. In generale si dovrebbero usare queste funzioni (in particolare quelle relative a \conffile{/etc/mtab}), quando si debba scrivere un programma che @@ -1434,6 +1438,7 @@ leggere l'uso delle risorse; esso pu \const{RUSAGE\_CHILDREN} per indicare l'insieme dei processi figli di cui si è ricevuto lo stato di terminazione. +% TODO previsto in futuro \const{RUSAGE\_THREAD}, verificare. \subsection{Limiti sulle risorse} \label{sec:sys_resource_limit} @@ -1558,6 +1563,9 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard \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 avviene al superamento del limite corrente, con l'eccezione @@ -1585,8 +1593,8 @@ parte di un processo sono previste due funzioni, \funcd{getrlimit} e \bodydesc{Le funzioni ritornano 0 in caso di successo e -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori: \begin{errlist} - \item[\errcode{EINVAL}] I valori per \param{resource} non sono validi. - \item[\errcode{EPERM}] Un processo senza i privilegi di amministratore ha + \item[\errcode{EINVAL}] i valori per \param{resource} non sono validi. + \item[\errcode{EPERM}] un processo senza i privilegi di amministratore ha cercato di innalzare i propri limiti. \end{errlist} ed \errval{EFAULT}.} @@ -1744,7 +1752,7 @@ prototipo \begin{errlist} \item[\errcode{EACCESS}] non si hanno i permessi per accedere a \param{pathname}. - \item[\errcode{EPERM}] Il processo non ha privilegi sufficienti ad + \item[\errcode{EPERM}] il processo non ha privilegi sufficienti ad abilitare il \textit{BSD accounting}. \item[\errcode{ENOSYS}] il kernel non supporta il \textit{BSD accounting}. \item[\errcode{EUSER}] non sono disponibili nel kernel strutture per il @@ -1813,18 +1821,19 @@ rispettivamente chiamati \itindend{calendar~time} \textit{calendar time} e le date di modifica dei file o quelle di avvio dei processi. Per memorizzare questo tempo è stato riservato il tipo primitivo \type{time\_t}. \item[\textit{process time}] \itindex{process~time} detto talvolta - \textsl{tempo di processore}. Viene misurato in \textit{clock tick}. Un - tempo questo corrispondeva al numero di interruzioni effettuate dal timer di - sistema, adesso lo standard POSIX richiede che esso sia pari al valore della - costante \const{CLOCKS\_PER\_SEC}, che deve essere definita come 1000000, - qualunque sia la risoluzione reale dell'orologio di sistema e la frequenza - delle interruzioni del timer.\footnote{quest'ultima, come accennato in - sez.~\ref{sec:proc_hierarchy}, è invece data dalla costante \const{HZ}.} - Il dato primitivo usato per questo tempo è \type{clock\_t}, che ha quindi - una risoluzione del microsecondo. Il numero di tick al secondo può essere - ricavato anche attraverso \func{sysconf} (vedi sez.~\ref{sec:sys_sysconf}). - Il vecchio simbolo \const{CLK\_TCK} definito in \file{time.h} è ormai - considerato obsoleto. + \textsl{tempo di processore}. Viene misurato in \itindex{clock~tick} + \textit{clock tick}. Un tempo questo corrispondeva al numero di interruzioni + effettuate dal timer di sistema, adesso lo standard POSIX richiede che esso + sia pari al valore della costante \const{CLOCKS\_PER\_SEC}, che deve essere + definita come 1000000, qualunque sia la risoluzione reale dell'orologio di + sistema e la frequenza delle interruzioni del timer.\footnote{quest'ultima, + come accennato in sez.~\ref{sec:proc_hierarchy}, è invece data dalla + costante \const{HZ}.} Il dato primitivo usato per questo tempo è + \type{clock\_t}, che ha quindi una risoluzione del microsecondo. Il numero + di \itindex{clock~tick} \textit{tick} al secondo può essere ricavato anche + attraverso \func{sysconf} (vedi sez.~\ref{sec:sys_sysconf}). Il vecchio + simbolo \const{CLK\_TCK} definito in \file{time.h} è ormai considerato + obsoleto. \end{basedescript} In genere si usa il \itindend{calendar~time} \textit{calendar time} per @@ -1892,11 +1901,11 @@ utilizzato dallo stesso; il suo prototipo caso di errore.} \end{prototype} -La funzione restituisce il tempo in tick, quindi se si vuole il tempo in -secondi occorre dividere il risultato per la costante -\const{CLOCKS\_PER\_SEC}.\footnote{le \acr{glibc} seguono lo standard ANSI C, - POSIX richiede che \const{CLOCKS\_PER\_SEC} sia definito pari a 1000000 - indipendentemente dalla risoluzione del timer di sistema.} In genere +La funzione restituisce il tempo in \itindex{clock~tick} \texttt{clock tick}, +quindi se si vuole il tempo in secondi occorre dividere il risultato per la +costante \const{CLOCKS\_PER\_SEC}.\footnote{le \acr{glibc} seguono lo standard + ANSI C, POSIX richiede che \const{CLOCKS\_PER\_SEC} sia definito pari a + 1000000 indipendentemente dalla risoluzione del timer di sistema.} In genere \type{clock\_t} viene rappresentato come intero a 32 bit, il che comporta un valore massimo corrispondente a circa 72 minuti, dopo i quali il contatore riprenderà lo stesso valore iniziale. @@ -1908,8 +1917,9 @@ possono essere letti attraverso la funzione \funcd{times}, il cui prototipo \begin{prototype}{sys/times.h}{clock\_t times(struct tms *buf)} Legge in \param{buf} il valore corrente dei tempi di processore. - \bodydesc{La funzione ritorna il numero di clock tick dall'avvio del sistema - in caso di successo e -1 in caso di errore.} + \bodydesc{La funzione ritorna il numero di \itindex{clock~tick} + \textit{clock tick} dall'avvio del sistema in caso di successo e -1 in + caso di errore.} \end{prototype} La funzione restituisce i valori di \textit{process time} del processo @@ -2150,9 +2160,10 @@ campi della struttura \struct{timex} pu PLL implementato dal kernel, specificato nel campo \var{constant} di \struct{timex}.\\ - \const{ADJ\_TICK} & 0x4000 & Imposta il valore dei tick del timer - in microsecondi, espresso nel campo - \var{tick} di \struct{timex}.\\ + \const{ADJ\_TICK} & 0x4000 & Imposta il valore dei \textit{tick} + \itindex{clock~tick} del timer in + microsecondi, espresso nel campo + \var{tick} di \struct{timex}.\\ \const{ADJ\_OFFSET\_SINGLESHOT}&0x8001&Imposta uno spostamento una tantum dell'orologio secondo il valore del campo \var{offset} simulando il @@ -2431,7 +2442,7 @@ 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 +\var{errno},\footnote{l'uso di una variabile globale può comportare alcuni problemi (ad esempio nel caso dei 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 @@ -2693,7 +2704,7 @@ che errori relativi alla stessa linea non vengano ripetuti. % LocalWords: strftime thread EOF modifiable lvalue app errcode strerror LC at % LocalWords: perror string errnum MESSAGES error message ErrCode strtol log % LocalWords: program invocation argv printf print progname exit count fname -% LocalWords: lineno one standardese Di +% LocalWords: lineno one standardese Di page Wed Wednesday Apr April PM AM @@ -2701,3 +2712,4 @@ che errori relativi alla stessa linea non vengano ripetuti. %%% mode: latex %%% TeX-master: "gapil" %%% End: +% LocalWords: CEST