X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=448ad06794ca08eb9767cb7b0d96a55b3472bb0f;hp=d38c843b8c52e2ca132a68b088ca2991c7efca67;hb=17bae834f41549575a11ddf444d97de8d575269e;hpb=1fad076b97ffee3c0507d3fcc4e845185a03483c diff --git a/prochand.tex b/prochand.tex index d38c843..448ad06 100644 --- a/prochand.tex +++ b/prochand.tex @@ -1,6 +1,6 @@ %% prochand.tex %% -%% Copyright (C) 2000-2002 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2003 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 "Prefazione", @@ -541,11 +541,11 @@ i processi figli. Quello che succede è che quando lo standard output del padre viene rediretto, lo stesso avviene anche per tutti i figli; la funzione \func{fork} infatti ha -la caratteristica di duplicare (allo stesso modo in cui lo fa la funzione -\func{dup}, trattata in \secref{sec:file_dup}) nei figli tutti i file -descriptor aperti nel padre, il che comporta che padre e figli condividono le +la caratteristica di duplicare nei figli tutti i file descriptor aperti nel +padre (allo stesso modo in cui lo fa la funzione \func{dup}, trattata in +\secref{sec:file_dup}), il che comporta che padre e figli condividono le stesse voci della \textit{file table} (per la spiegazione di questi termini si -veda \secref{sec:file_sharing}) e fra cui c'è anche la posizione corrente nel +veda \secref{sec:file_sharing}) fra cui c'è anche la posizione corrente nel file. In questo modo se un processo scrive sul file aggiornerà la posizione corrente @@ -1182,7 +1182,7 @@ indicato dall'argomento \param{path}, che viene interpretato come il \begin{figure}[htb] \centering - \includegraphics[width=15cm]{img/exec_rel} + \includegraphics[width=16cm]{img/exec_rel} \caption{La interrelazione fra le sei funzioni della famiglia \func{exec}.} \label{fig:proc_exec_relat} \end{figure} @@ -1737,13 +1737,16 @@ coincide con uno dei di quelli del gruppo \textit{real}, \textit{effective} o \label{sec:proc_setgroups} Le ultime funzioni che esamineremo sono quelle che permettono di operare sui -gruppi supplementari. Ogni processo può avere fino a \const{NGROUPS\_MAX} -gruppi supplementari in aggiunta al gruppo primario, questi vengono ereditati -dal processo padre e possono essere cambiati con queste funzioni. - -La funzione che permette di leggere i gruppi supplementari è -\funcd{getgroups}; questa funzione è definita nello standard POSIX ed il suo -prototipo è: +gruppi supplementari cui un utente può appartenere. Ogni processo può avere +almeno \const{NGROUPS\_MAX} gruppi supplementari\footnote{il numero massimo di + gruppi secondari può essere ottenuto con \func{sysconf} (vedi + \secref{sec:sys_sysconf}), leggendo il parametro + \texttt{\_SC\_NGROUPS\_MAX}.} in aggiunta al gruppo primario; questi vengono +ereditati dal processo padre e possono essere cambiati con queste funzioni. + +La funzione che permette di leggere i gruppi supplementari associati ad un +processo è \funcd{getgroups}; questa funzione è definita nello standard +POSIX.1, ed il suo prototipo è: \begin{functions} \headdecl{sys/types.h} \headdecl{unistd.h} @@ -2065,8 +2068,9 @@ librerie, ma La funzione permette, a seconda del valore di \param{which}, di leggere la priorità di un processo, di un gruppo di processi (vedi \secref{sec:sess_proc_group}) o di un utente, specificando un corrispondente -valore per \param{who}; un valore nullo di quest'ultimo indica il processo, il -gruppo di processi o l'utente correnti. +valore per \param{who} secondo la legenda di \tabref{tab:proc_getpriority}; un +valore nullo di quest'ultimo indica il processo, il gruppo di processi o +l'utente correnti. \begin{table}[htb] \centering @@ -2183,18 +2187,17 @@ prototipo \item[\errcode{EINVAL}] il valore di \param{policy} non esiste o il relativo valore di \param{p} non è valido. \item[\errcode{EPERM}] il processo non ha i privilegi per attivare la - politica richiesta (vale solo per \const{SCHED\_FIFO} e - \const{SCHED\_RR}). + politica richiesta. \end{errlist}} \end{prototype} La funzione esegue l'impostazione per il processo specificato dall'argomento \param{pid}; un valore nullo esegue l'impostazione per il processo corrente. -Solo un processo con i privilegi di amministratore può impostare delle -priorità assolute diverse da zero. La politica di scheduling è specificata -dall'argomento \param{policy} i cui possibili valori sono riportati in -\tabref{tab:proc_sched_policy}; un valore negativo per \param{policy} mantiene -la politica di scheduling corrente. +La politica di scheduling è specificata dall'argomento \param{policy} i cui +possibili valori sono riportati in \tabref{tab:proc_sched_policy}; un valore +negativo per \param{policy} mantiene la politica di scheduling corrente. +Solo un processo con i privilegi di amministratore può impostare priorità +assolute diverse da zero o politiche \const{SCHED\_FIFO} e \const{SCHED\_RR}. \begin{table}[htb] \centering @@ -2222,7 +2225,7 @@ priorit massimo ed uno minimo, che nel caso sono rispettivamente 1 e 99 (il valore zero è legale, ma indica i processi normali). -\begin{figure}[!htb] +\begin{figure}[!bht] \footnotesize \centering \begin{minipage}[c]{15cm} \includestruct{listati/sched_param.c} @@ -2249,7 +2252,7 @@ e \funcd{sched\_get\_priority\_min}, i cui prototipi sono: \bodydesc{La funzioni ritornano il valore della priorità in caso di successo e -1 in caso di errore, nel qual caso \var{errno} può assumere i valori: \begin{errlist} - \item[\errcode{EINVAL}] il valore di \param{policy} è invalido. + \item[\errcode{EINVAL}] il valore di \param{policy} non è valido. \end{errlist}} \end{functions} @@ -2298,7 +2301,6 @@ prototipi sono: \funcdecl{int sched\_setparam(pid\_t pid, const struct sched\_param *p)} Imposta la priorità assoluta del processo \param{pid}. - \funcdecl{int sched\_getparam(pid\_t pid, struct sched\_param *p)} Legge la priorità assoluta del processo \param{pid}.