Aggiornamenti + alcune sockopt di IP
[gapil.git] / prochand.tex
index 62a7ea50221cb1894c4710a4f4ccb2a5f80b5e9e..62b02a4556d9f72754cf2ce3378461497d803a05 100644 (file)
@@ -1,6 +1,6 @@
 %% prochand.tex
 %%
-%% Copyright (C) 2000-2015 by Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2018 by 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",
@@ -210,7 +210,7 @@ riparte dal numero più basso disponibile a partire da un minimo di
   \constd{PID\_MAX} nei file \file{threads.h} e \file{fork.c} dei sorgenti del
   kernel, con il 2.6.x e la nuova interfaccia per i \textit{thread} anche il
   meccanismo di allocazione dei \ids{PID} è stato modificato ed il valore
-  massimo è impostabile attraverso il file \sysctlfile{kernel/pid\_max} e di
+  massimo è impostabile attraverso il file \sysctlfiled{kernel/pid\_max} e di
   default vale 32768.} che serve a riservare i \ids{PID} più bassi ai processi
 eseguiti direttamente dal kernel.  Per questo motivo, come visto in
 sez.~\ref{sec:proc_hierarchy}, il processo di avvio (\cmd{init}) ha sempre il
@@ -1298,8 +1298,8 @@ nuovo riceverne lo stato.
     \constd{WEXITED}   & Ritorna quando un processo figlio è terminato.\\
     \constd{WNOHANG}   & Ritorna immediatamente anche se non c'è niente da
                          notificare.\\ 
-    \constd{WSTOPPED}  Ritorna quando un processo figlio è stato fermato.\\
-    \constd{WCONTINUED}& Ritorna quando un processo figlio che era stato
+    \constd{WSTOPPED}  & Ritorna quando un processo figlio è stato fermato.\\
+    \const{WCONTINUED} & Ritorna quando un processo figlio che era stato
                          fermato ha ripreso l'esecuzione.\\
     \constd{WNOWAIT}   & Lascia il processo ancora in attesa di ricezione, così
                          che una successiva chiamata possa di nuovo riceverne
@@ -1674,8 +1674,8 @@ dell'eseguibile; il formato è ormai in completo disuso, per cui è molto
 probabile che non il relativo supporto non sia disponibile. Se il programma è
 in formato ELF per caricare le librerie dinamiche viene usato l'interprete
 indicato nel segmento \constd{PT\_INTERP} previsto dal formato stesso, in
-genere questo è \sysfile{/lib/ld-linux.so.1} per programmi collegati con la
-\acr{libc5}, e \sysfile{/lib/ld-linux.so.2} per programmi collegati con la
+genere questo è \sysfiled{/lib/ld-linux.so.1} per programmi collegati con la
+\acr{libc5}, e \sysfiled{/lib/ld-linux.so.2} per programmi collegati con la
 \acr{glibc}.
 
 Infine nel caso il programma che si vuole eseguire sia uno script e non un
@@ -1931,11 +1931,11 @@ dell'utente che ha lanciato il programma, effettuare il lavoro che non
 necessita di privilegi aggiuntivi, ed eventualmente tornare indietro.
 
 Come esempio per chiarire l'uso di queste funzioni prendiamo quello con cui
-viene gestito l'accesso al file \sysfile{/var/run/utmp}.  In questo file viene
+viene gestito l'accesso al file \sysfiled{/var/run/utmp}.  In questo file viene
 registrato chi sta usando il sistema al momento corrente; chiaramente non può
 essere lasciato aperto in scrittura a qualunque utente, che potrebbe
 falsificare la registrazione. Per questo motivo questo file (e l'analogo
-\sysfile{/var/log/wtmp} su cui vengono registrati login e logout) appartengono
+\sysfiled{/var/log/wtmp} su cui vengono registrati login e logout) appartengono
 ad un gruppo dedicato (in genere \acr{utmp}) ed i programmi che devono
 accedervi (ad esempio tutti i programmi di terminale in X, o il programma
 \cmd{screen} che crea terminali multipli su una console) appartengono a questo
@@ -2962,8 +2962,8 @@ corrente. Benché la funzione sia utilizzabile anche con processi sottoposti a
 politica ordinaria essa ha senso soltanto per quelli \textit{real-time}, dato
 che per i primi la priorità statica può essere soltanto nulla.  La
 disponibilità di entrambe le funzioni può essere verificata controllando la
-macro \macrod{\_POSIX\_PRIORITY\_SCHEDULING} che è definita
-nell'\textit{header file} \headfiled{sched.h}.
+macro \macro{\_POSIX\_PRIORITY\_SCHEDULING} che è definita nell'\textit{header
+  file} \headfiled{sched.h}.
 
 Se invece si vuole sapere quale è politica di \textit{scheduling} di un
 processo si può usare la funzione di sistema \funcd{sched\_getscheduler}, il
@@ -3057,7 +3057,7 @@ l'introduzione del \textit{Completely Fair Scheduler} questo comportamento è
 cambiato ed un processo che chiama la funzione viene inserito nella lista dei
 processi inattivo, con un tempo molto maggiore.\footnote{è comunque possibile
   ripristinare un comportamento analogo al precedente scrivendo il valore 1
-  nel file \sysctlfile{kernel/sched\_compat\_yield}.}
+  nel file \sysctlfiled{kernel/sched\_compat\_yield}.}
 
 L'uso delle funzione nella programmazione ordinaria può essere utile e
 migliorare le prestazioni generali del sistema quando si è appena rilasciata
@@ -3894,7 +3894,7 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
 
   Il comportamento di default prevede che per tutti i processi si applichi la
   politica generale di sistema definita nel file
-  \sysctlfile{vm/memory\_failure\_early\_kill}, ma specificando
+  \sysctlfiled{vm/memory\_failure\_early\_kill}, ma specificando
   per \param{arg2} il valore \constd{PR\_MCE\_KILL\_SET} è possibile impostare
   con il contenuto di \param{arg3} una politica specifica del processo
   chiamante. Si può tornare alla politica di default del sistema utilizzando
@@ -3967,6 +3967,9 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
 % codice e dati, stack, brack pointer ecc. vedi
 % http://git.kernel.org/linus/f606b77f1a9e362451aca8f81d8f36a3a112139e 
 
+% TODO documentare ARCH_SET_CPUID e ARCH_GET_CPUID, introdotte con il kernel
+% 4.12, vedi https://lwn.net/Articles/721182/
+
 
 \label{sec:prctl_operation}
 \end{basedescript}
@@ -4194,6 +4197,10 @@ elenco, che illustra quelle attualmente disponibili:\footnote{si fa
 % \item[\constd{CLONE\_NEWPID}]
 % \item[\constd{CLONE\_NEWUTS}]
 
+
+% TODO trattare CLONE_NEWCGROUP introdotto con il kernel 4.6, vedi
+% http://lwn.net/Articles/680566/ 
+
 \item[\constd{CLONE\_PARENT}]
 \item[\constd{CLONE\_PARENT\_SETTID}]
 \item[\constd{CLONE\_PID}]
@@ -4237,6 +4244,10 @@ elenco, che illustra quelle attualmente disponibili:\footnote{si fa
 % http://lwn.net/Articles/531498/
 
 
+% TODO trattare le funzioni di protezione della memoria pkey_alloc, pkey_free,
+% pkey_mprotect, introdotte con il kernel 4.8, vedi
+% http://lwn.net/Articles/689395/ e Documentation/x86/protection-keys.txt 
+
 %TODO trattare kcmp aggiunta con il kernel 3.5, vedi
 % https://lwn.net/Articles/478111/
 
@@ -4302,6 +4313,8 @@ elenco, che illustra quelle attualmente disponibili:\footnote{si fa
 %TODO trattare membarrier, introdotta con il kernel 4.3
 % vedi http://lwn.net/Articles/369567/ http://lwn.net/Articles/369640/
 % http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5b25b13ab08f616efd566347d809b4ece54570d1 
+% vedi anche l'ulteriore opzione "expedited" introdotta con il kernel 4.14
+% (https://lwn.net/Articles/728795/) 
 
 \section{Problematiche di programmazione multitasking}
 \label{sec:proc_multi_prog}
@@ -4477,8 +4490,8 @@ parte del programmatore.
 
 In genere le funzioni di libreria non sono rientranti, molte di esse ad
 esempio utilizzano variabili statiche, la \acr{glibc} però mette a
-disposizione due macro di compilatore, \macrod{\_REENTRANT} e
-\macrod{\_THREAD\_SAFE}, la cui definizione attiva le versioni rientranti di
+disposizione due macro di compilatore, \macro{\_REENTRANT} e
+\macro{\_THREAD\_SAFE}, la cui definizione attiva le versioni rientranti di
 varie funzioni di libreria, che sono identificate aggiungendo il suffisso
 \code{\_r} al nome della versione normale.