X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=7e882abcd86f9ebdc60a8a247c572a1ebe8160e0;hp=3738800c138f61869ccc3870b0342f11263857f0;hb=9a577c89dd563aacbc619e09bf8b6d99b533274a;hpb=f7eed387b45b32557233d85cbfe733c7271ab9de diff --git a/prochand.tex b/prochand.tex index 3738800..7e882ab 100644 --- a/prochand.tex +++ b/prochand.tex @@ -136,9 +136,8 @@ struttura delle principali informazioni contenute nella \struct{task\_struct} (che in seguito incontreremo a più riprese), è mostrato in fig.~\ref{fig:proc_task_struct}. -\begin{figure}[htb] - \centering - \includegraphics[width=14cm]{img/task_struct} +\begin{figure}[!htb] + \centering \includegraphics[width=14cm]{img/task_struct} \caption{Schema semplificato dell'architettura delle strutture usate dal kernel nella gestione dei processi.} \label{fig:proc_task_struct} @@ -372,9 +371,9 @@ sempre un solo padre (il cui \acr{pid} può sempre essere ottenuto con \func{getppid}, vedi sez.~\ref{sec:proc_pid}) per cui si usa il valore nullo, che non è il \acr{pid} di nessun processo. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/ForkTest.c} \end{minipage} \normalsize @@ -1456,9 +1455,8 @@ Le altre quattro funzioni si limitano invece a cercare di eseguire il file indicato dall'argomento \param{path}, che viene interpretato come il \itindex{pathname} \textit{pathname} del programma. -\begin{figure}[htb] - \centering - \includegraphics[width=12cm]{img/exec_rel} +\begin{figure}[!htb] + \centering \includegraphics[width=12cm]{img/exec_rel} \caption{La interrelazione fra le sei funzioni della famiglia \func{exec}.} \label{fig:proc_exec_relat} \end{figure} @@ -2694,9 +2692,9 @@ priorità statica da assegnare al processo; lo standard prevede che questo debba essere assegnato all'interno di un intervallo fra un massimo ed un minimo che nel caso di Linux sono rispettivamente 1 e 99. -\begin{figure}[!bht] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\textwidth} \includestruct{listati/sched_param.c} \end{minipage} \normalsize @@ -3110,7 +3108,7 @@ di I/O.\footnote{se usate in corrispondenza ad uno scheduler diverso il loro utilizzo non avrà alcun effetto.} Dato che non esiste una interfaccia diretta nelle \acr{glibc} per queste due funzioni occorrerà invocarle tramite la funzione \func{syscall} (come illustrato in -sez.~\ref{sec:intro_syscall}). Le due funzioni sono \funcd{ioprio\_get} ed +sez.~\ref{sec:proc_syscall}). Le due funzioni sono \funcd{ioprio\_get} ed \funcd{ioprio\_set}; i rispettivi prototipi sono: \begin{functions} \headdecl{linux/ioprio.h} @@ -3373,7 +3371,7 @@ Dato che l'uso principale della nuova \textit{system call} è quello relativo alla creazione dei \textit{thread}, le \acr{glibc} definiscono una funzione di libreria con una sintassi diversa, orientata a questo scopo, e la \textit{system call} resta accessibile solo se invocata esplicitamente come -visto in sez.~\ref{sec:intro_syscall}.\footnote{ed inoltre per questa +visto in sez.~\ref{sec:proc_syscall}.\footnote{ed inoltre per questa \textit{system call} non è disponibile la chiamata veloce con \texttt{vsyscall}.} La funzione di libreria si chiama semplicemente \funcd{clone} ed il suo prototipo è: @@ -3404,7 +3402,7 @@ visto in sez.~\ref{sec:intro_syscall}.\footnote{ed inoltre per questa La funzione prende come primo argomento il puntatore alla funzione che verrà messa in esecuzione nel nuovo processo, che può avere un unico argomento di -tipo puntatore a \ctype{void}, il cui valore viene passato dal terzo +tipo puntatore a \ctyp{void}, il cui valore viene passato dal terzo argomento \param{arg}; per quanto il precedente prototipo possa intimidire nella sua espressione, in realtà l'uso è molto semplice basterà definire una qualunque funzione \param{fn} del tipo indicato, e \code{fn(arg)} sarà @@ -3416,7 +3414,7 @@ di ritorno della funzione (o quello specificato con \func{exit}) verrà utilizzato come stato di uscita della funzione. I tre argomenti \param{ptid}, \param{tls} e \param{ctid} sono opzionali e sono -presenti solo a partire dal kernel 2.6. +presenti solo a partire dal kernel 2.6. Il comportamento di \func{clone}, che si riflette sulle caratteristiche del nuovo processo da essa creato, è controllato dall'argomento \param{flags}, @@ -3730,6 +3728,9 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento: Da fare +% TODO: trattare PTRACE_SEIZE, aggiunta con il kernel 3.1 + + \subsection{L'accesso alle porte di I/O} \label{sec:process_io_port}