Aggiornamenti vari.
[gapil.git] / intro.tex
index f8028518d156ed631e04df129ba10f1014e8add3..611bc37478e15e095ba691c103cbd76e9603e173 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -1,6 +1,6 @@
 %% intro.tex
 %%
-%% Copyright (C) 2000-2012 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 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 "Un preambolo",
@@ -116,11 +116,13 @@ fig.~\ref{fig:intro_sys_struct}.
   \label{fig:intro_sys_struct}
 \end{figure}
 
-Una parte del kernel, lo \itindex{scheduler} \textit{scheduler}, si occupa di
-stabilire, sulla base di un opportuno calcolo delle priorità e con una
-suddivisione appropriata del tempo di processore, quali fra i vari
-``\textsl{processi}'' presenti nel sistema deve essere eseguito, realizzando
-il cosiddetto \itindex{preemptive~multitasking} \textit{preemptive
+\itindbeg{scheduler}
+
+Una parte del kernel, lo \textit{scheduler}, si occupa di stabilire, sulla
+base di un opportuno calcolo delle priorità e con una suddivisione appropriata
+del tempo di processore, quali fra i vari ``\textsl{processi}'' presenti nel
+sistema deve essere eseguito, realizzando il cosiddetto
+\itindex{preemptive~multitasking} \textit{preemptive
   multitasking}.\footnote{si chiama così quella gestione del
   \textit{multitasking} in cui è il kernel a decidere a chi assegnare l'uso
   della CPU, potendo interrompere l'esecuzione di un processo in qualunque
@@ -130,6 +132,8 @@ attraverso delle ``\textsl{chiamate al sistema}'' (vedi
 sez.~\ref{sec:intro_syscall}) che restituiranno il controllo al kernel per
 eseguire le operazioni necessarie.
 
+\itindend{scheduler}
+
 La memoria viene sempre gestita dal kernel attraverso il meccanismo della
 \index{memoria~virtuale} \textsl{memoria virtuale}, che consente di assegnare
 a ciascun processo uno spazio di indirizzi ``\textsl{virtuale}'' (vedi
@@ -342,13 +346,12 @@ L'utente e il gruppo sono identificati dal kernel un identificativo numerico,
 la cui corrispondenza ad un nome espresso in caratteri è inserita nei due file
 \conffile{/etc/passwd} e \conffile{/etc/group}.\footnote{in realtà negli
   sistemi più moderni, come vedremo in sez.~\ref{sec:sys_user_group} queste
-  informazioni possono essere mantenute, con l'uso del
-  \itindex{Name~Service~Switch~(NSS)} \textit{Name Service Switch}, su varie
-  tipologie di supporti, compresi server centralizzati come LDAP.}  Questi
-identificativi sono l'\textit{user identifier}, detto in breve
-\textsl{user-ID}, ed indicato dall'acronimo \ids{UID}, e il \textit{group
-  identifier}, detto in breve \textsl{group-ID}, ed identificato dall'acronimo
-\ids{GID}, torneremo in dettaglio su questo argomento in
+  informazioni possono essere mantenute, con l'uso del \textit{Name Service
+    Switch}, su varie tipologie di supporti, compresi server centralizzati
+  come LDAP.}  Questi identificativi sono l'\textit{user identifier}, detto in
+breve \textsl{user-ID}, ed indicato dall'acronimo \ids{UID}, e il
+\textit{group identifier}, detto in breve \textsl{group-ID}, ed identificato
+dall'acronimo \ids{GID}, torneremo in dettaglio su questo argomento in
 sez.~\ref{sec:proc_perms}.  Il kernel conosce ed utilizza soltanto questi
 valori numerici, i nomi ad essi associati sono interamente gestiti in
 \textit{user space} con opportune funzioni di libreria, torneremo su questo
@@ -448,10 +451,10 @@ fig.~\ref{fig:file_VFS_scheme}.
 \end{figure}
 
 Questa interfaccia resta la stessa anche quando, invece che a dei normali
-file, si accede alle periferiche coi citati \index{file!di~dispositivo} file
-di dispositivo, solo che in questo caso invece di usare il codice del
-filesystem che accede al disco, il \textit{Virtual File System} eseguirà
-direttamente il codice del kernel che permette di accedere alla periferica.
+file, si accede alle periferiche coi citati file di dispositivo, solo che in
+questo caso invece di usare il codice del filesystem che accede al disco, il
+\textit{Virtual File System} eseguirà direttamente il codice del kernel che
+permette di accedere alla periferica.
 
 \itindend{Virtual~File~System}
 
@@ -475,9 +478,9 @@ viene posto alla radice dell'albero dei file.
 Tutti gli ulteriori filesystem che possono essere disponibili su altri
 dispositivi dovranno a loro volta essere inseriti nell'albero, montandoli su
 altrettante directory del filesystem radice, su quelli che vengono chiamati
-\index{mount~point} \textit{mount point}.  Questo comunque avverrà sempre in
-un secondo tempo, in genere a cura dei programmi eseguiti nella procedura di
-inizializzazione del sistema, grazie alle funzioni che tratteremo in
+\textit{mount point}.  Questo comunque avverrà sempre in un secondo tempo, in
+genere a cura dei programmi eseguiti nella procedura di inizializzazione del
+sistema, grazie alle funzioni che tratteremo in
 sez.~\ref{sec:filesystem_mounting}.
 
 
@@ -515,7 +518,7 @@ directory.  All'interno dello stesso albero si potranno poi inserire anche
 tutti gli altri oggetti previsti l'interfaccia del
 \itindex{Virtual~File~System} VFS (su cui torneremo in
 sez.~\ref{sec:file_file_types}), come le fifo, i collegamenti simbolici, i
-socket e gli stessi \index{file!di~dispositivo} file di dispositivo.
+socket e gli stessi file di dispositivo.
 
 La convenzione usata nei sistemi unix-like per indicare i \textit{pathname}
 dei file è quella di usare il carattere ``\texttt{/}'' come separatore fra i
@@ -605,25 +608,27 @@ completo in tab.~\ref{tab:file_file_types}.
     \multicolumn{2}{|c|}{\textbf{Tipo di file}} & \textbf{Descrizione} \\
     \hline
     \hline
-      \textit{regular file} & \textsl{file regolare} &
-      Un file che contiene dei dati (l'accezione normale di file).\\
-      \textit{directory} & \textsl{cartella o direttorio} &
-      Un file che contiene una lista di nomi associati a degli
-      \itindex{inode} \textit{inode} (vedi sez.~\ref{sec:file_vfs_work}).\\
-      \textit{symbolic link} & \textsl{collegamento simbolico} &
-      Un file che contiene un riferimento ad un altro file/directory.\\
-      \textit{char device} & \textsl{dispositivo a caratteri} &
-      Un file \textsl{speciale} che identifica una periferica ad accesso a
-      caratteri.\\ 
-      \textit{block device} & \textsl{dispositivo a blocchi} &
-      Un file \textsl{speciale} che identifica una periferica ad accesso a
-      blocchi.\\ 
-      \textit{fifo} & ``\textsl{coda}'' &
-      Un file \textsl{speciale} che identifica una linea di comunicazione 
-      unidirezionale (vedi sez.~\ref{sec:ipc_named_pipe}).\\
-      \textit{socket} & ``\textsl{presa}''&
-      Un file \textsl{speciale} che identifica una linea di comunicazione 
-      bidirezionale (vedi cap.~\ref{cha:socket_intro}).\\
+      \textit{regular file} & \textsl{file regolare} & Un file che contiene dei dati (l'accezione
+                                                       normale di file).\\ 
+      \textit{directory} & \textsl{cartella o direttorio} & Un file che contiene una lista
+                                                            di nomi associati a degli
+                                                            \textit{inode} (vedi
+                                                            sez.~\ref{sec:file_vfs_work}).\\ 
+      \textit{symbolic link} & \textsl{collegamento simbolico} & Un file che contiene un
+                                                                 riferimento ad un altro
+                                                                 file/directory.\\ 
+      \textit{char device} & \textsl{dispositivo a caratteri} & Un file \textsl{speciale}
+                                                                che identifica una periferica
+                                                                ad accesso a caratteri.\\ 
+      \textit{block device} & \textsl{dispositivo a blocchi} & Un file \textsl{speciale}
+                                                               che identifica una periferica
+                                                               ad accesso a blocchi.\\ 
+      \textit{fifo} & ``\textsl{coda}'' & Un file \textsl{speciale} che
+                                          identifica una linea di comunicazione 
+                                          unidirezionale (vedi sez.~\ref{sec:ipc_named_pipe}).\\
+      \textit{socket} & ``\textsl{presa}''& Un file \textsl{speciale} che identifica una linea di
+                                            comunicazione bidirezionale (vedi
+                                            cap.~\ref{cha:socket_intro}).\\ 
     \hline
     \end{tabular}
     \caption{Tipologia dei file definiti nel VFS}
@@ -879,7 +884,8 @@ infinita serie di problemi di portabilità.
     \type{dev\_t}   & Numero di dispositivo (vedi sez.~\ref{sec:file_mknod}).\\
     \type{gid\_t}   & Identificatore di un gruppo (vedi
                       sez.~\ref{sec:proc_access_id}).\\
-    \type{ino\_t}   & Numero di \itindex{inode} \textit{inode}.\\
+    \type{ino\_t}   & Numero di \textit{inode} 
+                      (vedi sez.~\ref{sec:file_vfs_work}).\\ 
     \type{key\_t}   & Chiave per il System V IPC (vedi
                       sez.~\ref{sec:ipc_sysv_generic}).\\
     \type{loff\_t}  & Posizione corrente in un file.\\
@@ -893,8 +899,7 @@ infinita serie di problemi di portabilità.
     \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 \itindex{calendar~time}
-                      \textit{calendar time}, vedi 
+    \type{time\_t}  & Numero di secondi (in \textit{calendar time}, vedi 
                       sez.~\ref{sec:sys_time}).\\
     \type{uid\_t}   & Identificatore di un utente (vedi
                       sez.~\ref{sec:proc_access_id}).\\
@@ -1068,12 +1073,11 @@ sistema e che sono definite nello standard POSIX.2.
 
 Nelle versioni più recenti del kernel e delle librerie sono inoltre supportate
 ulteriori funzionalità aggiunte dallo standard POSIX.1c per quanto riguarda i
-\itindex{thread} \textit{thread} (vedi cap.~\ref{cha:threads}), e dallo
-standard POSIX.1b per quanto riguarda i segnali e lo \itindex{scheduler}
-scheduling real-time (sez.~\ref{sec:sig_real_time} e
-sez.~\ref{sec:proc_real_time}), la misura del tempo, i meccanismi di
-intercomunicazione (sez.~\ref{sec:ipc_posix}) e l'I/O asincrono
-(sez.~\ref{sec:file_asyncronous_io}).
+\textit{thread} (vedi cap.~\ref{cha:threads}), e dallo standard POSIX.1b per
+quanto riguarda i segnali e lo scheduling real-time
+(sez.~\ref{sec:sig_real_time} e sez.~\ref{sec:proc_real_time}), la misura del
+tempo, i meccanismi di intercomunicazione (sez.~\ref{sec:ipc_posix}) e l'I/O
+asincrono (sez.~\ref{sec:file_asyncronous_io}).
 
 Lo standard principale resta comunque POSIX.1, che continua ad evolversi; la
 versione più nota, cui gran parte delle implementazioni fanno riferimento, e
@@ -1275,12 +1279,25 @@ in essi definite, sono illustrate nel seguente elenco:
   \macro{\_GNU\_SOURCE}) è stata a sua volta attivata, nel qual caso queste
   hanno la precedenza. Se però si definisce \macro{\_BSD\_SOURCE} dopo aver
   definito una di queste macro, l'effetto sarà quello di dare la precedenza
-  alle funzioni in forma BSD.
+  alle funzioni in forma BSD. Questa macro è stata deprecata a partire dalle
+  \acr{glibc} 2.20, essendo ricompresa in \macro{\_DEFAULT\_SOURCE} che è
+  definita di default.
 
 \item[\macro{\_SVID\_SOURCE}] definendo questa macro si rendono disponibili le
   funzionalità derivate da SVID. Esse comprendono anche quelle definite negli
   standard ISO C, POSIX.1, POSIX.2, e X/Open (XPG$n$) illustrati in
-  precedenza.
+  precedenza. Questa macro è stata deprecata a partire dalle \acr{glibc} 2.20,
+  essendo ricompresa in \macro{\_DEFAULT\_SOURCE} che è definita di default.
+
+\item[\macro{\_DEFAULT\_SOURCE}] questa macro abilita le definizioni
+  considerate il \textit{default}, comprese quelle richieste dalla standard
+  POSIX.1-2008, ed è sostanzialente equivalente a \macro{\_SVID\_SOURCE}
+  \macro{\_BSD\_SOURCE}] e \macro{\_POSIX\_C\_SOURCE}. Essendo predefinita non
+  è necessario usarla a meno di non aver richiesto delle definizioni più
+  restrittive sia con altre macro che con i flag del compilatore, nel qual
+  caso abilita le funzioni che altrimenti sarebbero disabilitate. Questa macro
+  è stata introdotta a partire dalle \acr{glibc} 2.19 e consente di deprecare
+  \macro{\_SVID\_SOURCE} e \macro{\_BSD\_SOURCE}].
 
 \item[\macro{\_XOPEN\_SOURCE}] definendo questa macro si rendono disponibili
   le funzionalità descritte nella \textit{X/Open Portability Guide}. Anche
@@ -1323,6 +1340,12 @@ in essi definite, sono illustrate nel seguente elenco:
   viene tuttora riconosciuta come equivalente di \macro{\_ISOC99\_SOURCE} per
   compatibilità.
 
+\item[\macro{\_ISOC11\_SOURCE}] definendo questa macro si rendono disponibili
+  le funzionalità previste per la revisione delle librerie standard del C
+  introdotte con lo standard ISO C11, e abilita anche quelle previste dagli
+  standard C99 e C95. La macro è definita a partire dalla versione 2.16 della
+  \acr{glibc}.
+
 \item[\macro{\_GNU\_SOURCE}] definendo questa macro si rendono disponibili
   tutte le funzionalità disponibili nei vari standard oltre a varie estensioni
   specifiche presenti solo nella \acr{glibc} ed in Linux. Gli standard coperti