X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=12eee1f8ba40b6bcb50d15ba27a31b08a8f50132;hp=8d505579b970e9aad6e3a8c7f183311ff866934b;hb=5da5870ef70a2b793118d14ec547a293927c0d3c;hpb=9b4e35959dc9df4830ce828e462893d4a776ced9 diff --git a/prochand.tex b/prochand.tex index 8d50557..12eee1f 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 @@ -1640,20 +1640,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 +1929,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 @@ -3355,17 +3353,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 +3656,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} @@ -3773,7 +3770,7 @@ essere soggetto a \textit{race condition} dato potrebbe essere interrotto in qualunque momento da un altro \textit{thread}. In tal caso occorre pianificare con estrema attenzione l'uso delle variabili ed utilizzare i vari meccanismi di sincronizzazione che anche in questo caso sono disponibili (torneremo su -queste problematiche di questo tipo in cap.~\ref{sez:pthread_sync}) +queste problematiche di questo tipo in cap.~\ref{sec:pthread_sync}) \itindbeg{deadlock}