X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=78ad88dc6a075976334798c187b67e4d38c74f03;hp=e3aa1e0152cf5cbf79b658f9f78bd5ecad1c940a;hb=4a64ffb309155737e851268a29e4217987a9c15e;hpb=e14c16e9341a6baa99b5e93f733150ba72dfce96 diff --git a/prochand.tex b/prochand.tex index e3aa1e0..78ad88d 100644 --- a/prochand.tex +++ b/prochand.tex @@ -3307,7 +3307,7 @@ proprietà e caratteristiche particolari dei processi non coperte da esse, per la cui gestione è stata predisposta una apposita \textit{system call} che fornisce una interfaccia generica per tutte le operazioni specialistiche. La funzione è \funcd{prctl} ed il suo prototipo è:\footnote{la funzione non è - standardizzata ed è specifica di Linux, anche se ne esiete una analoga in + standardizzata ed è specifica di Linux, anche se ne esiste una analoga in IRIX, è stata introdotta con il kernel 2.1.57.} \begin{functions} \headdecl{sys/prctl.h} @@ -3345,10 +3345,11 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento: nell'argomento \param{arg2} con una delle costanti di tab.~\ref{tab:proc_capabilities} dal \textit{capabilities bounding set} del processo. L'operazione richiede i privilegi di amministratore (la capacità - \const{CAP\_SETPCAP}), altrimenti fallisce con un errore di \errval{EPERM}; - se il valore di \param{arg2} non è valido o se il supporto per le - \textit{file capabilities} non è stato compilato nel kernel fallisce con un - errore di \errval{EINVAL}. Introdotta a partire dal kernel 2.6.25. + \const{CAP\_SETPCAP}), altrimenti la chiamata fallirà con un errore di + \errval{EPERM}; se il valore di \param{arg2} non è valido o se il supporto + per le \textit{file capabilities} non è stato compilato nel kernel la + chiamata fallirà con un errore di \errval{EINVAL}. Introdotta a partire dal + kernel 2.6.25. \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 @@ -3389,7 +3390,8 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento: di \param{arg2}, si deve passare \const{PR\_FPEMU\_NOPRINT} per emulare in maniera trasparente l'accesso alle operazioni in virgola mobile, o \const{PR\_FPEMU\_SIGFPE} per non emularle ed inviare il segnale - \const{SIGFPE}. Introdotta a partire dal kernel 2.4.18, solo su ia64. + \const{SIGFPE} (vedi sez.~\ref{sec:sig_prog_error}). Introdotta a partire + dal kernel 2.4.18, solo su ia64. \item[\const{PR\_GET\_FPEMU}] Ottiene il valore dei flag di controllo dell'emulazione della virgola mobile, salvato all'indirizzo puntato da \param{arg2}, che deve essere di tipo \code{(int *)}. Introdotta a @@ -3402,10 +3404,10 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento: per gli underflow, \const{PR\_FP\_EXC\_RES} per risultati non esatti, \const{PR\_FP\_EXC\_INV} per operazioni invalide, \const{PR\_FP\_EXC\_DISABLED} per disabilitare le eccezioni, - \const{PR\_FP\_EXC\_NONRECOV} per utilizzare la modalità di eccesione + \const{PR\_FP\_EXC\_NONRECOV} per utilizzare la modalità di eccezione asincrona non recuperabile, \const{PR\_FP\_EXC\_ASYNC} per utilizzare la - modalità di eccesione asincrona recuperabile, \const{PR\_FP\_EXC\_PRECISE} - per la modalita precisa di eccezione.\footnote{trattasi di gestione + modalità di eccezione asincrona recuperabile, \const{PR\_FP\_EXC\_PRECISE} + per la modalità precisa di eccezione.\footnote{trattasi di gestione specialistica della gestione delle eccezioni dei calcoli in virgola mobile che, i cui dettagli al momento vanno al di là dello scopo di questo testo.} Introdotta a partire dal kernel 2.4.21, solo su PowerPC. @@ -3419,10 +3421,10 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento: sez.~\ref{sec:proc_capabilities}, in particolare quanto illustrato a pag.~\pageref{sec:capability-uid-transition}). Un valore nullo (il default) per \param{arg2} comporta che vengano cancellate, il valore 1 che vengano - manenute, questo valore viene sempre cancellato attraverso una - \func{exec}. L'uso di questo flag è stato sostituito, a partire dal kernel - 2.6.26, dal flag \const{SECURE\_KEEP\_CAPS} dei \itindex{securebits} - \textit{securebits} (vedi \const{PR\_SET\_SECUREBITS}). Introdotta a partire + mantenute, questo valore viene sempre cancellato attraverso una \func{exec}. + L'uso di questo flag è stato sostituito, a partire dal kernel 2.6.26, dal + flag \const{SECURE\_KEEP\_CAPS} dei \itindex{securebits} \textit{securebits} + (vedi l'uso di \const{PR\_SET\_SECUREBITS} più avanti). Introdotta a partire dal kernel 2.2.18. \item[\const{PR\_GET\_KEEPCAPS}] Ottiene come valore di ritorno della funzione il valore del flag di controllo impostato con @@ -3437,11 +3439,11 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento: se più corto. Introdotta a partire dal kernel 2.6.9. \item[\const{PR\_SET\_PDEATHSIG}] Consente di richiedere l'emissione di un segnale, che sarà ricevuto dal processo chiamante, in occorrenza della - terminazione del proprio processo padre.\footnote{in sostanza consente di - invertire il ruolo di \const{SIGCHLD}.} Il valore di \param{arg2} deve - indicare il numero del segnale, o 0 per disabilitare l'emissione. Il valore - viene automaticamente cancellato per un processo figlio creato con - \func{fork}. Introdotta a partire dal kernel 2.1.57. + terminazione del proprio processo padre; in sostanza consente di invertire + il ruolo di \const{SIGCHLD}. Il valore di \param{arg2} deve indicare il + numero del segnale, o 0 per disabilitare l'emissione. Il valore viene + automaticamente cancellato per un processo figlio creato con \func{fork}. + Introdotta a partire dal kernel 2.1.57. \item[\const{PR\_GET\_PDEATHSIG}] Ottiene il valore dell'eventuale segnale emesso alla terminazione del padre, salvato all'indirizzo puntato \param{arg2}, che deve essere di tipo \code{(int *)}. Introdotta a @@ -3453,15 +3455,16 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento: processo potrà utilizzare soltanto un insieme estremamente limitato di \textit{system call}: \func{read}, \func{write}, \func{\_exit} e \func{sigreturn}, ogni altra \textit{system call} porterà all'emissione di - un \func{SIGKILL}. Il \textit{secure computing mode} è stato ideato per - fornire un supporto per l'esecuzione di codice esterno non fidato e non - verificabile a scopo di calcolo;\footnote{lo scopo è quello di poter 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 + un \func{SIGKILL} (vedi sez.~\ref{sec:sig_termination}). Il \textit{secure + computing mode} è stato ideato per fornire un supporto per l'esecuzione di + codice esterno non fidato e non verificabile a scopo di calcolo;\footnote{lo + scopo è quello di poter 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}. \item[\const{PR\_GET\_SECCOMP}] Ottiene come valore di ritorno della funzione lo stato corrente del \textit{secure computing mode}, al momento attuale la @@ -3470,10 +3473,13 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento: comporterebbe l'emissione di \texttt{SIGKILL}, è stata comunque definita per eventuali estensioni future. Introdotta a partire dal kernel 2.6.23. \item[\const{PR\_SET\_SECUREBITS}] Imposta i \itindex{securebits} - \textit{securebits} per il processo corrente al valore indicato - da \param{arg2}; per i dettagli si veda sez.~\ref{sec:proc_capabilities}, ed - in particolare i valori di tab.~\ref{tab:securebits_values} e la relativa - trattazione. Introdotta a partire dal kernel 2.6.26. + \textit{securebits} per il processo chiamante al valore indicato + da \param{arg2}; per i dettagli sul significato dei \textit{securebits} si + veda sez.~\ref{sec:proc_capabilities}, ed in particolare i valori di + tab.~\ref{tab:securebits_values} e la relativa trattazione. L'operazione + richiede i privilegi di amministratore (la capacità \const{CAP\_SETPCAP}), + altrimenti la chiamata fallirà con un errore di \errval{EPERM}. Introdotta a + partire dal kernel 2.6.26. \item[\const{PR\_GET\_SECUREBITS}] Ottiene come valore di ritorno della funzione l'impostazione corrente per i \itindex{securebits} \textit{securebits}. Introdotta a partire dal kernel 2.6.26. @@ -3487,16 +3493,17 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento: \item[\const{PR\_GET\_TIMING}] Ottiene come valore di ritorno della funzione il metodo di temporizzazione del processo attualmente in uso. Introdotta a partire dal kernel 2.6.0-test4. -\item[\const{PR\_SET\_TSC}] Imposta il flag che indica se il processo può - leggere il registro di processore contenente il contatore dei +\item[\const{PR\_SET\_TSC}] Imposta il flag che indica se il processo + chiamante può leggere il registro di processore contenente il contatore dei \textit{timestamp} (TSC, o \textit{Time Stamp Counter}) da indicare con il valore di \param{arg2}. Si deve specificare \const{PR\_TSC\_ENABLE} per abilitare la lettura o \const{PR\_TSC\_SIGSEGV} per disabilitarla con la - generazione di un segnale di \const{SIGSEGV}. La lettura viene - automaticamente disabilitata se si attiva il \textit{secure computing mode}. - Introdotta a partire dal kernel 2.6.26, solo su x86. + generazione di un segnale di \const{SIGSEGV} (vedi + sez.~\ref{sec:sig_prog_error}). La lettura viene automaticamente + disabilitata se si attiva il \textit{secure computing mode}. Introdotta a + partire dal kernel 2.6.26, solo su x86. \item[\const{PR\_GET\_TSC}] Ottiene il valore del flag che controlla la - lettura del contatatore dei \textit{timestamp}, salvato all'indirizzo + lettura del contattore dei \textit{timestamp}, salvato all'indirizzo puntato \param{arg2}, che deve essere di tipo \code{(int *)}. Introdotta a partire dal kernel 2.6.26, solo su x86. % articoli sul TSC e relativi problemi: http://lwn.net/Articles/209101/, @@ -3504,17 +3511,64 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento: % http://en.wikipedia.org/wiki/Time_Stamp_Counter \item[\const{PR\_SET\_UNALIGN}] Imposta la modalità di controllo per l'accesso a indirizzi di memoria non allineati, che in varie architetture risultano - illegali, da indicare con il valore di \param{arg2}. Si deve specificare - \const{PR\_UNALIGN\_NOPRINT} per ignorare gli accessi non allineati, e - \const{PR\_UNALIGN\_SIGBUS} per generare un segnale di \const{SIGBUS} in - caso di accesso non allineato. Introdotta con diverse versioni su diverse - architetture. + illegali, da indicare con il valore di \param{arg2}. Si deve specificare il + valore \const{PR\_UNALIGN\_NOPRINT} per ignorare gli accessi non allineati, + ed il valore \const{PR\_UNALIGN\_SIGBUS} per generare un segnale di + \const{SIGBUS} (vedi sez.~\ref{sec:sig_prog_error}) in caso di accesso non + allineato. Introdotta con diverse versioni su diverse architetture. \item[\const{PR\_GET\_UNALIGN}] Ottiene il valore della modalità di controllo per l'accesso a indirizzi di memoria non allineati, salvato all'indirizzo puntato \param{arg2}, che deve essere di tipo \code{(int *)}. Introdotta con diverse versioni su diverse architetture. -\item[\const{PR\_MCE\_KILL}] Introdotta a partire dal kernel 2.6.32. -\item[\const{PR\_MCE\_KILL\_GET}] Introdotta a partire dal kernel 2.6.32. +\item[\const{PR\_MCE\_KILL}] Imposta la politica di gestione degli errori + dovuti a corruzione della memoria per problemi hardware. Questo tipo di + errori vengono riportati dall'hardware di controllo della RAM e vengono + gestiti dal kernel,\footnote{la funzionalità è disponibile solo sulle + piattaforme più avanzate che hanno il supporto hardware per questo tipo di + controlli.} ma devono essere opportunamente riportati ai processi che + usano quella parte di RAM che presenta errori; nel caso specifico questo + avviene attraverso l'emissione di un segnale di \const{SIGBUS} (vedi + sez.~\ref{sec:sig_prog_error}).\footnote{in particolare viene anche + impostato il valore di \var{si\_code} in \struct{siginfo\_t} a + \const{BUS\_MCEERR\_AO}; per il significato di tutto questo si faccia + riferimento alla trattazione di sez.~\ref{sec:sig_sigaction}.} + + Il comportamento di default prevede che per tutti i processi si applichi la + politica generale di sistema definita nel file + \procfile{/proc/sys/vm/memory\_failure\_early\_kill}, ma specificando + per \param{arg2} il valore \const{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 + invece per \param{arg2} il valore \const{PR\_MCE\_KILL\_CLEAR}. In tutti i + casi, per compatibilità con eventuali estensioni future, tutti i valori + degli argomenti non utilizzati devono essere esplicitamente posti a zero, + pena il fallimento della chiamata con un errore di \errval{EINVAL}. + + In caso di impostazione di una politica specifica del processo con + \const{PR\_MCE\_KILL\_SET} i valori di \param{arg3} possono essere soltanto + due, che corrispondono anche al valore che si trova nell'impostazione + generale di sistema di \texttt{memory\_failure\_early\_kill}, con + \const{PR\_MCE\_KILL\_EARLY} si richiede l'emissione immediata di + \const{SIGBUS} non appena viene rilevato un errore, mentre con + \const{PR\_MCE\_KILL\_LATE} il segnale verrà inviato solo quando il processo + tenterà un accesso alla memoria corrotta. Questi due valori corrispondono + rispettivamente ai valori 1 e 0 di + \texttt{memory\_failure\_early\_kill}.\footnote{in sostanza nel primo caso + viene immediatamente inviato il segnale a tutti i processi che hanno la + memoria corrotta mappata all'interno del loro spazio degli indirizzi, nel + secondo caso prima la pagina di memoria viene tolta dallo spazio degli + indirizzi di ciascun processo, mentre il segnale viene inviato solo quei + processi che tentano di accedervi.} Si può usare per \param{arg3} anche un + terzo valore, \const{PR\_MCE\_KILL\_DEFAULT}, che corrisponde a impostare + per il processo la politica di default.\footnote{si presume la politica di + default corrente, in modo da non essere influenzati da un eventuale + successivo cambiamento della stessa.} Introdotta a partire dal kernel + 2.6.32. +\item[\const{PR\_MCE\_KILL\_GET}] Ottiene come valore di ritorno della + funzione la politica di gestione degli errori dovuti a corruzione della + 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. \label{sec:prctl_operation} \end{basedescript} @@ -3747,10 +3801,15 @@ varie funzioni di libreria, che sono identificate aggiungendo il suffisso % LocalWords: CONTINUED sources forking Spawned successfully executing exiting % LocalWords: next cat for COMMAND pts bash defunct TRAPPED DUMPED Killable PR % LocalWords: SIGKILL static RLIMIT preemption PREEMPT VOLUNTARY IDLE RTPRIO -% LocalWords: Completely Fair compat Uniform CFQ Queuing elevator dev cfq RT -% LocalWords: Documentation block syscall ioprio IPRIO CLASS class best effort -% LocalWords: refresh semop dnotify MADV DONTFORK prctl WCLONE SIGCHL WALL -% LocalWords: WNOTHREAD DUMPABLE KEEPCAPS +% LocalWords: completely fair compat uniform CFQ queuing elevator dev cfq RT +% LocalWords: documentation block syscall ioprio IPRIO CLASS class best effort +% LocalWords: refresh semop dnotify MADV DONTFORK prctl WCLONE SIGCHL WALL big +% LocalWords: WNOTHREAD DUMPABLE KEEPCAPS IRIX CAPBSET endianess endian +% LocalWords: little PPC PowerPC FPEMU NOPRINT SIGFPE FPEXC point FP SW +% LocalWords: exception EXC ENABLE OVF overflow UND underflow RES INV DISABLED +% LocalWords: NONRECOV ASYNC KEEP securebits NAME NUL PDEATHSIG SECCOMP +% LocalWords: secure computing sigreturn TIMING STATISTICAL TSC MCE +% LocalWords: timestamp Stamp SIGSEGV UNALIGN SIGBUS MCEERR AO failure early %%% Local Variables: %%% mode: latex