Finito con le risorse, si passa ai tempi
authorSimone Piccardi <piccardi@gnulinux.it>
Tue, 7 May 2002 22:00:01 +0000 (22:00 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Tue, 7 May 2002 22:00:01 +0000 (22:00 +0000)
system.tex

index 40ec611f1ab333141f99d5893149cba116a13fee..5b645af2a988748685fcd10080f29faca1368c76 100644 (file)
@@ -1562,7 +1562,7 @@ processo padre attraverso una \func{fork} (vedi \secref{sec:proc_fork}) e
 mantenuti attraverso una \func{exec} (vedi \secref{sec:proc_exec}).
 
 
-\subsection{Le risorse relative alla memoria}
+\subsection{Le risorse di memoria e processore}
 \label{sec:sys_memory_res}
 
 La gestione della memoria è già stata affrontata in dettaglio in
@@ -1598,10 +1598,10 @@ dimensione delle pagine di memoria; il suo prototipo 
 La funzione è prevista in SVr4, 4.4BSD e SUSv2, anche se questo ultimo
 standard la etichetta come obsoleta, mentre lo standard POSIX 1003.1-2001 la
 ha eliminata. In Linux è implementata come una system call nelle architetture
-in cui essa serve, in genere restituisce il valore del simbolo
+in cui essa è necessaria, ed in genere restituisce il valore del simbolo
 \macro{PAGE\_SIZE} del kernel, anche se le versioni delle librerie del C
-precedenti le \acr{glibc} 2.1 implementavano questa funzione restituendo un
-valore statico.
+precedenti le \acr{glibc} 2.1 implementavano questa funzione restituendo
+sempre un valore statico.
 
 Le \acr{glibc} forniscono, come specifica estensione GNU, altre due funzioni,
 \func{get\_phys\_pages} e \func{get\_avphys\_pages} che permettono di ottenere
@@ -1611,32 +1611,55 @@ informazioni riguardo la memoria; i loro prototipi sono:
   
   \funcdecl{long int get\_phys\_pages(void)} 
 
-  Legge il numero totale di pagine di memorie disponibili per il sistema.
+  Legge il numero totale di pagine di memoria disponibili per il sistema.
   
   \funcdecl{long int get\_avphys\_pages(void)} 
   
-  Legge il numero.
+  Legge il numero di pagine di memoria disponibili nel sistema. 
   
-  \bodydesc{}
+  \bodydesc{Le funzioni restituiscono il numero di pagine, }
 \end{functions}
 
+Queste funzioni sono equivalenti all'uso della funzione \func{sysconf}
+rispettivamente con i parametri \macro{\_SC\_PHYS\_PAGES} e
+\macro{\_SC\_AVPHYS\_PAGES}. La prima restituisce il numero totale di pagine
+corrispondenti alla RAM della macchina; la seconda invece la memoria
+effettivamente disponibile per i processi.
+
+Le \acr{glibc} supportano inoltre, come estenzioni GNU, due funzioni che
+restituiscono il numero di processori della macchina (e quello dei processori
+attivi); anche queste sono informazioni comunque ottenibili attraverso
+\func{sysconf} utilizzando rispettivamente i parametri
+\macro{\_SC\_NPROCESSORS\_CONF} e \macro{\_SC\_NPROCESSORS\_ONLN}.
+
+Infine le \acr{glibc} riprendono da BSD la funzione \func{getloadavg} che
+permette di ottenere il carico di processore della macchina, in questo modo è
+possibile prendere decisioni su quando far partire eventuali nuovi processi.
+Il suo prototipo è:
+\begin{prototype}{stdlib.h}{int getloadavg(double loadavg[], int nelem)}
+  Legge il carico medio della macchina.
+  
+  \bodydesc{La funzione ritorna il numero di elementi scritti o -1 in caso di
+    errore.}
+\end{prototype}
 
-
-\subsection{Le risorse di processore}
-\label{sec:sys_cpu_load}
-
-
-
-
+La funzione restituisce in ciascun elemento di \param{loadavg} il numero medio
+di processi attivi sulla coda dello scheduler, calcolato su un diverso
+intervalli di tempo.  Il numero di intervalli che si vogliono leggere è
+specificato da \param{nelem}, dato che nel caso di Linux il carico viene
+valutato solo su tre intervalli (corrispondenti a 1, 5 e 15 minuti), questo è
+anche il massimo valore che può essere assegnato a questo argomento.
 
 
 
 \section{La gestione dei tempi del sistema}
 \label{sec:sys_time}
 
-In questa sezione tratteremo le varie funzioni per la gestione delle date e
-del tempo in un sistema unix-like, e quelle per convertire i vari tempi nelle
-differenti rappresentazioni che vengono utilizzate.
+In questa sezione tratteremo le varie funzioni attinenti alla gestione del
+tempo in un sistema unix-like, a partire da quelle della gestione di data e
+ora, a quelle per convertire i vari tempi nelle differenti rappresentazioni
+che vengono utilizzate, a quelle per misurare i veri tempi di sistema
+associati ai processi.
 
 
 \subsection{La misura del tempo in Unix}
@@ -1646,8 +1669,8 @@ 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 \textit{calendar time} e \textit{process time},
 secondo le definizioni:
-\begin{itemize}
-\item \textit{calendar time}: è il numero di secondi dalla mezzanotte del
+\begin{description}
+\item[\textit{calendar time}]: è 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
     Epoch}. Questo tempo viene anche chiamato anche GMT (Greenwich Mean Time)
@@ -1655,7 +1678,7 @@ secondo le definizioni:
   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 \type{time\_t}.
-\item \textit{process time}: detto anche tempo di processore. Viene misurato
+\item[\textit{process time}]: detto anche tempo di processore. 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
@@ -1665,7 +1688,7 @@ secondo le definizioni:
   standard POSIX definisce allo stesso modo la costante \macro{CLK\_TCK});
   questo valore può comunque essere ottenuto con \func{sysconf} (vedi
   \secref{sec:sys_limits}).
-\end{itemize}
+\end{description}
 
 In genere si usa il \textit{calendar time} per esprimere le date dei file e le
 informazioni analoghe che riguardano i cosiddetti \textsl{tempi di orologio},