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{prehemptive scheduling}). Questo verrà comunque eseguito in modalità
+\textit{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.
Benchè BSD non sia uno standard formalizzato, l'implementazione di unix
dell'Università di Berkley, ha provveduto nel tempo una serie di estensioni e
-di API grande rilievo, come il link simbolici (vedi \secref{sec:file_symlink},
-la funzione \func{select}, i socket.
+di API grande rilievo, come il link simbolici, la funzione \code{select}, i
+socket.
Queste estensioni sono state via via aggiunte al sistema nelle varie versioni
del sistema (BSD 4.2, BSD 4.3 e BSD 4.4) come pure in alcuni derivati
propri header file.
Le macro disponibili per i vari standard sono le seguenti:
-\begin{basedescript}{\desclabelwidth{2.0cm}}
+\begin{basedescript}{\desclabelwidth{3cm}\desclabelstyle{\nextlinelabel}}
\item[\macro{\_POSIX\_SOURCE}] definendo questa macro si rendono disponibili
tutte le funzionalità dello standard POSIX.1 (la versione IEEE Standard
1003.1) insieme a tutte le funzionalità dello standard ISO C. Se viene anche
\item[\macro{\_SVID\_SOURCE}] definendo questa macro si attivano le
funzionalità derivate da SVID. Esse comprendono anche quelle definite negli
standard ISO C, POSIX.1, POSIX.2, and X/Open.
-\item[\macro{\_XOPEN\_SOURCE}]
-\item[\macro{\_XOPEN\_SOURCE\_EXTENDED}]
-\item[\macro{\_ISOC99\_SOURCE}]
-\item[\macro{\_GNU\_SOURCE}]
-\item[\macro{\_LARGEFILE\_SOURCE}]
+\item[\macro{\_XOPEN\_SOURCE}] definendo questa macro si attivano le
+ funzionalità descritte nella \textit{X/Open Portability Guide}. Anche queste
+ sono un soprainsieme di quelle definite in POSIX.1 e POSIX.2 ed in effetti
+ sia \macro{\_POSIX\_SOURCE} che \macro{\_POSIX\_C\_SOURCE} vengono
+ automaticamente definite. Sono incluse anche ulteriori funzionalità
+ disponibili in BSD e SVID. Se il valore della macro è posto a 500 questo
+ include anche le nuove definizioni introdotte con la \textit{Single Unix
+ Specification, version 2}, cioè Unix98.
+\item[\macro{\_XOPEN\_SOURCE\_EXTENDED}] questa macro si attivano le ulteriori
+ funzionalità necessarie a esse conformi al rilascio del marchio
+ \textit{X/Open Unix}
+\item[\macro{\_ISOC99\_SOURCE}] questa macro si attivano le
+ funzionalità previste per la revisione delle librerie standard del C
+ denominato ISO C99. Dato che lo standard non è ancora adottato in maniera
+ ampia queste non sona abilitate automaticamente, ma le \acr{glibc} ha già
+ una implementazione completa che può essere attivata definendo questa macro.
+\item[\macro{\_LARGEFILE\_SOURCE}] questa macro si attivano le
+ funzionalità per il supporto dei file di grandi dimensioni (il \textit{Large
+ File Support} o LFS) con indici e dimensioni a 64 bit.
+\item[\macro{\_GNU\_SOURCE}] questa macro si attivano tutte le funzionalità
+ disponibili: ISO C89, ISO C99, POSIX.1, POSIX.2, BSD, SVID, X/Open, LFS più
+ le estensioni specifiche GNU. Nel caso in cui BSD e POSIX confliggono viene
+ data la precedenza a POSIX.
\end{basedescript}
+In particolare è da sottolineare che le \acr{glibc} supportano alcune
+estensioni specifiche GNU, che non sono comprese in nessuno degli
+standard citati. Per poterle utilizzare esse devono essere attivate
+esplicitamente definendo la macro \macro{\_GNU\_SOURCE} prima di
+includere i vari header file.
+
+
\subsection{Gli standard di Linux}
\label{sec:intro_linux_std}
-Da fare (o cassare, a seconda del tempo e della voglia).
\ No newline at end of file
+Da fare (o cassare, a seconda del tempo e della voglia).
+
+