X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=5186e4155337a7da038ea9aa40879f7bb497469f;hp=181b1bdde014c4d46dd39bd38341c7955ec58930;hb=9448294bbb0d4ffbf8e606a39e5c0c616776cbde;hpb=5099573b0239402d8860e2c0af07c8eb3378b865 diff --git a/prochand.tex b/prochand.tex index 181b1bd..5186e41 100644 --- a/prochand.tex +++ b/prochand.tex @@ -256,8 +256,8 @@ un processo e le varie relazioni fra processi utilizzate per definire una sessione. Oltre al \acr{pid} e al \acr{ppid}, (e a quelli che vedremo in -\secref{sec:sess_xxx}, relativi al controllo di sessione), ad ogni processo -vengono associati degli altri identificatori che vengono usati per il +\secref{sec:sess_proc_group}, relativi al controllo di sessione), ad ogni +processo vengono associati degli altri identificatori che vengono usati per il controllo di accesso. Questi servono per determinare se un processo può eseguire o meno le operazioni richieste, a seconda dei privilegi e dell'identità di chi lo ha posto in esecuzione; l'argomento è complesso e sarà @@ -607,14 +607,14 @@ comune dopo l'esecuzione di una \func{fork} \secref{sec:proc_access_id}). \item gli identificatori per il controllo di sessione: il \textit{process groupid} e il \textit{session id} ed il terminale di controllo (vedi - \secref{sec:sess_xxx} e \secref{sec:sess_xxx}). + \secref{sec:sess_proc_group}). \item la directory di lavoro e la directory radice (vedi \secref{sec:file_work_dir} e \secref{sec:file_chroot}). \item la maschera dei permessi di creazione (vedi \secref{sec:file_umask}). \item la maschera dei segnali bloccati (vedi \secref{sec:sig_sigmask}) e le azioni installate (vedi \secref{sec:sig_gen_beha}). \item i segmenti di memoria condivisa agganciati al processo (vedi -\secref{sec:ipc_shar_mem}). + \secref{sec:ipc_sysv_shm}). \item i limiti sulle risorse (vedi \secref{sec:sys_resource_limit}). \item le variabili di ambiente (vedi \secref{sec:proc_environ}). \end{itemize*} @@ -695,7 +695,7 @@ eseguite alla chiusura di un processo \item se la conclusione di un processo rende orfano un \textit{process group} ciascun membro del gruppo viene bloccato, e poi gli vengono inviati in successione i segnali \macro{SIGHUP} e \macro{SIGCONT} - (vedi \secref{sec:sess_xxx}). + (vedi \secref{sec:sess_ctrl_term}). \end{itemize*} Oltre queste operazioni è però necessario poter disporre di un meccanismo @@ -871,9 +871,10 @@ cercato sia ancora attivo. Per questo motivo lo standard POSIX.1 ha introdotto la funzione \func{waitpid} che effettua lo stesso servizio, ma dispone di una serie di funzionalità più -ampie, legate anche al controllo di sessione. Dato che è possibile ottenere -lo stesso comportamento di \func{wait} si consiglia di utilizzare sempre -questa funzione, il cui prototipo è: +ampie, legate anche al controllo di sessione (si veda +\ref{sec:sess_job_control}). Dato che è possibile ottenere lo stesso +comportamento di \func{wait} si consiglia di utilizzare sempre questa +funzione, il cui prototipo è: \begin{functions} \headdecl{sys/types.h} \headdecl{sys/wait.h} @@ -896,7 +897,7 @@ sempre fino a che un processo figlio non termina, mentre \func{waitpid} ha la possibilità si specificare un'opzione \macro{WNOHANG} che ne previene il blocco; inoltre \func{waitpid} può specificare quale processo attendere sulla base del valore fornito dall'argomento \param{pid}, secondo lo -specchietto riportato in \ntab: +specchietto riportato in \tabref{tab:proc_waidpid_pid}: \begin{table}[!htb] \centering \footnotesize @@ -905,7 +906,8 @@ specchietto riportato in \ntab: \textbf{Valore} & \textbf{Macro} &\textbf{Significato}\\ \hline \hline - $<-1$& -- & attende per un figlio il cui \textit{process group} è uguale al + $<-1$& -- & attende per un figlio il cui \textit{process group} (vedi + \secref{sec:sess_proc_group}) è uguale al valore assoluto di \var{pid}. \\ $-1$ & \macro{WAIT\_ANY} & attende per un figlio qualsiasi, usata in questa maniera è equivalente a \func{wait}.\\ @@ -924,11 +926,13 @@ Il comportamento di \func{waitpid} pu delle opportune opzioni tramite l'argomento \param{option}. I valori possibili sono il già citato \macro{WNOHANG}, che previene il blocco della funzione quando il processo figlio non è terminato, e \macro{WUNTRACED} (usata per il -controllo di sessione, trattato in \capref{cha:session}) che fa ritornare la -funzione anche per i processi figli che sono bloccati ed il cui stato non è -stato ancora riportato al padre. Il valore dell'opzione deve essere -specificato come maschera binaria ottenuta con l'OR delle suddette costanti -con zero. +controllo di sessione, trattato in \secref{sec:sess_job_control}) che fa +ritornare la funzione anche per i processi figli che sono bloccati ed il cui +stato non è stato ancora riportato al padre. Il valore dell'opzione deve +essere specificato come maschera binaria ottenuta con l'OR delle suddette +costanti con zero. In Linux sono previste altre opzioni non standard relative +al comportamento con i thread, che saranno trattate in +\secref{sec:thread_xxx}. La terminazione di un processo figlio è chiaramente un evento asincrono rispetto all'esecuzione di un programma e può avvenire in un qualunque @@ -1109,9 +1113,9 @@ Sostituiscono l'immagine corrente del processo con quella indicata nel primo argomento. I parametri successivi consentono di specificare gli argomenti a linea di comando e l'ambiente ricevuti dal nuovo processo. -\bodydesc{Queste funzioni ritornano solo in caso di errore, restituendo - -1; nel qual caso \var{errno} andrà ad assumere i valori visti in - precedenza per \func{execve}.} +\bodydesc{Queste funzioni ritornano solo in caso di errore, restituendo -1; + nel qual caso \var{errno} assumerà i valori visti in precedenza per + \func{execve}.} \end{functions} Per capire meglio le differenze fra le funzioni della famiglia si può fare @@ -1202,9 +1206,9 @@ la lista completa (\acr{ppid}). \item l'\textsl{userid reale}, il \textit{groupid reale} ed i \textsl{groupid supplementari} (vedi \secref{sec:proc_access_id}). -\item il \textit{session id} ed il \textit{process groupid} (vedi - \secref{sec:sess_xxx}). -\item il terminale di controllo (vedi \secref{sec:sess_xxx}). +\item il \textit{session id} (\acr{sid}) ed il \textit{process groupid} + (\acr{pgid}), vedi \secref{sec:sess_proc_group}. +\item il terminale di controllo (vedi \secref{sec:sess_ctrl_term}). \item il tempo restante ad un allarme (vedi \secref{sec:sig_alarm_abort}). \item la directory radice e la directory di lavoro corrente (vedi \secref{sec:file_work_dir}). @@ -1741,8 +1745,8 @@ questa funzione \param{size}. \bodydesc{La funzione restituisce il numero di gruppi letti in caso di - successo e -1 in caso di fallimento, nel qual caso \var{errno} viene - impostata a: + successo e -1 in caso di fallimento, nel qual caso \var{errno} assumerà + i valori: \begin{errlist} \item[\macro{EFAULT}] \param{list} non ha un indirizzo valido. \item[\macro{EINVAL}] il valore di \param{size} è diverso da zero ma @@ -1783,7 +1787,7 @@ delle due supplementari del processo ai valori specificati in \param{list}. \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di - fallimento, nel qual caso \var{errno} viene impostata a: + fallimento, nel qual caso \var{errno} assumerà i valori: \begin{errlist} \item[\macro{EFAULT}] \param{list} non ha un indirizzo valido. \item[\macro{EPERM}] il processo non ha i privilegi di amministratore. @@ -1803,7 +1807,7 @@ un utente specifico, si pu aggiungendo il gruppo addizionale \param{group}. \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di - fallimento, nel qual caso \var{errno} viene impostata agli stessi valori di + fallimento, nel qual caso \var{errno} assumerà gli stessi valori di \func{setgroups} più \macro{ENOMEM} quando non c'è memoria sufficiente per allocare lo spazio per informazioni dei gruppi.} \end{functions} @@ -2426,9 +2430,9 @@ file, o nell'accesso a meccanismi di intercomunicazione come la memoria condivisa. In questi casi, se non si dispone della possibilità di eseguire atomicamente le operazioni necessarie, occorre che quelle parti di codice in cui si compiono le operazioni sulle risorse condivise (le cosiddette -\textsl{sezioni critiche}) del programma, siano opportunamente protette da -meccanismi di sincronizzazione (torneremo su queste problematiche di questo -tipo in \secref{sec:ipc_semaph}). +\textsl{sezioni critiche}\index{sezioni critiche}) del programma, siano +opportunamente protette da meccanismi di sincronizzazione (torneremo su queste +problematiche di questo tipo in \capref{cha:IPC}). Un caso particolare di \textit{race condition} sono poi i cosiddetti \textit{deadlock}, particolarmente gravi in quanto comportano spesso il blocco