X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=62a7ea50221cb1894c4710a4f4ccb2a5f80b5e9e;hp=b6bb0bb674efd540a7d7ca017ad03da748ba432e;hb=5afbcf1d6a84ab2a527859d8fd05b75a31e39736;hpb=04a547df13e4c672d95e1060e1ada9ae2e1fcb2f diff --git a/prochand.tex b/prochand.tex index b6bb0bb..62a7ea5 100644 --- a/prochand.tex +++ b/prochand.tex @@ -139,14 +139,15 @@ questa tabella, costituita da una struttura \kstruct{task\_struct}, che contiene tutte le informazioni rilevanti per quel processo. Tutte le strutture usate a questo scopo sono dichiarate nell'\textit{header file} \file{linux/sched.h}, ed uno schema semplificato, che riporta la struttura -delle principali informazioni contenute nella \struct{task\_struct} (che in +delle principali informazioni contenute nella \texttt{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} - \caption{Schema semplificato dell'architettura delle strutture usate dal - kernel nella gestione dei processi.} + \caption{Schema semplificato dell'architettura delle strutture ( + \kstructd{task\_struct}, \kstructd{fs\_struct}, \kstructd{file\_struct}) + usate dal kernel nella gestione dei processi.} \label{fig:proc_task_struct} \end{figure} @@ -2576,7 +2577,7 @@ La funzione permette, a seconda di quanto specificato nell'argomento \param{which}, di leggere il valore di \textit{nice} di un processo, di un gruppo di processi (vedi sez.~\ref{sec:sess_proc_group}) o di un utente indicato dall'argomento \param{who}. Nelle vecchie versioni può -essere necessario includere anche \headfile{sys/time.h}, questo non è più +essere necessario includere anche \headfiled{sys/time.h}, questo non è più necessario con versioni recenti delle librerie, ma è comunque utile per portabilità. @@ -2962,7 +2963,7 @@ politica ordinaria essa ha senso soltanto per quelli \textit{real-time}, dato che per i primi la priorità statica può essere soltanto nulla. La disponibilità di entrambe le funzioni può essere verificata controllando la macro \macrod{\_POSIX\_PRIORITY\_SCHEDULING} che è definita -nell'\textit{header file} \headfile{sched.h}. +nell'\textit{header file} \headfiled{sched.h}. Se invece si vuole sapere quale è politica di \textit{scheduling} di un processo si può usare la funzione di sistema \funcd{sched\_getscheduler}, il @@ -3197,7 +3198,7 @@ conveniente l'uso dell'affinità di processore. Dato che il numero di processori può variare a seconda delle architetture, per semplificare l'uso dell'argomento \param{mask} la \acr{glibc} ha introdotto un -apposito dato di tipo, \type{cpu\_set\_t},\footnote{questa è una estensione +apposito dato di tipo, \typed{cpu\_set\_t},\footnote{questa è una estensione specifica della \acr{glibc}, da attivare definendo la macro \macro{\_GNU\_SOURCE}, non esiste infatti una standardizzazione per questo tipo di interfaccia e POSIX al momento non prevede nulla al riguardo.} che @@ -3226,11 +3227,14 @@ se esso è già presente in un insieme, sono le seguenti: \fdecl{void \macrod{CPU\_ZERO}(cpu\_set\_t *set)} \fdesc{Inizializza un insieme di processori vuoto \param{set}.} \fdecl{void \macrod{CPU\_SET}(int cpu, cpu\_set\_t *set)} -\fdesc{Inserisce il processore \param{cpu} nell'insieme di processori \param{set}.} +\fdesc{Inserisce il processore \param{cpu} nell'insieme di + processori \param{set}.} \fdecl{void \macrod{CPU\_CLR}(int cpu, cpu\_set\_t *set)} -\fdesc{Rimuove il processore \param{cpu} nell'insieme di processori \param{set}.} +\fdesc{Rimuove il processore \param{cpu} nell'insieme di + processori \param{set}.} \fdecl{int \macrod{CPU\_ISSET}(int cpu, cpu\_set\_t *set)} -\fdesc{Controlla se il processore \param{cpu} è nell'insieme di processori \param{set}.} +\fdesc{Controlla se il processore \param{cpu} è nell'insieme di + processori \param{set}.} } \end{funcbox}} @@ -4077,7 +4081,7 @@ visto in sez.~\ref{sec:proc_syscall}.\footnote{ed inoltre per questa \item[\errcode{EINVAL}] si è usata una combinazione non valida di flag o un valore nullo per \param{child\_stack}. \item[\errcode{ENOMEM}] non c'è memoria sufficiente per creare una nuova - \struct{task\_struct} o per copiare le parti del contesto del chiamante + \texttt{task\_struct} o per copiare le parti del contesto del chiamante necessarie al nuovo \textit{task}. \item[\errcode{EPERM}] non si hanno i privilegi di amministratore richiesti dai flag indicati. @@ -4356,7 +4360,7 @@ operazione è messa in discussione, per cui l'assenza di eventuali \textit{race condition} (vedi sez.~\ref{sec:proc_race_cond}) deve essere sempre verificata nei minimi dettagli. -In questo caso il sistema provvede un tipo di dato, il \type{sig\_atomic\_t}, +In questo caso il sistema provvede un tipo di dato, il \typed{sig\_atomic\_t}, il cui accesso è assicurato essere atomico. In pratica comunque si può assumere che, in ogni piattaforma su cui è implementato Linux, il tipo \ctyp{int}, gli altri interi di dimensione inferiore ed i puntatori sono