Altra roba, res_query.
[gapil.git] / intro.tex
index 1dfaaf92f7d4da2fa3eedac8fa5b57f7c31adbf8..2a9c9735ab52ba475dd13effc6fd59fc4b7d76ba 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -1,3 +1,13 @@
+%% intro.tex
+%%
+%% Copyright (C) 2000-2004 Simone Piccardi.  Permission is granted to
+%% copy, distribute and/or modify this document under the terms of the GNU Free
+%% Documentation License, Version 1.1 or any later version published by the
+%% Free Software Foundation; with the Invariant Sections being "Prefazione",
+%% with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the
+%% license is included in the section entitled "GNU Free Documentation
+%% License".
+%%
 \chapter{L'architettura del sistema}
 \label{cha:intro_unix}
 
 \chapter{L'architettura del sistema}
 \label{cha:intro_unix}
 
@@ -52,17 +62,17 @@ all'hardware, mentre i programmi normali vengono eseguiti in modalit
 (e non possono accedere direttamente alle zone di memoria riservate o alle
 porte di input/output).
 
 (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 ``\textsl{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
 
 La memoria viene sempre gestita dal kernel attraverso il meccanismo della
 \textsl{memoria virtuale}\index{memoria virtuale}, che consente di assegnare a
-ciascun processo uno spazio di indirizzi ``virtuale'' (vedi
+ciascun processo uno spazio di indirizzi ``\textsl{virtuale}'' (vedi
 \secref{sec:proc_memory}) che il kernel stesso, con l'ausilio della unità di
 gestione della memoria, si incaricherà di rimappare automaticamente sulla
 memoria disponibile, salvando su disco quando necessario (nella cosiddetta
 \secref{sec:proc_memory}) che il kernel stesso, con l'ausilio della unità di
 gestione della memoria, si incaricherà di rimappare automaticamente sulla
 memoria disponibile, salvando su disco quando necessario (nella cosiddetta
@@ -154,7 +164,17 @@ Ogni versione di Unix ha storicamente sempre avuto un certo numero di queste
 chiamate, che sono riportate nella seconda sezione del \textsl{Manuale di
   programmazione di Unix} (quella cui si accede con il comando \cmd{man 2
   <nome>}) e Linux non fa eccezione. Queste sono poi state codificate da vari
 chiamate, che sono riportate nella seconda sezione del \textsl{Manuale di
   programmazione di Unix} (quella cui si accede con il comando \cmd{man 2
   <nome>}) e Linux non fa eccezione. Queste sono poi state codificate da vari
-standard, che esamineremo brevemente in \secref{sec:intro_standard}.
+standard, che esamineremo brevemente in \secref{sec:intro_standard}. Uno
+schema elementare della struttura del sistema è riportato in
+\figref{fig:intro_sys_struct}.
+
+\begin{figure}[htb]
+  \centering
+  \includegraphics[width=10cm]{img/struct_sys}
+  \caption{Schema di massima della struttura di interazione fra processi,
+    kernel e dispositivi in Linux.}
+  \label{fig:intro_sys_struct}
+\end{figure}
 
 Normalmente ciascuna di queste chiamate al sistema viene rimappata in
 opportune funzioni con lo stesso nome definite dentro la Libreria Standard del
 
 Normalmente ciascuna di queste chiamate al sistema viene rimappata in
 opportune funzioni con lo stesso nome definite dentro la Libreria Standard del
@@ -171,17 +191,22 @@ programma.
 
 Quanto appena illustrato mette in evidenza il fatto che nella stragrande
 maggioranza dei casi,\footnote{esistono implementazioni diverse delle librerie
 
 Quanto appena illustrato mette in evidenza il fatto che nella stragrande
 maggioranza dei casi,\footnote{esistono implementazioni diverse delle librerie
-  del C, come le \textit{libc5} o le \textit{uclib}, che non derivano dal
-  progetto GNU, ma oggi sono, tranne casi particolari, completamente
-  soppiantate dalle \acr{glibc}.} si dovrebbe usare il nome GNU/Linux
-(piuttosto che soltanto Linux) in quanto una parte essenziale del sistema
-(senza la quale niente funzionerebbe) è la GNU Standard C Library (in breve
-\acr{glibc}), ovvero la libreria realizzata dalla Free Software Foundation
-nella quale sono state implementate tutte le funzioni essenziali definite
-negli standard POSIX e ANSI C, utilizzabili da qualunque programma.
+  Standard del C, come le \textit{libc5} o le \textit{uClib}, che non derivano
+  dal progetto GNU. Le \textit{libc5} oggi sono, tranne casi particolari,
+  completamente soppiantate dalle \acr{glibc}, le \textit{uClib} pur non
+  essendo complete come le \acr{glibc}, restano invece molto diffuse nel mondo
+  embedded per le loro dimensioni ridotte (e soprattutto la possibilità di
+  togliere le parti non necessarie), e pertanto costituiscono un valido
+  rimpiazzo delle \acr{glibc} in tutti quei sistemi specializzati che
+  richiedono una minima occupazione di memoria.} si dovrebbe usare il nome
+GNU/Linux (piuttosto che soltanto Linux) in quanto una parte essenziale del
+sistema (senza la quale niente funzionerebbe) è la GNU Standard C Library (in
+breve \acr{glibc}), ovvero la libreria realizzata dalla Free Software
+Foundation nella quale sono state implementate tutte le funzioni essenziali
+definite negli standard POSIX e ANSI C, utilizzabili da qualunque programma.
 
 Le funzioni di questa libreria sono quelle riportate dalla terza sezione del
 
 Le funzioni di questa libreria sono quelle riportate dalla terza sezione del
-\textsl{Manuale di Programmazione di Unix }(cioè accessibili con il comando
+\textsl{Manuale di Programmazione di Unix(cioè accessibili con il comando
 \cmd{man 3 <nome>}) e sono costruite sulla base delle chiamate al sistema del
 kernel; è importante avere presente questa distinzione, fondamentale dal punto
 di vista dell'implementazione, anche se poi, nella realizzazione di normali
 \cmd{man 3 <nome>}) e sono costruite sulla base delle chiamate al sistema del
 kernel; è importante avere presente questa distinzione, fondamentale dal punto
 di vista dell'implementazione, anche se poi, nella realizzazione di normali
@@ -227,15 +252,15 @@ definendo gruppi di lavoro, di accesso a determinate risorse, etc.
 L'utente e il gruppo sono identificati da due numeri (la cui corrispondenza ad
 un nome espresso in caratteri è inserita nei due file \file{/etc/passwd} e
 \file{/etc/groups}). Questi numeri sono l'\textit{user identifier}, detto in
 L'utente e il gruppo sono identificati da due numeri (la cui corrispondenza ad
 un nome espresso in caratteri è inserita nei due file \file{/etc/passwd} e
 \file{/etc/groups}). Questi numeri sono l'\textit{user identifier}, detto in
-breve \textsl{userid}, ed indicato dall'acronimo \acr{uid}, e il \textit{group
-  identifier}, detto in breve \textsl{groupid}, ed identificato dall'acronimo
-\acr{gid}, e sono quelli che vengono usati dal kernel per identificare
-l'utente.
+breve \textsl{user-ID}, ed indicato dall'acronimo \acr{uid}, e il
+\textit{group identifier}, detto in breve \textsl{group-ID}, ed identificato
+dall'acronimo \acr{gid}, e sono quelli che vengono usati dal kernel per
+identificare l'utente.
  
  
-In questo modo il sistema è in grado di tenere traccia per ogni processo
-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
+In questo modo il sistema è in grado di tenere traccia dell'utente a cui
+appartiene ciascun processo ed impedire ad altri utenti di interferire con
+quest'ultimo.  Inoltre con questo sistema viene anche garantita una forma base
+di sicurezza interna in quanto anche l'accesso ai file (vedi
 \secref{sec:file_access_control}) è regolato da questo meccanismo di
 identificazione.
 
 \secref{sec:file_access_control}) è regolato da questo meccanismo di
 identificazione.
 
@@ -283,36 +308,44 @@ qualunque sistema operativo.
 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
 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{table}[htb]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|l|}
+  \begin{tabular}[c]{|l|c|c|l|}
     \hline
     \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
     \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}
     \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}
 
   \label{tab:intro_posix_header}
 \end{table}
 
@@ -332,15 +365,19 @@ usare le varie estensioni al linguaggio e al preprocessore da esso supportate.
 Uno dei problemi di portabilità del codice più comune è quello dei tipi di
 dati utilizzati nei programmi, che spesso variano da sistema a sistema, o
 anche da una architettura ad un altra (ad esempio passando da macchine con
 Uno dei problemi di portabilità del codice più comune è quello dei tipi di
 dati utilizzati nei programmi, che spesso variano da sistema a sistema, o
 anche da una architettura ad un altra (ad esempio passando da macchine con
-processori 32 bit a 64).
-
-Storicamente alcuni tipi di dati definiti dallo standard ANSI C sono sempre
-stati associati ad alcune variabili nei sistemi Unix, ad esempio la posizione
-corrente all'interno di un file è sempre stato associato ad un intero a 32
-bit, mentre il numero di dispositivo è sempre stato associato ad un intero a
-16 bit. Tutto questo ovviamente costituisce un incubo per la portabilità tutte
-le volte che, con l'evolversi delle piattaforme hardware, alcuni di questi
-tipi si sono rivelati inadeguati, e se ne è dovuto cambiare la dimensione.
+processori 32 bit a 64). In particolare questo è vero nell'uso dei cosiddetti
+\textit{tipi elementari}\index{tipo!elementare} del linguaggio C (come
+\ctyp{int}) la cui dimensione varia a seconda dell'architettura hardware.
+
+Storicamente alcuni tipi nativi dello standard ANSI C sono sempre stati
+associati ad alcune variabili nei sistemi Unix, dando per scontata la
+dimensione. Ad esempio la posizione corrente all'interno di un file è sempre
+stata associata ad un intero a 32 bit, mentre il numero di dispositivo è
+sempre stato associato ad un intero a 16 bit. Storicamente questi erano
+definiti rispettivamente come \ctyp{int} e \ctyp{short}, ma tutte le volte
+che, con l'evolversi ed il mutare delle piattaforme hardware, alcuni di questi
+tipi si sono rivelati inadeguati o sono cambiati, ci si è trovati di fronte ad
+una infinita serie di problemi di portabilità.
 
 \begin{table}[htb]
   \footnotesize
 
 \begin{table}[htb]
   \footnotesize
@@ -354,7 +391,7 @@ tipi si sono rivelati inadeguati, e se ne 
     \type{clock\_t} & contatore del tempo di sistema.\\
     \type{dev\_t}   & Numero di dispositivo.\\
     \type{gid\_t}   & Identificatore di un gruppo.\\
     \type{clock\_t} & contatore del tempo di sistema.\\
     \type{dev\_t}   & Numero di dispositivo.\\
     \type{gid\_t}   & Identificatore di un gruppo.\\
-    \type{ino\_t}   & Numero di \textit{inode}.\\
+    \type{ino\_t}   & Numero di \textit{inode}\index{inode}.\\
     \type{key\_t}   & Chiave per il System V IPC.\\
     \type{loff\_t}  & Posizione corrente in un file.\\
     \type{mode\_t}  & Attributi di un file.\\
     \type{key\_t}   & Chiave per il System V IPC.\\
     \type{loff\_t}  & Posizione corrente in un file.\\
     \type{mode\_t}  & Attributi di un file.\\
@@ -363,8 +400,8 @@ tipi si sono rivelati inadeguati, e se ne 
     \type{pid\_t}   & Identificatore di un processo.\\
     \type{rlim\_t}  & Limite sulle risorse.\\
     \type{sigset\_t}& Insieme di segnali.\\
     \type{pid\_t}   & Identificatore di un processo.\\
     \type{rlim\_t}  & Limite sulle risorse.\\
     \type{sigset\_t}& Insieme di segnali.\\
-    \type{ssize\_t} & Dimensione di un oggetto.\\
-    \type{ssize\_t} & Dimensione in numero  byte ritornata dalle funzioni.\\
+    \type{size\_t}  & Dimensione di un oggetto.\\
+    \type{ssize\_t} & Dimensione in numero di byte ritornata dalle funzioni.\\
     \type{ptrdiff\_t}& Differenza fra due puntatori.\\
     \type{time\_t}  & Numero di secondi (in tempo di calendario).\\
     \type{uid\_t}   & Identificatore di un utente.\\
     \type{ptrdiff\_t}& Differenza fra due puntatori.\\
     \type{time\_t}  & Numero di secondi (in tempo di calendario).\\
     \type{uid\_t}   & Identificatore di un utente.\\
@@ -375,10 +412,11 @@ tipi si sono rivelati inadeguati, e se ne 
 \end{table}
 
 Per questo motivo tutte le funzioni di libreria di solito non fanno
 \end{table}
 
 Per questo motivo tutte le funzioni di libreria di solito non fanno
-riferimento ai tipi standard del linguaggio C, ma ad una serie di \textsl{tipi
-  primitivi}, riportati in \tabref{tab:intro_primitive_types}, caratteristici
-di ogni sistema, definiti nell'header file \file{sys/types.h}, che associano i
-tipi utilizzati dalle funzioni di sistema ai tipi elementari supportati dal
+riferimento ai tipi elementari dello standard del linguaggio C, ma ad una
+serie di \textsl{tipi primitivi}\index{tipo!primitivo} del sistema, riportati
+in \tabref{tab:intro_primitive_types}, e definiti nell'header file
+\file{sys/types.h}, in modo da mantenere completamente indipendenti i tipi
+utilizzati dalle funzioni di sistema dai tipi elementari supportati dal
 compilatore C.
 
 
 compilatore C.
 
 
@@ -407,15 +445,14 @@ identificati fra IEEE ed ISO; si tenga conto inoltre che molto spesso si usa
 l'estensione IEEE anche come aggiunta al nome POSIX (ad esempio si può parlare
 di POSIX.4 come di POSIX.1b).
 
 l'estensione IEEE anche come aggiunta al nome POSIX (ad esempio si può parlare
 di POSIX.4 come di POSIX.1b).
 
-Si tenga presente però che nuove specifiche e proposte di standardizzazione si
-aggiungono continuamente, mentre le versioni precedenti vengono riviste;
-talvolta poi i riferimenti cambiamo nome, per cui anche solo seguire le
+Si tenga presente inoltre che nuove specifiche e proposte di standardizzazione
+si aggiungono continuamente, mentre le versioni precedenti vengono riviste;
+talvolta poi i riferimenti cambiano nome, per cui anche solo seguire le
 denominazioni usate diventa particolarmente faticoso; una pagina dove si
 possono recuperare varie (e di norma piuttosto intricate) informazioni è:
 \href{http://www.pasc.org/standing/sd11.html}
 {http://www.pasc.org/standing/sd11.html}.
 
 denominazioni usate diventa particolarmente faticoso; una pagina dove si
 possono recuperare varie (e di norma piuttosto intricate) informazioni è:
 \href{http://www.pasc.org/standing/sd11.html}
 {http://www.pasc.org/standing/sd11.html}.
 
-
 \begin{table}[htb]
   \footnotesize
   \centering
 \begin{table}[htb]
   \footnotesize
   \centering
@@ -429,13 +466,13 @@ possono recuperare varie (e di norma piuttosto intricate) informazioni 
     POSIX.2 & 1003.2 & 9945-2& Comandi                                      \\
     POSIX.3 & 2003   &TR13210& Metodi di test                               \\
     POSIX.4 & 1003.1b &  --- & Estensioni real-time                         \\
     POSIX.2 & 1003.2 & 9945-2& Comandi                                      \\
     POSIX.3 & 2003   &TR13210& Metodi di test                               \\
     POSIX.4 & 1003.1b &  --- & Estensioni real-time                         \\
-    POSIX.4a& 1003.1c &  --- & Threads                                      \\
+    POSIX.4a& 1003.1c &  --- & Thread                                       \\
     POSIX.4b& 1003.1d &9945-1& Ulteriori estensioni real-time               \\
     POSIX.5 & 1003.5  & 14519& Interfaccia per il linguaggio ADA            \\
     POSIX.6 & 1003.2c,1e& 9945-2& Sicurezza                                 \\
     POSIX.8 & 1003.1f& 9945-1& Accesso ai file via rete                     \\
     POSIX.4b& 1003.1d &9945-1& Ulteriori estensioni real-time               \\
     POSIX.5 & 1003.5  & 14519& Interfaccia per il linguaggio ADA            \\
     POSIX.6 & 1003.2c,1e& 9945-2& Sicurezza                                 \\
     POSIX.8 & 1003.1f& 9945-1& Accesso ai file via rete                     \\
-    POSIX.9 & 1003.9  &  --- & Intercaccia per il Fortran-77                \\
-    POSIX.12& 1003.1g& 9945-1& Sockets                                      \\
+    POSIX.9 & 1003.9  &  --- & Interfaccia per il Fortran-77                \\
+    POSIX.12& 1003.1g& 9945-1& Socket                                       \\
     \hline
   \end{tabular}
   \caption{Elenco dei vari standard POSIX e relative denominazioni.}
     \hline
   \end{tabular}
   \caption{Elenco dei vari standard POSIX e relative denominazioni.}
@@ -521,7 +558,7 @@ richiede sia X11 che Motif). La conformit
 del nome \textit{Unix 98}, usato spesso anche per riferirsi allo standard.
 
 
 del nome \textit{Unix 98}, usato spesso anche per riferirsi allo standard.
 
 
-\subsection{Lo ``standard'' BSD}
+\subsection{Lo ``\textsl{standard}'' BSD}
 \label{sec:intro_bsd}
 
 Lo sviluppo di BSD iniziò quando la fine della collaborazione fra l'Università
 \label{sec:intro_bsd}
 
 Lo sviluppo di BSD iniziò quando la fine della collaborazione fra l'Università
@@ -627,10 +664,10 @@ Le macro disponibili per i vari standard sono le seguenti:
   compatibilità prima di quelle normali.
 \item[\macro{\_SVID\_SOURCE}] definendo questa macro si attivano le
   funzionalità derivate da SVID. Esse comprendono anche quelle definite negli
   compatibilità prima di quelle normali.
 \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.
+  standard ISO C, POSIX.1, POSIX.2, e X/Open.
 \item[\macro{\_XOPEN\_SOURCE}] definendo questa macro si attivano le
   funzionalità descritte nella \textit{X/Open Portability Guide}. Anche queste
 \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
+  sono un sovrainsieme 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
   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
@@ -660,10 +697,10 @@ esplicitamente definendo la macro \macro{\_GNU\_SOURCE} prima di
 includere i vari header file.
 
 
 includere i vari header file.
 
 
-\subsection{Gli standard di GNU/Linux}
-\label{sec:intro_linux_std}
+%% \subsection{Gli standard di GNU/Linux}
+%% \label{sec:intro_linux_std}
 
 
-Da fare (o cassare, a seconda del tempo e della voglia).
+%% Da fare (o cassare, a seconda del tempo e della voglia).