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.
Ma gli standard POSIX non si limitano alla standardizzazione delle funzioni di
libreria, e in seguito sono stati prodotti anche altri standard per la shell e
-le utilities di sistema (1003.2), per le estensioni realtime e per i thread
+le utility di sistema (1003.2), per le estensioni realtime e per i thread
(1003.1d e 1003.1c) e vari altri.
Benché lo standard POSIX sia basato sui sistemi unix esso definisce comunque
Nel 1992 lo standard venne rivisto con una nuova versione della guida, la
Issue 4 (da cui la sigla XPG4) che aggiungeva l'interfaccia XTI (\textit{X
- transport Interface}) mirante a soppiantare (senza molto successo)
+ Transport Interface}) mirante a soppiantare (senza molto successo)
l'interfaccia dei socket derivata da BSD. Una seconda versione della guida fu
rilasciata nel 1994, questa è nota con il nome di Spec 1170 (dal numero delle
interfacce, header e comandi definiti).
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 release
+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
commerciali come SunOS. Le \acr{glibc} provvedono tutte queste estensioni che
sono state in gran parte incorporate negli standard successivi.
marchio depositato, sviluppandone una serie di versioni diverse; nel 1983 la
versione supportata ufficialmente venne rilasciata al pubblico con il nome di
Unix System V. Negli anni successivi l'AT/T proseguì lo sviluppo rilasciando
-varie release con aggiunte e integrazioni; nel 1989 un accordo fra vari
-venditori (AT/T, Sun, HP, e altro) portò ad una release che provvedeva una
+varie versioni con aggiunte e integrazioni; nel 1989 un accordo fra vari
+venditori (AT/T, Sun, HP, e altro) portò ad una versione che provvedeva una
unificazione dell interfacce comprendente Xenix e BSD, la System V release 4.
La interfaccia di questa ultima release è descritta in un documento dal titolo
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
di questa non viene preso in considerazione.
\item[\macro{\_POSIX\_C\_SOURCE}] definendo questa macro ad un valore intero
positivo si controlla quale livello delle funzionalità specificate da POSIX
- viene messa a disposizone; più alto è il valore maggiori sono le
- funzionalità. Se è uagule a '1' vengono attivate le funzionalità specificate
+ viene messa a disposizione; più alto è il valore maggiori sono le
+ funzionalità. Se è uguale a '1' vengono attivate le funzionalità specificate
nella edizione del 1990 (IEEE Standard 1003.1-1990), valori maggiori o
uguali a '2' attivano le funzionalità POSIX.2 specificate nell'edizione del
1992 (IEEE Standard 1003.2-1992). Un valore maggiore o uguale a `199309L'
\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).
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "gapil"
+%%% End: