Reindicizzazioni, si prosegue.
[gapil.git] / system.tex
index 8644cb796abb3061fd6fd94b7fe4e098805cf82f..22f0eb152e054fc8de196c0adb3687404ffa7b3e 100644 (file)
@@ -1,6 +1,6 @@
 %% system.tex
 %%
-%% Copyright (C) 2000-2014 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",
@@ -716,9 +716,9 @@ informazioni degli utenti e dei gruppi per insiemi di macchine e servizi
 all'interno di una stessa organizzazione, in modo da mantenere coerenti i
 dati, ha portato anche alla necessità di poter recuperare e memorizzare dette
 informazioni su supporti diversi dai file citati, introducendo il sistema del
-\itindex{Name~Service~Switch~(NSS)} \textit{Name Service Switch} che
-tratteremo brevemente più avanti (in sez.~\ref{sec:sock_resolver}) dato che la
-sua applicazione è cruciale nella procedura di risoluzione di nomi di rete.
+\itindex{Name~Service~Switch~(NSS)} \textit{Name Service Switch} (che
+tratteremo brevemente in sez.~\ref{sec:sock_resolver}) dato che la sua
+applicazione è cruciale nella procedura di risoluzione di nomi di rete.
 
 In questo paragrafo ci limiteremo comunque a trattare le funzioni classiche
 per la lettura delle informazioni relative a utenti e gruppi tralasciando
@@ -879,16 +879,16 @@ fig.~\ref{fig:sys_group_struct}.
 
 Le funzioni viste finora sono in grado di leggere le informazioni sia
 direttamente dal file delle password in \conffile{/etc/passwd} che tramite il
-sistema del \itindex{Name~Service~Switch~(NSS)} \textit{Name Service Switch} e
-sono completamente generiche. Si noti però che non c'è una funzione che
-permetta di impostare direttamente una password.\footnote{in realtà questo può
-  essere fatto ricorrendo alle funzioni della libreria PAM, ma questo non è un
-  argomento che tratteremo qui.} Dato che POSIX non prevede questa possibilità
-esiste un'altra interfaccia che lo fa, derivata da SVID le cui funzioni sono
-riportate in tab.~\ref{tab:sys_passwd_func}. Questa interfaccia però funziona
-soltanto quando le informazioni sono mantenute su un apposito file di
-\textsl{registro} di utenti e gruppi, con il formato classico di
-\conffile{/etc/passwd} e \conffile{/etc/group}.
+sistema del \textit{Name Service Switch} e sono completamente generiche. Si
+noti però che non c'è una funzione che permetta di impostare direttamente una
+password.\footnote{in realtà questo può essere fatto ricorrendo alle funzioni
+  della libreria PAM, ma questo non è un argomento che tratteremo qui.} Dato
+che POSIX non prevede questa possibilità esiste un'altra interfaccia che lo
+fa, derivata da SVID le cui funzioni sono riportate in
+tab.~\ref{tab:sys_passwd_func}. Questa interfaccia però funziona soltanto
+quando le informazioni sono mantenute su un apposito file di \textsl{registro}
+di utenti e gruppi, con il formato classico di \conffile{/etc/passwd} e
+\conffile{/etc/group}.
 
 \begin{table}[htb]
   \footnotesize
@@ -1537,11 +1537,11 @@ indicano rispettivamente il tempo impiegato dal processo nell'eseguire le
 istruzioni in \textit{user space}, e quello impiegato dal kernel nelle
 \textit{system call} eseguite per conto del processo (vedi
 sez.~\ref{sec:sys_unix_time}). I campi \var{ru\_minflt} e \var{ru\_majflt}
-servono a quantificare l'uso della memoria virtuale\index{memoria~virtuale} e
-corrispondono rispettivamente al numero di \itindex{page~fault} \textit{page
-  fault} (vedi sez.~\ref{sec:proc_mem_gen}) avvenuti senza richiedere I/O su
-disco (i cosiddetti \textit{minor page fault}), a quelli che invece han
-richiesto I/O su disco (detti invece \textit{major page
+servono a quantificare l'uso della memoria virtuale e corrispondono
+rispettivamente al numero di \textit{page fault} (vedi
+sez.~\ref{sec:proc_mem_gen}) avvenuti senza richiedere I/O su disco (i
+cosiddetti \textit{minor page fault}), a quelli che invece han richiesto I/O
+su disco (detti invece \textit{major page
   fault}).% mentre \var{ru\_nswap} ed al numero di volte che
 % il processo è stato completamente tolto dalla memoria per essere inserito
 % nello swap.
@@ -1650,7 +1650,7 @@ di quest'ultimo.  Nello specificare un limite, oltre a fornire dei valori
 specifici, si può anche usare la costante \const{RLIM\_INFINITY} che permette
 di sbloccare completamente l'uso di una risorsa. Si ricordi però che solo un
 processo con i privilegi di amministratore\footnote{per essere precisi in
-  questo caso quello che serve è la \itindex{capabilities} \textit{capability}
+  questo caso quello che serve è la \textit{capability}
   \const{CAP\_SYS\_RESOURCE} (vedi sez.~\ref{sec:proc_capabilities}).} può
 innalzare un limite al di sopra del valore corrente del limite massimo ed
 usare un valore qualsiasi per entrambi i limiti.
@@ -1858,8 +1858,8 @@ che sia stata definita la macro \macro{\_GNU\_SOURCE}. Il primo argomento
 indica il \ids{PID} del processo di cui si vogliono cambiare i limiti e si può
 usare un valore nullo per indicare il processo chiamante.  Per modificare i
 limiti di un altro processo, a meno di non avere privilegi
-amministrativi,\footnote{anche in questo caso la \itindex{capabilities}
-  \textit{capability} necessaria è \const{CAP\_SYS\_RESOURCE} (vedi
+amministrativi,\footnote{anche in questo caso la \textit{capability}
+  necessaria è \const{CAP\_SYS\_RESOURCE} (vedi
   sez.~\ref{sec:proc_capabilities}).}  l'\ids{UID} ed il \ids{GID} reale del
 chiamante devono coincidere con \ids{UID} e \ids{GID} del processo indicato
 per i tre gruppi reale, effettivo e salvato.
@@ -1878,14 +1878,13 @@ a \func{getrlimit} e \func{setrlimit}, così come i restanti requisiti.
 
 La gestione della memoria è già stata affrontata in dettaglio in
 sez.~\ref{sec:proc_memory}; abbiamo visto allora che il kernel provvede il
-meccanismo della \index{memoria~virtuale} memoria virtuale attraverso la
-divisione della memoria fisica in pagine.  In genere tutto ciò è del tutto
-trasparente al singolo processo, ma in certi casi, come per l'I/O mappato in
-memoria (vedi sez.~\ref{sec:file_memory_map}) che usa lo stesso meccanismo per
-accedere ai file, è necessario conoscere le dimensioni delle pagine usate dal
-kernel. Lo stesso vale quando si vuole gestire in maniera ottimale
-l'interazione della memoria che si sta allocando con il meccanismo della
-\index{paginazione} paginazione.
+meccanismo della memoria virtuale attraverso la divisione della memoria fisica
+in pagine.  In genere tutto ciò è del tutto trasparente al singolo processo,
+ma in certi casi, come per l'I/O mappato in memoria (vedi
+sez.~\ref{sec:file_memory_map}) che usa lo stesso meccanismo per accedere ai
+file, è necessario conoscere le dimensioni delle pagine usate dal kernel. Lo
+stesso vale quando si vuole gestire in maniera ottimale l'interazione della
+memoria che si sta allocando con il meccanismo della paginazione.
 
 Un tempo la dimensione delle pagine di memoria era fissata una volta per tutte
 dall'architettura hardware, per cui il relativo valore veniva mantenuto in una
@@ -1972,11 +1971,11 @@ Il suo prototipo è:
 \end{funcproto}
 
 La funzione restituisce in ciascun elemento di \param{loadavg} il numero medio
-di processi attivi sulla coda dello \itindex{scheduler} scheduler, calcolato
-su diversi intervalli di tempo.  Il numero di intervalli che si vogliono
-leggere è specificato da \param{nelem}, dato che nel caso di Linux il carico
-viene valutato solo su tre intervalli (corrispondenti a 1, 5 e 15 minuti),
-questo è anche il massimo valore che può essere assegnato a questo argomento.
+di processi attivi sulla coda dello \textit{scheduler}, calcolato su diversi
+intervalli di tempo.  Il numero di intervalli che si vogliono leggere è
+specificato da \param{nelem}, dato che nel caso di Linux il carico viene
+valutato solo su tre intervalli (corrispondenti a 1, 5 e 15 minuti), questo è
+anche il massimo valore che può essere assegnato a questo argomento.
 
 
 \subsection{La \textsl{contabilità} in stile BSD}
@@ -2020,7 +2019,7 @@ prototipo è:
 La funzione attiva il salvataggio dei dati sul file indicato dal
 \textit{pathname} contenuti nella stringa puntata da \param{filename}; la
 funzione richiede che il processo abbia i privilegi di amministratore (è
-necessaria la \itindex{capabilities} capability \const{CAP\_SYS\_PACCT}, vedi
+necessaria la \textit{capability} \const{CAP\_SYS\_PACCT}, vedi
 sez.~\ref{sec:proc_capabilities}). Se si specifica il valore \val{NULL} per
 \param{filename} il \textit{BSD accounting} viene invece disabilitato. Un
 semplice esempio per l'uso di questa funzione è riportato nel programma
@@ -2028,10 +2027,9 @@ semplice esempio per l'uso di questa funzione è riportato nel programma
 
 Quando si attiva la contabilità, il file che si indica deve esistere; esso
 verrà aperto in sola scrittura e le informazioni verranno registrate in
-\itindex{append~mode} \textit{append} in coda al file tutte le volte che un
-processo termina. Le informazioni vengono salvate in formato binario, e
-corrispondono al contenuto della apposita struttura dati definita all'interno
-del kernel.
+\textit{append} in coda al file tutte le volte che un processo termina. Le
+informazioni vengono salvate in formato binario, e corrispondono al contenuto
+della apposita struttura dati definita all'interno del kernel.
 
 Il funzionamento di \func{acct} viene inoltre modificato da uno specifico
 parametro di sistema, modificabile attraverso \sysctlfile{kernel/acct} (o
@@ -2378,9 +2376,9 @@ sia necessario; il suo prototipo è:
 
 Dato che modificare l'ora ha un impatto su tutto il sistema il cambiamento
 dell'orologio è una operazione privilegiata e questa funzione può essere usata
-solo da un processo con i privilegi di amministratore (per la precisione la la
-\itindex{capabilities} capability \const{CAP\_SYS\_TIME}), altrimenti la
-chiamata fallirà con un errore di \errcode{EPERM}.
+solo da un processo con i privilegi di amministratore (per la precisione la
+\textit{capability} \const{CAP\_SYS\_TIME}), altrimenti la chiamata fallirà
+con un errore di \errcode{EPERM}.
 
 Data la scarsa precisione nell'uso di \type{time\_t}, che ha una risoluzione
 massima di un secondo, quando si devono effettuare operazioni sui tempi di
@@ -2416,10 +2414,9 @@ non dipende dall'uso di queste strutture.
 
 Come nel caso di \func{stime} anche \func{settimeofday} può essere utilizzata
 solo da un processo coi privilegi di amministratore e più precisamente con la
-\itindex{capability} capacità \const{CAP\_SYS\_TIME}. Si tratta comunque di
-una condizione generale che continua a valere per qualunque funzione che vada
-a modificare l'orologio di sistema, comprese tutte quelle che tratteremo in
-seguito.
+capacità \const{CAP\_SYS\_TIME}. Si tratta comunque di una condizione generale
+che continua a valere per qualunque funzione che vada a modificare l'orologio
+di sistema, comprese tutte quelle che tratteremo in seguito.
 
 Il secondo argomento di entrambe le funzioni è una struttura
 \struct{timezone}, che storicamente veniva utilizzata per specificare appunto