Correzioni per le footnote e scritta altra roba sui segnali (finite kill e
[gapil.git] / intro.tex
index f352fd7cd9f76a68cccdedf54256e003524df07e..e8d8a1f75c0bc11ffa3348772b082ad8a892e65f 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -6,7 +6,7 @@ cui 
 fornire una base di comprensione mirata a sottolineare le peculiarità del
 sistema che sono più rilevanti per quello che riguarda la programmazione.
 
-Dopo unintroduzione sulle caratteristiche principali di un sistema di tipo
+Dopo un'introduzione sulle caratteristiche principali di un sistema di tipo
 unix passeremo ad illustrare alcuni dei concetti base dell'architettura di
 GNU/Linux (che sono comunque comuni a tutti i sistemi \textit{unix-like}) ed
 introdurremo alcuni degli standard principali a cui viene fatto riferimento.
@@ -79,7 +79,7 @@ Uno dei concetti fondamentali su cui si basa l'architettura dei sistemi unix 
 quello della distinzione fra il cosiddetto \textit{user space}, che
 contraddistingue l'ambiente in cui vengono eseguiti i programmi, e il
 \textit{kernel space}, che è l'ambiente in cui viene eseguito il kernel. Ogni
-programma vede se stesso come se avesse la piena disponibilità della CPU e
+programma vede sé stesso come se avesse la piena disponibilità della CPU e
 della memoria ed è, salvo i meccanismi di comunicazione previsti
 dall'architettura, completamente ignaro del fatto che altri programmi possono
 essere messi in esecuzione dal kernel.
@@ -138,9 +138,9 @@ si aspetta da un sistema operativo.
 Come accennato le interfacce con cui i programmi possono accedere all'hardware
 vanno sotto il nome di chiamate al sistema (le cosiddette \textit{system
   call}), si tratta di un insieme di funzioni, che un programma può chiamare,
-per le quali viene generata una interruzione processo ed il controllo passa
-dal programma al kernel. Sarà poi quest'ultimo che (oltre a compiere una serie
-di operazioni interne come la gestione del multitasking e l'allocazione della
+per le quali viene generata un'interruzione processo ed il controllo passa dal
+programma al kernel. Sarà poi quest'ultimo che (oltre a compiere una serie di
+operazioni interne come la gestione del multitasking e l'allocazione della
 memoria) eseguirà la funzione richiesta in \textit{kernel space} restituendo i
 risultati al chiamante.
 
@@ -193,16 +193,16 @@ danneggiarsi a vicenda o danneggiare il sistema.
 
 Ad ogni utente è dato un nome \textit{username}, che è quello che viene
 richiesto all'ingresso nel sistema dalla procedura di \textit{login}. Questa
-procedura si incarica di verificare lidentità dell'utente, in genere
+procedura si incarica di verificare l'identità dell'utente, in genere
 attraverso la richiesta di una parola d'ordine, anche se sono possibili
-meccanismi diversi\footnote{Ad esempio usando la libreria PAM
+meccanismi diversi.\footnote{Ad esempio usando la libreria PAM
   (\textit{Pluggable Autentication Methods}) è possibile astrarre
   completamente i meccanismi di autenticazione e sostituire ad esempio l'uso
-  delle password con meccanismi di identificazione biometrica}.
+  delle password con meccanismi di identificazione biometrica.}
 
 Eseguita la procedura di riconoscimento in genere il sistema manda in
 esecuzione un programma di interfaccia (che può essere la \textit{shell} su
-terminale o uninterfaccia grafica) che mette a disposizione dell'utente un
+terminale o un'interfaccia grafica) che mette a disposizione dell'utente un
 meccanismo con cui questo può impartire comandi o eseguire altri programmi.
 
 Ogni utente appartiene anche ad almeno un gruppo (il cosiddetto
@@ -229,8 +229,8 @@ Infine in ogni unix 
 \acr{uid} è zero. Esso identifica l'amministratore del sistema, che deve
 essere in grado di fare qualunque operazione; per l'utente \textit{root}
 infatti i meccanismi di controllo descritti in precedenza sono
-disattivati\footnote{i controlli infatti vengono sempre eseguiti da un codice
-  del tipo \texttt{if (uid) \{ ... \}}}.
+disattivati.\footnote{i controlli infatti vengono sempre eseguiti da un codice
+  del tipo \texttt{if (uid) \{ ... \}}}
 
 
 \section{Gli standard di unix e GNU/Linux}
@@ -285,14 +285,13 @@ usare le varie estensioni al linguaggio e al preprocessore da esso supportate.
 \label{sec:intro_posix}
 
 Uno standard più attinente al sistema nel suo complesso (e che concerne sia il
-kernel che le librerie e` lo standard POSIX. Esso prende origine dallo
-standard ANSI C, che contiene come sottoinsieme, prevedendo ulteriori capacità
-per le funzioni in esso definite, ed aggiungendone di nuove. Le estensioni
-principali sono 
+kernel che le librerie è lo standard POSIX. Esso prende origine dallo standard
+ANSI C, che contiene come sottoinsieme, prevedendo ulteriori capacità per le
+funzioni in esso definite, ed aggiungendone di nuove. 
 
 In realtà POSIX è una famiglia di standard diversi, il cui nome, suggerito da
 Richard Stallman, sta per \textit{Portable Operating System Interface}, ma la
-X finale denuncia la sua stretta relazione con i sistemi unix. Esso nasce dal
+X finale denuncia la sua stretta relazione con i sistemi Unix. Esso nasce dal
 lavoro dell'IEEE (\textit{Institute of Electrical and Electronics Engeneers})
 che ne produsse una prima versione, nota come IEEE 1003.1-1988, mirante a
 standardizzare l'interfaccia con il sistema operativo.
@@ -302,12 +301,12 @@ libreria, e in seguito sono stati prodotti anche altri standard per la shell e
 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
-uninterfaccia e non fa riferimento ad una specifica implementazione (ad
-esempio esiste anche una implementazione di questo standard pure sotto Windows
-NT). Lo standard si è evoluto nel tempo ed una versione più aggiornata (quella
-che viene normalmente denominata POSIX.1) è stata rilasciata come standard
-internazionale con la sigla ISO/IEC 9945-1:1996. 
+Benché lo standard POSIX sia basato sui sistemi Unix esso definisce comunque
+un'interfaccia e non fa riferimento ad una specifica implementazione (ad
+esempio esiste un'implementazione di questo standard anche sotto Windows NT).
+Lo standard si è evoluto nel tempo ed una versione più aggiornata (quella che
+viene normalmente denominata POSIX.1) è stata rilasciata come standard
+internazionale con la sigla ISO/IEC 9945-1:1996.
 
 Le \acr{glibc} implementano tutte le funzioni definite nello standard POSIX.1,
 e Linux; 
@@ -317,14 +316,14 @@ e Linux;
 \label{sec:intro_xopen}
 
 Il consorzio X/Open nacque nel 1984 come consorzio di venditori di sistemi
-unix per giungere ad unarmonizzazione delle varie implementazioni.  Per far
+unix per giungere ad un'armonizzazione delle varie implementazioni.  Per far
 questo iniziò a pubblicare una serie di documentazioni e specifiche sotto il
 nome di \textit{X/Open Portability Guide} (a cui di norma si fa riferimento
 con l'abbreviazione XPGn).
 
 Nel 1989 produsse una terza versione di questa guida particolarmente
-voluminosa (la \textit{X/Open Portability Guide, Issue 3}), contenente una
-ulteriore standardizzazione dell'interfaccia sistema unix, che venne presa
+voluminosa (la \textit{X/Open Portability Guide, Issue 3}), contenente
+un'ulteriore standardizzazione dell'interfaccia sistema unix, che venne presa
 come riferimento da vari produttori.
 
 Questo standard, detto anche XPG3 dal nome della suddetta guida, è sempre
@@ -379,8 +378,8 @@ della AT/T.
 
 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
@@ -396,10 +395,11 @@ 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 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.
+venditori (AT/T, Sun, HP, e altro) portò ad una versione che provvedeva
+un'unificazione dell interfacce comprendente Xenix e BSD, la System V release
+4.
 
-Linterfaccia di questa ultima release è descritta in un documento dal titolo
+L'interfaccia di questa ultima release è descritta in un documento dal titolo
 \textit{System V Interface Description}, o SVID; spesso però si riferimento a
 questo standard con il nome della sua implementazione, usando la sigla SVr4.
 
@@ -436,12 +436,12 @@ nessuna funzione non riconosciuta dalle specifiche standard ISO per il C.
 
 Per attivare le varie opzioni è possibile definire le macro di preprocessore,
 che controllano le funzionalità che le \acr{glibc} possono mettere a
-disposizione questo può essere fatto attraverso l'opzione \cmd{-D} del
-compilatore, ma è buona norma inserire gli opportuni \texttt{\#define} nei
+disposizione: questo può essere fatto attraverso l'opzione \cmd{-D} del
+compilatore, ma è buona norma inserire gli opportuni \code{\#define} nei
 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
@@ -480,26 +480,38 @@ Le macro disponibili per i vari standard sono le seguenti:
   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
+\item[\macro{\_XOPEN\_SOURCE\_EXTENDED}] definendo questa macro si attivano le
+  ulteriori funzionalità necessarie ad essere conformi al rilascio del marchio
+  \textit{X/Open Unix}.
+\item[\macro{\_ISOC99\_SOURCE}] definendo 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
+  ampia queste non sono abilitate automaticamente, ma le \acr{glibc} hanno già
+  un'implementazione completa che può essere attivata definendo questa macro.
+\item[\macro{\_LARGEFILE\_SOURCE}] definendo 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.
+    File Support} o LFS) con indici e dimensioni a 64 bit.
+\item[\macro{\_GNU\_SOURCE}] definendo 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
+  confliggano 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).
 
 
+
+%%% Local Variables: 
+%%% mode: latex
+%%% TeX-master: "gapil"
+%%% End: