X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;h=ebbc5e2e0920dab23fa340bf4c6350decd677e4d;hp=0913f58fd9a0499786ff22adf9b14504d0c63ef9;hb=d99b4995b23505a9afde30adf3a716aa7a55f0e9;hpb=7f82a673d95054cd295c8743606cfa8aa249e731 diff --git a/intro.tex b/intro.tex index 0913f58..ebbc5e2 100644 --- a/intro.tex +++ b/intro.tex @@ -217,7 +217,7 @@ In questo modo il sistema dell'utente a cui appartiene ed impedire ad altri utenti di interferire con esso. Inoltre con questo sistema viene anche garantita una forma base di sicurezza interna in quanto anche l'accesso ai file (vedi -\secref{sec:fileintr_access_ctrl}) è regolato da questo meccanismo di +\secref{sec:filedir_access_control}) è regolato da questo meccanismo di identificazione. Un utente speciale del sistema è \textit{root}, il cui uid è zero. Esso @@ -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_ansiC} - - +\label{sec:intro_posix} +\subsection{Valori e limiti del sistema} +\label{sec:intro_limits} +\subsection{Tipi di dati primitivi} +\label{sec:intro_data_types}