Reindicizzazione
[gapil.git] / prochand.tex
index 099e98b622b2d26eeeaee6138664eec4231b0a05..2fd1924c82ecb8e777fe443a3039b244dfbaa0c7 100644 (file)
@@ -599,9 +599,8 @@ Oltre ai file aperti i processi figli ereditano dal padre una serie di altre
 proprietà; la lista dettagliata delle proprietà che padre e figlio hanno in
 comune dopo l'esecuzione di una \func{fork} è la seguente:
 \begin{itemize*}
-\item i file aperti e gli eventuali flag di \itindex{close-on-exec}
-  \textit{close-on-exec} impostati (vedi sez.~\ref{sec:proc_exec} e
-  sez.~\ref{sec:file_fcntl_ioctl});
+\item i file aperti e gli eventuali flag di \textit{close-on-exec} impostati
+  (vedi sez.~\ref{sec:proc_exec} e sez.~\ref{sec:file_fcntl_ioctl});
 \item gli identificatori per il controllo di accesso: l'\textsl{user-ID
     reale}, il \textsl{group-ID reale}, l'\textsl{user-ID effettivo}, il
   \textsl{group-ID effettivo} ed i \textsl{group-ID supplementari} (vedi
@@ -609,18 +608,18 @@ comune dopo l'esecuzione di una \func{fork} è la seguente:
 \item gli identificatori per il controllo di sessione: il
   \itindex{process~group} \textit{process group-ID} e il \textit{session id}
   ed il terminale di controllo (vedi sez.~\ref{sec:sess_proc_group});
-\item la \index{directory~di~lavoro} directory di lavoro e la directory radice
-  (vedi sez.~\ref{sec:file_work_dir} e sez.~\ref{sec:file_chroot});
+\item la directory di lavoro (vedi sez.~\ref{sec:file_work_dir}) e la
+  directory radice (vedi sez.~\ref{sec:file_chroot});
 \item la maschera dei permessi di creazione dei file (vedi
   sez.~\ref{sec:file_perm_management});
-\item la \index{maschera~dei~segnali} maschera dei segnali bloccati (vedi
+\item la maschera dei segnali bloccati (vedi
   sez.~\ref{sec:sig_sigmask}) e le azioni installate (vedi
   sez.~\ref{sec:sig_gen_beha});
 \item i segmenti di memoria condivisa agganciati al processo (vedi
   sez.~\ref{sec:ipc_sysv_shm});
 \item i limiti sulle risorse (vedi sez.~\ref{sec:sys_resource_limit});
-\item il valori di \textit{nice}, le priorità real-time e le affinità di
-  processore (vedi sez.~\ref{sec:proc_sched_stand},
+\item il valori di \textit{nice}, le priorità \textit{real-time} e le affinità
+  di processore (vedi sez.~\ref{sec:proc_sched_stand},
   sez.~\ref{sec:proc_real_time} e sez.~\ref{sec:proc_sched_multiprocess});
 \item le variabili di ambiente (vedi sez.~\ref{sec:proc_environ}).
 \item l'insieme dei descrittori associati alle code di messaggi POSIX (vedi
@@ -1125,11 +1124,10 @@ restituito da entrambe le funzioni dipende dall'implementazione, ma
 tradizionalmente gli 8 bit meno significativi sono riservati per memorizzare
 lo \itindex{exit~status} stato di uscita del processo, e gli altri per
 indicare il segnale che ha causato la terminazione (in caso di conclusione
-anomala), uno per indicare se è stato generato un \itindex{core~dump}
-\textit{core dump} (vedi sez.~\ref{sec:sig_standard}), ecc.\footnote{le
-  definizioni esatte si possono trovare in \file{<bits/waitstatus.h>} ma
-  questo file non deve mai essere usato direttamente, esso viene incluso
-  attraverso \file{<sys/wait.h>}.}
+anomala), uno per indicare se è stato generato un \textit{core dump} (vedi
+sez.~\ref{sec:sig_standard}), ecc.\footnote{le definizioni esatte si possono
+  trovare in \file{<bits/waitstatus.h>} ma questo file non deve mai essere
+  usato direttamente, esso viene incluso attraverso \file{<sys/wait.h>}.}
 
 \begin{table}[!htb]
   \centering
@@ -1159,7 +1157,7 @@ anomala), uno per indicare se è stato generato un \itindex{core~dump}
                                       \val{WIFSIGNALED} ha restituito un
                                       valore non nullo.\\
     \macro{WCOREDUMP}\texttt{(s)}   & Vera se il processo terminato ha
-                                      generato un file di \itindex{core~dump}
+                                      generato un file di 
                                       \textit{core dump}; può essere valutata
                                       solo se \val{WIFSIGNALED} ha restituito
                                       un valore non nullo.\footnotemark \\
@@ -1319,7 +1317,7 @@ campi:
   \const{CLD\_DUMPED} a indicare la ragione del ritorno della funzione, il cui
   significato è, nell'ordine: uscita normale, terminazione da segnale,
   processo fermato, processo riavviato, processo terminato in
-  \itindex{core~dump} \textit{core dump} (vedi sez.~\ref{sec:sig_standard}).
+  \textit{core dump} (vedi sez.~\ref{sec:sig_standard}).
 \end{basedescript}
 
 Infine Linux, seguendo un'estensione di BSD, supporta altre due funzioni per
@@ -1541,8 +1539,8 @@ seguente:
   (\ids{PPID});
 \item l'\textsl{user-ID reale}, il \textsl{group-ID reale} ed i
   \textsl{group-ID supplementari} (vedi sez.~\ref{sec:proc_access_id});
-\item la directory radice e la \index{directory~di~lavoro} directory di lavoro
-  corrente (vedi sez.~\ref{sec:file_work_dir});
+\item la directory radice e la directory di lavoro corrente (vedi
+  sez.~\ref{sec:file_work_dir});
 \item la maschera di creazione dei file \itindex{umask} (\textit{umask}, vedi
   sez.~\ref{sec:file_perm_management}) ed i \textit{lock} sui file (vedi
   sez.~\ref{sec:file_locking});
@@ -1559,8 +1557,7 @@ seguente:
 % TODO ===========Importante=============
 % TODO questo sotto è incerto, verificare
 % TODO ===========Importante=============
-\item la \index{maschera~dei~segnali} maschera dei segnali (si veda
-  sez.~\ref{sec:sig_sigmask}). 
+\item la maschera dei segnali (si veda sez.~\ref{sec:sig_sigmask}).
 \end{itemize*}
 
 Una serie di proprietà del processo originale, che non avrebbe senso mantenere
@@ -1621,18 +1618,23 @@ nell'esecuzione della funzione \func{exec}, queste sono:
   localizzazione al valore di default POSIX. 
 \end{itemize*}
 
+\itindbeg{close-on-exec}
+
 La gestione dei file aperti nel passaggio al nuovo programma lanciato con
-\func{exec} dipende dal valore che ha il flag di \itindex{close-on-exec}
-\textit{close-on-exec} (vedi sez.~\ref{sec:file_fcntl_ioctl}) per ciascun
-\textit{file descriptor}. I file per cui è impostato vengono chiusi, tutti gli
-altri file restano aperti. Questo significa che il comportamento predefinito è
-che i file restano aperti attraverso una \func{exec}, a meno di una chiamata
-esplicita a \func{fcntl} che imposti il suddetto flag.  Per le directory, lo
-standard POSIX.1 richiede che esse vengano chiuse attraverso una \func{exec},
-in genere questo è fatto dalla funzione \func{opendir} (vedi
+\func{exec} dipende dal valore che ha il flag di \textit{close-on-exec} (vedi
+sez.~\ref{sec:file_fcntl_ioctl}) per ciascun \textit{file descriptor}. I file
+per cui è impostato vengono chiusi, tutti gli altri file restano
+aperti. Questo significa che il comportamento predefinito è che i file restano
+aperti attraverso una \func{exec}, a meno di una chiamata esplicita a
+\func{fcntl} che imposti il suddetto flag.  Per le directory, lo standard
+POSIX.1 richiede che esse vengano chiuse attraverso una \func{exec}, in genere
+questo è fatto dalla funzione \func{opendir} (vedi
 sez.~\ref{sec:file_dir_read}) che effettua da sola l'impostazione del flag di
-\itindex{close-on-exec} \textit{close-on-exec} sulle directory che apre, in
-maniera trasparente all'utente.
+\textit{close-on-exec} sulle directory che apre, in maniera trasparente
+all'utente.
+
+\itindend{close-on-exec}
+
 
 Il comportamento della funzione in relazione agli identificatori relativi al
 controllo di accesso verrà trattato in dettaglio in sez.~\ref{sec:proc_perms},
@@ -3642,29 +3644,28 @@ momento:\footnote{alla stesura di questa sezione, cioè con il kernel 3.2.}
 
 \item[\const{PR\_SET\_DUMPABLE}] Imposta il flag che determina se la
   terminazione di un processo a causa di un segnale per il quale è prevista la
-  generazione di un file di \itindex{core~dump} \textit{core dump} (vedi
+  generazione di un file di \textit{core dump} (vedi
   sez.~\ref{sec:sig_standard}) lo genera effettivamente. In genere questo flag
   viene attivato automaticamente, ma per evitare problemi di sicurezza (la
   generazione di un file da parte di processi privilegiati può essere usata
   per sovrascriverne altri) viene cancellato quando si mette in esecuzione un
   programma con i bit \acr{suid} e \acr{sgid} attivi (vedi
   sez.~\ref{sec:file_special_perm}) o con l'uso delle funzioni per la modifica
-  degli \ids{UID} dei processi (vedi sez.~\ref{sec:proc_setuid}). 
+  degli \ids{UID} dei processi (vedi sez.~\ref{sec:proc_setuid}).
 
   L'operazione è stata introdotta a partire dal kernel 2.3.20, fino al kernel
   2.6.12 e per i kernel successivi al 2.6.17 era possibile usare solo un
   valore 0 di \param{arg2} per disattivare il flag ed un valore 1 per
   attivarlo. Nei kernel dal 2.6.13 al 2.6.17 è stato supportato anche il
-  valore 2, che causava la generazione di un \itindex{core~dump} \textit{core
-    dump} leggibile solo dall'amministratore, ma questa funzionalità è stata
-  rimossa per motivi di sicurezza, in quanto consentiva ad un utente normale
-  di creare un file di \textit{core dump} appartenente all'amministratore in
-  directory dove l'utente avrebbe avuto permessi di accesso.
+  valore 2, che causava la generazione di un \textit{core dump} leggibile solo
+  dall'amministratore, ma questa funzionalità è stata rimossa per motivi di
+  sicurezza, in quanto consentiva ad un utente normale di creare un file di
+  \textit{core dump} appartenente all'amministratore in directory dove
+  l'utente avrebbe avuto permessi di accesso.
 
 \item[\const{PR\_GET\_DUMPABLE}] Ottiene come valore di ritorno della funzione
   lo stato corrente del flag che controlla la effettiva generazione dei
-  \itindex{core~dump} \textit{core dump}. Introdotta a partire dal kernel
-  2.3.20.
+  \textit{core dump}. Introdotta a partire dal kernel 2.3.20.
 
 \item[\const{PR\_SET\_ENDIAN}] Imposta la \itindex{endianness}
   \textit{endianness} del processo chiamante secondo il valore fornito
@@ -3772,10 +3773,10 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
     vendere la capacità di calcolo della proprio macchina ad un qualche
     servizio di calcolo distribuito senza comprometterne la sicurezza
     eseguendo codice non sotto il proprio controllo.} in genere i dati vengono
-  letti o scritti grazie ad un socket o una pipe, e per evitare problemi di
-  sicurezza non sono possibili altre operazioni se non quelle citate.
-  Introdotta a partire dal kernel 2.6.23, disponibile solo se si è abilitato
-  il supporto nel kernel con \texttt{CONFIG\_SECCOMP}.
+  letti o scritti grazie ad un socket o una \textit{pipe}, e per evitare
+  problemi di sicurezza non sono possibili altre operazioni se non quelle
+  citate.  Introdotta a partire dal kernel 2.6.23, disponibile solo se si è
+  abilitato il supporto nel kernel con \texttt{CONFIG\_SECCOMP}.
 
 % TODO a partire dal kernel 3.5 è stato introdotto la possibilità di usare un
 % terzo argomento se il secondo è SECCOMP_MODE_FILTER, vedi
@@ -3898,20 +3899,36 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
   memoria. Tutti gli argomenti non utilizzati (al momento tutti) devono essere
   nulli pena la ricezione di un errore di \errval{EINVAL}. Introdotta a
   partire dal kernel 2.6.32.
-% TODO: verificare questa parte
-\item[\const{PR\_SET\_CHILD\_SUBREAPER}] Imposta il processo indicato con il
-  \ids{PID} specificato da \param{arg2} come nuovo ``\textsl{genitore
-    adottivo}'' per tutti i processi discendenti del chiamante che
-  diventeranno orfani, sostituendo in questo ruolo \cmd{init} (si ricordi
-  quanto illustrato in sez.~\ref{sec:proc_termination}). Introdotta a partire
-  dal kernel 3.4.
-\item[\const{PR\_GET\_CHILD\_SUBREAPER}] Ottiene il \ids{PID} del processo a
-  cui vengono assegnati come figli gli orfani del processo
-  corrente. Introdotta a partire dal kernel 3.4.
-  % TODO documentare PR_SET_SECCOMP introdotto a partire dal kernel 3.5. Vedi:
-  % * Documentation/prctl/seccomp_filter.txt
-  % * http://lwn.net/Articles/475043/
-
+\itindbeg{child reaper}
+\item[\const{PR\_SET\_CHILD\_SUBREAPER}] Se \param{arg2} è diverso da zero
+  imposta l'attributo di \textit{child reaper} per il processo, se nullo lo
+  cancella. Lo stato di \textit{child reaper} è una funzionalità, introdotta
+  con il kernel 3.4, che consente di far svolgere al processo che ha questo
+  attributo il ruolo di ``\textsl{genitore adottivo}'' per tutti i processi
+  suoi ``\textsl{discendenti}'' che diventano orfani, in questo modo il
+  processo potrà ricevere gli stati di terminazione alla loro uscita,
+  sostituendo in questo ruolo \cmd{init} (si ricordi quanto illustrato in
+  sez.~\ref{sec:proc_termination}). Il meccanismo è stato introdotto ad uso
+  dei programmi di gestione dei servizi, per consentire loro di ricevere gli
+  stati di terminazione di tutti i processi che lanciano, anche se questi
+  eseguono una doppia \func{fork}; nel comportamento ordinario infatti questi
+  verrebbero adottati da \cmd{init} ed il programma che li ha lanciati non
+  sarebbe più in grado di riceverne lo stato di terminazione. Se un processo
+  con lo stato di \textit{child reaper} termina prima dei suoi discendenti,
+  svolgerà questo ruolo il più prossimo antenato ad avere lo stato di
+  \textit{child reaper}, 
+\item[\const{PR\_GET\_CHILD\_SUBREAPER}] Ottiene l'impostazione relativa allo
+  lo stato di \textit{child reaper} del processo chiamante, salvata come
+  \textit{value result} all'indirizzo puntato da \param{arg2} (da indicare
+  come di tipo \code{int *}). Il valore viene letto come valore logico, se
+  diverso da 0 lo stato di \textit{child reaper} è attivo altrimenti è
+  disattivo. Introdotta a partire dal kernel 3.4.
+\itindend{child reaper}
+
+
+% TODO documentare PR_SET_SECCOMP introdotto a partire dal kernel 3.5. Vedi:
+% * Documentation/prctl/seccomp_filter.txt
+% * http://lwn.net/Articles/475043/
 
 % TODO documentare PR_MPX_INIT e PR_MPX_RELEASE, vedi
 % http://lwn.net/Articles/582712/ 
@@ -4135,8 +4152,8 @@ Da fare
 % http://lwn.net/Articles/529060/) 
 % TODO: trattare PTRACE_GETSIGMASK e PTRACE_SETSIGMASK introdotte con il
 % kernel 3.11
-
-
+% TODO: trattare PTRACE_O_SUSPEND_SECCOMP, aggiunta con il kernel 4.3, vedi
+% http://lwn.net/Articles/656675/ 
 
 \subsection{La gestione delle operazioni in virgola mobile}
 \label{sec:process_fenv}
@@ -4182,7 +4199,11 @@ Da fare
 %TODO trattare init_module e finit_module (quest'ultima introdotta con il
 %kernel 3.8)
 
+%%%% Altre cose di cui non è chiara la collocazione:
 
+%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 
 
 \section{Problematiche di programmazione multitasking}
 \label{sec:proc_multi_prog}