Altra roba, res_query.
[gapil.git] / prochand.tex
index 6cca82efcbd5d462ac9269cd2e975a91b461a963..177155d436192e9a36ea0584c709041277243a59 100644 (file)
@@ -1,6 +1,6 @@
 %% prochand.tex
 %%
 %% prochand.tex
 %%
-%% Copyright (C) 2000-2002 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2004 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",
 %% 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",
@@ -143,7 +143,6 @@ seguito incontreremo a pi
   \label{fig:proc_task_struct}
 \end{figure}
 
   \label{fig:proc_task_struct}
 \end{figure}
 
-
 Come accennato in \secref{sec:intro_unix_struct} è lo
 \textit{scheduler}\index{scheduler} che decide quale processo mettere in
 esecuzione; esso viene eseguito ad ogni system call ed ad ogni
 Come accennato in \secref{sec:intro_unix_struct} è lo
 \textit{scheduler}\index{scheduler} che decide quale processo mettere in
 esecuzione; esso viene eseguito ad ogni system call ed ad ogni
@@ -167,13 +166,12 @@ esecuzione fino alla successiva invocazione.
 \subsection{Una panoramica sulle funzioni fondamentali}
 \label{sec:proc_handling_intro}
 
 \subsection{Una panoramica sulle funzioni fondamentali}
 \label{sec:proc_handling_intro}
 
-I processi vengono creati dalla funzione \func{fork}; in molti unix questa è
-una system call, Linux però usa un'altra nomenclatura, e la funzione
-\func{fork} è basata a sua volta sulla system call \func{\_\_clone}, che viene
-usata anche per generare i \textit{thread}.  Il processo figlio creato dalla
-\func{fork} è una copia identica del processo processo padre, ma ha un nuovo
-\acr{pid} e viene eseguito in maniera indipendente (le differenze fra padre e
-figlio sono affrontate in dettaglio in \secref{sec:proc_fork}).
+In un sistema unix-like i processi vengono sempre creati da altri processi
+tramite la funzione \func{fork}; il nuovo processo (che viene chiamato
+\textsl{figlio}) creato dalla \func{fork} è una copia identica del processo
+processo originale (detto \textsl{padre}), ma ha un nuovo \acr{pid} e viene
+eseguito in maniera indipendente (le differenze fra padre e figlio sono
+affrontate in dettaglio in \secref{sec:proc_fork}).
 
 Se si vuole che il processo padre si fermi fino alla conclusione del processo
 figlio questo deve essere specificato subito dopo la \func{fork} chiamando la
 
 Se si vuole che il processo padre si fermi fino alla conclusione del processo
 figlio questo deve essere specificato subito dopo la \func{fork} chiamando la
@@ -541,11 +539,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
 
 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
 stesse voci della \textit{file table} (per la spiegazione di questi termini si
-veda \secref{sec:file_sharing}) 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
 file.
 
 In questo modo se un processo scrive sul file aggiornerà la posizione corrente
@@ -1182,7 +1180,7 @@ indicato dall'argomento \param{path}, che viene interpretato come il
 
 \begin{figure}[htb]
   \centering
 
 \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}
   \caption{La interrelazione fra le sei funzioni della famiglia \func{exec}.}
   \label{fig:proc_exec_relat}
 \end{figure}
@@ -1737,13 +1735,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
 \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}
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{unistd.h}
@@ -1842,6 +1843,19 @@ compila con il flag \cmd{-ansi}, 
 scrivere codice portabile.
 
 
 scrivere codice portabile.
 
 
+%
+% Da fare !!!
+% insieme alla risistemazioni dei titoli delle sezioni precedenti
+% (accorpare il materiale) qualosa tipo:
+% le funzioni di controllo
+% estenzioni di Linux
+%
+%\subsection{La gestione delle capabilities}
+%\label{sec:proc_capabilities}
+
+
+
+
 \section{La gestione della priorità di esecuzione}
 \label{sec:proc_priority}
 
 \section{La gestione della priorità di esecuzione}
 \label{sec:proc_priority}
 
@@ -2184,18 +2198,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
     \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.
   \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
 
 \begin{table}[htb]
   \centering
@@ -2223,7 +2236,7 @@ priorit
 massimo ed uno minimo, che nel caso sono rispettivamente 1 e 99 (il valore
 zero è legale, ma indica i processi normali).
 
 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}
   \footnotesize \centering
   \begin{minipage}[c]{15cm}
     \includestruct{listati/sched_param.c}
@@ -2250,7 +2263,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}
   \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}
 
   \end{errlist}}
 \end{functions}
 
@@ -2299,7 +2312,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\_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}.
 
   \funcdecl{int sched\_getparam(pid\_t pid, struct sched\_param *p)}
   Legge la priorità assoluta del processo \param{pid}.