X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=fc5e47746ad46a1fbb237faa2d368bee530d915c;hp=1a51f3c1644942f73aaa027d123ea9ac4159d0dc;hb=b0f9e84fb388f894bf26c87ffa304847bddfa3b0;hpb=51ac65a077651bde52ce68d43aa61b158f5dbd3d diff --git a/prochand.tex b/prochand.tex index 1a51f3c..fc5e477 100644 --- a/prochand.tex +++ b/prochand.tex @@ -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", @@ -1325,7 +1325,7 @@ Tratteremo nei dettagli la struttura \struct{siginfo\_t} ed il significato dei suoi vari campi in sez.~\ref{sec:sig_sigaction}, per quanto ci interessa qui basta dire che al ritorno di \func{waitid} verranno avvalorati i seguenti campi: -\begin{basedescript}{\desclabelwidth{2.0cm}} +\begin{basedescript}{\desclabelwidth{1.8cm}} \item[\var{si\_pid}] con il \ids{PID} del figlio. \item[\var{si\_uid}] con l'\textsl{user-ID reale} (vedi sez.~\ref{sec:proc_perms}) del figlio. @@ -2142,10 +2142,10 @@ si ottengono i privilegi necessari per accedere ai file, mantenendo quelli originari per quanto riguarda tutti gli altri controlli di accesso, così che l'utente non possa inviare segnali al server NFS. -Le due funzioni di sistema usate per cambiare questi identificatori sono -\funcd{setfsuid} e \funcd{setfsgid}, ed ovviamente sono specifiche di Linux e -non devono essere usate se si intendono scrivere programmi portabili; i loro -prototipi sono: +Le due funzioni di sistema usate appositamente per cambiare questi +identificatori sono \funcd{setfsuid} e \funcd{setfsgid} ovviamente sono +specifiche di Linux e non devono essere usate se si intendono scrivere +programmi portabili; i loro prototipi sono: \begin{funcproto}{ \fhead{sys/fsuid.h} @@ -2864,8 +2864,8 @@ errore \errcode{EINVAL}, questo valore infatti non ha niente a che vedere con la priorità dinamica determinata dal valore di \textit{nice}, che deve essere impostato con le funzioni viste in precedenza. -Lo standard POSIX.1b prevede inoltre che l'intervallo dei valori delle -priorità statiche possa essere ottenuto con le funzioni di sistema +Lo standard POSIX.1b prevede che l'intervallo dei valori delle priorità +statiche possa essere ottenuto con le funzioni di sistema \funcd{sched\_get\_priority\_max} e \funcd{sched\_get\_priority\_min}, i cui prototipi sono: @@ -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 @@ -3065,7 +3065,7 @@ una risorsa contesa con altri processi, e si vuole dare agli altri una possibilità di approfittarne mettendoli in esecuzione, ma chiamarla senza necessità, specie se questo avviene ripetutamente all'interno di un qualche ciclo, può avere invece un forte impatto negativo per la generazione di -\itindex{contest~switch} \textit{contest switch} inutili. +\textit{context switch} inutili. \subsection{Il controllo dello \textit{scheduler} per i sistemi @@ -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.