Rinominati app_a e app_b
[gapil.git] / intro.tex
index 6fc0fecac814ceb9b4196b500c9dcb81408232a4..ebbc5e2e0920dab23fa340bf4c6350decd677e4d 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -229,18 +229,75 @@ descritti in precedenza sono disattivati.
 \section{Gli standard di unix e GNU/Linux}
 \label{sec:intro_standard}
 
-
+In questa sezione prenderemo in esame alcune caratteristiche generali del
+sistema e gli standard adottati per le funzioni, i prototipi, gli errori, i
+tipi di dati.
+
+\subsection{Prototipi e puntatori}
+\label{sec:intro_function}
+
+\subsection{La misura del tempo in unix}
+\label{sec:intro_unix_time}
+
+Storicamente i sistemi unix-like hanno sempre mantenuto due distinti valori
+per i tempi all'interno del sistema, chiamati rispettivamente \textit{calendar
+  time} e \textit{process time}, secondo le definizioni:
+\begin{itemize}
+\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}). Viene chiamato anche GMT (Greenwich Mean Time) dato che l'UTC
+  corrisponde all'ora locale di Greenwich.  E' 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}.
+\item \textit{process time}: talvolta anche detto tempo di CPU. Viene misurato
+  in \textit{clock tick}, corripondenti al numero di interruzioni effettuate
+  dal timer di sistema, e che per Linux sono ogni centesimo di secondo
+  (eccetto per la piattaforma alpha). Il dato primitivo usato per questo tempo
+  è \func{clock\_t}, inoltre la costante \macro{HZ} restituisce la frequenza
+  di operazione del timer, e corrisponde dunque al numero di tick al secondo
+  (Posix definisce allo stesso modo la costante \macro{CLK\_TCK}); questo
+  valore può comunque essere ottenuto con \func{sysconf} (vedi
+  \secref{sec:intro_limits}).
+\end{itemize}
+
+In genere si usa il \textit{calendar time} per tenere le date dei file e le
+informazioni analoghe che riguardano i tempi di ``orologio'' (usati ad esempio
+per i demoni che compiono lavori amministrativi ad ore definite, come
+\cmd{cron}). Di solito questo vene convertito automaticamente dal valore in
+UTC al tempo locale, utilizzando le opportune informazioni di localizzazione
+(specificate in \file{/etc/timezone}). E da tenere presente che questo tempo è
+mantenuto dal sistema e non corrisponde all'orologio hardware del calcolatore.
+
+Il \textit{process time} di solito si esprime in secondi e viene usato appunto
+per tenere conto dei tempi di esecuzione dei processi. Per ciascun processo il
+kernel tiene tre di questi tempi: 
+\begin{itemize}
+\item \textit{clock time}
+\item \textit{user time}
+\item \textit{system time}
+\end{itemize}
+il primo è il tempo ``reale'' (viene anche chiamato \textit{wall clock time})
+dall'avvio del processo, e misura il tempo trascorso fino alla sua
+conclusione; chiaramente un tale tempo dipede anche dal carico del sistema e
+da quanti altri processi stavano girando nello stesso periodo. Il secondo
+tempo è quello che la CPU ha speso nell'esecuzione delle istruzioni del
+processo in user space. Il terzo è il tempo impiegato dal kernel per eseguire
+delle system call per conto del processo medesimo (tipo quello usato per
+eseguire una \func{write} su un file). In genere la somma di user e system
+time viene chiamato \textit{CPU time}. 
 
 \subsection{Lo standard ANSI C}
 \label{sec:intro_ansiC}
 
-
-
 \subsection{Lo standard POSIX}
 \label{sec:intro_posix}
 
+\subsection{Valori e limiti del sistema}
+\label{sec:intro_limits}
 
 
-
-
+\subsection{Tipi di dati primitivi}
+\label{sec:intro_data_types}