(e non possono accedere direttamente alle zone di memoria riservate o alle
porte di input/output).
-Una parte del kernel, lo \textit{scheduler}, si occupa di stabilire, ad
-intervalli fissi e sulla base di un opportuno calcolo delle priorità, quale
-``processo'' deve essere posto in esecuzione (il cosiddetto \textit{preemptive
- scheduling}\index{preemptive scheduling}). Questo verrà comunque eseguito in
-modalità protetta; quando necessario il processo potrà accedere alle risorse
-hardware soltanto attraverso delle opportune chiamate al sistema che
-restituiranno il controllo al kernel.
+Una parte del kernel, lo \textit{scheduler}\index{scheduler}, si occupa di
+stabilire, ad intervalli fissi e sulla base di un opportuno calcolo delle
+priorità, quale ``processo'' deve essere posto in esecuzione (il cosiddetto
+\textit{preemptive scheduling}\index{preemptive scheduling}). Questo verrà
+comunque eseguito in modalità protetta; quando necessario il processo potrà
+accedere alle risorse hardware soltanto attraverso delle opportune chiamate al
+sistema che restituiranno il controllo al kernel.
La memoria viene sempre gestita dal kernel attraverso il meccanismo della
\textsl{memoria virtuale}\index{memoria virtuale}, che consente di assegnare a
Per questo motivo, anche se lo standard non ha alcun riferimento ad un sistema
di tipo Unix, GNU/Linux (per essere precisi le \acr{glibc}), come molti Unix
moderni, provvede la compatibilità con questo standard, fornendo le funzioni
-di libreria da esso previste. Queste sono dichiarate in quindici header file
-(anch'essi provvisti dalla \acr{glibc}), uno per ciascuna delle quindici aree
-in cui è stata suddivisa una libreria standard. In
-\tabref{tab:intro_posix_header} si sono riportati questi header, insieme a
-quelli definiti negli altri standard descritti nelle sezioni successive.
+di libreria da esso previste. Queste sono dichiarate in una serie di
+\textit{header file}\footnote{i file di dichiarazione di variabili, tipi e
+ funzioni, usati normalmente da un compilatore C. Per poter accedere alle
+ funzioni occorre includere con la direttiva \code{\#include} questi file nei
+ propri programmi; per ciascuna funzione che tratteremo in seguito
+ indicheremo anche gli \textit{header file} necessari ad usarla.} (anch'essi
+provvisti dalla \acr{glibc}), In \tabref{tab:intro_posix_header} si sono
+riportati i principali \textit{header file} definiti nello standard POSIX,
+insieme a quelli definiti negli altri standard descritti nelle sezioni
+successive.
\begin{table}[htb]
\footnotesize
\centering
- \begin{tabular}[c]{|l|l|}
+ \begin{tabular}[c]{|l|c|c|l|}
\hline
- \textbf{Standard} & \textbf{Contenuto} \\
+ \multirow{2}{*}{\textbf{Header}}&
+ \multicolumn{2}{|c|}{\textbf{Standard}}&
+ \multirow{2}{*}{\textbf{Contenuto}} \\
+ \cline{2-3}
+ & ANSI C& POSIX& \\
\hline
\hline
- \file{assert.h}& Verifica le asserzioni fatte in un programma.\\
- \file{cpio.h} & .\\
- \file{} & .\\
- \file{} & .\\
- \file{} & .\\
- \file{} & .\\
- \file{} & .\\
- \file{} & .\\
- \file{} & .\\
- \file{} & .\\
- \file{} & .\\
- \file{stdio.h} & I/O bufferizzato in standard ANSI C.\\
- \file{stdlib.h}& definizioni della libreria standard.\\
+ \file{assert.h}&$\bullet$&$\bullet$& Verifica le asserzioni fatte in un
+ programma.\\
+ \file{errno.h} &$\bullet$&$\bullet$& Errori di sistema.\\
+ \file{fcntl.h} &$\bullet$&$\bullet$& Controllo sulle opzioni dei file.\\
+ \file{limits.h}&$\bullet$&$\bullet$& Limiti e parametri del sistema.\\
+ \file{} &$\bullet$&$\bullet$& .\\
+ \file{} &$\bullet$&$\bullet$& .\\
+ \file{} &$\bullet$&$\bullet$& .\\
+ \file{} &$\bullet$&$\bullet$& .\\
+ \file{} &$\bullet$&$\bullet$& .\\
+ \file{stdio.h} &$\bullet$&$\bullet$& I/O bufferizzato in standard ANSI C.\\
+ \file{stdlib.h}&$\bullet$&$\bullet$& definizioni della libreria standard.\\
\hline
\end{tabular}
- \caption{Elenco dei vari file di include definiti dallo standard POSIX.}
+ \caption{Elenco dei vari header file definiti dallo standard POSIX.}
\label{tab:intro_posix_header}
\end{table}
\begin{table}[htb]
\footnotesize
\centering
- \begin{tabular}[c]{|l|l|}
+ \begin{tabular}[c]{|l|c|c|l|}
\hline
\textbf{Tipo} & \textbf{Contenuto} \\
\hline