X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=3ee2344c9195736428b2f5535815f6d353e8d751;hp=f50c0c556d6a5878f16b863efb685d4a329b0894;hb=26f7a8bb19c6cb198c213757a97b6ac79e40db4b;hpb=743ef11e68d40acfca27b95a3438b4cec6c59a8a diff --git a/prochand.tex b/prochand.tex index f50c0c5..3ee2344 100644 --- a/prochand.tex +++ b/prochand.tex @@ -1,6 +1,6 @@ %% prochand.tex %% -%% Copyright (C) 2000-2018 by Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2019 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", @@ -569,7 +569,7 @@ tutti i figli. La funzione \func{fork} infatti ha la caratteristica di duplicare nei processi figli tutti i \textit{file descriptor} (vedi sez.~\ref{sec:file_fd}) dei file aperti nel processo padre (allo stesso modo in cui lo fa la funzione \func{dup}, trattata in sez.~\ref{sec:file_dup}). Ciò -fa si che padre e figli condividano le stesse voci della \textit{file table} +fa sì che padre e figli condividano le stesse voci della \textit{file table} (tratteremo in dettaglio questi termini in sez.~\ref{sec:file_fd} e sez.~\ref{sec:file_shared_access}) fra le quali c'è anche la posizione corrente nel file. @@ -612,7 +612,7 @@ 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 \textit{close-on-exec} impostati - (vedi sez.~\ref{sec:proc_exec} e sez.~\ref{sec:file_fcntl_ioctl}); + (vedi sez.~\ref{sec:proc_exec} e sez.~\ref{sec:file_shared_access}); \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 @@ -1279,6 +1279,9 @@ primo, quale processo o quale gruppo di processi selezionare. \label{tab:proc_waitid_idtype} \end{table} +% TODO: documentare P_PIDFD per attendere un pidfd (per pidfd vedi +% https://lwn.net/Articles/794707/) introdotta con il 5.4 + Come per \func{waitpid} anche il comportamento di \func{waitid} è controllato dall'argomento \param{options}, da specificare come maschera binaria dei valori riportati in tab.~\ref{tab:proc_waitid_options}. Benché @@ -1640,20 +1643,18 @@ nell'esecuzione della funzione \func{exec}, queste sono: \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 \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 +\func{exec} dipende dal valore che ha il flag di \textit{close-on-exec} per +ciascun \textit{file descriptor} (vedi sez.~\ref{sec:file_shared_access}). 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 +aperti attraverso una \func{exec}, a meno di non aver impostato esplicitamente +(in apertura o con \func{fnctl}) 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 \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 @@ -1931,7 +1932,7 @@ supplementari non vengono modificati. L'effetto della chiamata è diverso a seconda dei privilegi del processo; se l'\ids{UID} effettivo è zero (cioè è quello dell'amministratore di sistema o -il processo ha la la capacità \const{CAP\_SETUID}) allora tutti gli +il processo ha la capacità \const{CAP\_SETUID}) allora tutti gli identificatori (\textit{real}, \textit{effective} e \textit{saved}) vengono impostati al valore specificato da \param{uid}, altrimenti viene impostato solo l'\ids{UID} effettivo, e soltanto se il valore specificato corrisponde o @@ -2871,6 +2872,7 @@ corrente. % con il kernel 3.14, vedi anche Documentation/scheduler/sched-deadline.txt e % http://lwn.net/Articles/575497/ % vedi anche man 7 sched, man sched_setattr +% https://lwn.net/Articles/805317/ Con le versioni più recenti del kernel sono state introdotte anche delle varianti sulla politica di \textit{scheduling} tradizionale per alcuni carichi @@ -3355,17 +3357,17 @@ compiere delle operazioni logiche sugli insiemi di processori con: } \end{funcbox}} -Le prime tre macro richiedono due insiemi di partenza, \param{srcset1} -e \param{srcset2} e forniscono in un terzo insieme \param{destset} (che può +Le prime tre macro richiedono due insiemi di partenza, \param{srcset1} e +\param{srcset2} e forniscono in un terzo insieme \param{destset} (che può essere anche lo stesso di uno dei precedenti) il risultato della rispettiva operazione logica sui contenuti degli stessi. In sostanza con \macro{CPU\_AND} si otterrà come risultato l'insieme che contiene le CPU presenti in entrambi gli insiemi di partenza, con \macro{CPU\_OR} l'insieme che contiene le CPU presenti in uno qualunque dei due insiemi di partenza, e con \macro{CPU\_XOR} -l'insieme che contiene le CPU presenti presenti in uno solo dei due insiemi di +l'insieme che contiene le CPU presenti in uno solo dei due insiemi di partenza. Infine \macro{CPU\_EQUAL} confronta due insiemi ed è l'unica che -restituisce un intero, da usare come valore logico che indica se sono -identici o meno. +restituisce un intero, da usare come valore logico che indica se sono identici +o meno. Inoltre, sempre a partire dalla versione 2.7 della \acr{glibc}, è stata introdotta la possibilità di una allocazione dinamica degli insiemi di @@ -3658,7 +3660,6 @@ rimosso a partire dal kernel 2.6.25. %TODO verificare http://lwn.net/Articles/355987/ - \section{Problematiche di programmazione \textit{multitasking}} \label{sec:proc_multi_prog}