projects
/
gapil.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Piccole correzioni dimenticate
[gapil.git]
/
prochand.tex
diff --git
a/prochand.tex
b/prochand.tex
index df3eadc7abb31c04d2a544106bc52de28b0cd28d..f62a758779f34b73d5f0e3fa84686fd96428596c 100644
(file)
--- a/
prochand.tex
+++ b/
prochand.tex
@@
-1,6
+1,6
@@
%% prochand.tex
%%
%% prochand.tex
%%
-%% Copyright (C) 2000-201
5
by Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-201
7
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",
%% 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",
@@
-145,8
+145,9
@@
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.}
+ \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}
\label{fig:proc_task_struct}
\end{figure}
@@
-209,7
+210,7
@@
riparte dal numero più basso disponibile a partire da un minimo di
\constd{PID\_MAX} nei file \file{threads.h} e \file{fork.c} dei sorgenti del
kernel, con il 2.6.x e la nuova interfaccia per i \textit{thread} anche il
meccanismo di allocazione dei \ids{PID} è stato modificato ed il valore
\constd{PID\_MAX} nei file \file{threads.h} e \file{fork.c} dei sorgenti del
kernel, con il 2.6.x e la nuova interfaccia per i \textit{thread} anche il
meccanismo di allocazione dei \ids{PID} è stato modificato ed il valore
- massimo è impostabile attraverso il file \sysctlfile{kernel/pid\_max} e di
+ massimo è impostabile attraverso il file \sysctlfile
d
{kernel/pid\_max} e di
default vale 32768.} che serve a riservare i \ids{PID} più bassi ai processi
eseguiti direttamente dal kernel. Per questo motivo, come visto in
sez.~\ref{sec:proc_hierarchy}, il processo di avvio (\cmd{init}) ha sempre il
default vale 32768.} che serve a riservare i \ids{PID} più bassi ai processi
eseguiti direttamente dal kernel. Per questo motivo, come visto in
sez.~\ref{sec:proc_hierarchy}, il processo di avvio (\cmd{init}) ha sempre il
@@
-1297,8
+1298,8
@@
nuovo riceverne lo stato.
\constd{WEXITED} & Ritorna quando un processo figlio è terminato.\\
\constd{WNOHANG} & Ritorna immediatamente anche se non c'è niente da
notificare.\\
\constd{WEXITED} & Ritorna quando un processo figlio è terminato.\\
\constd{WNOHANG} & Ritorna immediatamente anche se non c'è niente da
notificare.\\
- \constd{WSTOPPED}
&
Ritorna quando un processo figlio è stato fermato.\\
- \const
d{WCONTINUED}
& Ritorna quando un processo figlio che era stato
+ \constd{WSTOPPED}
&
Ritorna quando un processo figlio è stato fermato.\\
+ \const
{WCONTINUED}
& Ritorna quando un processo figlio che era stato
fermato ha ripreso l'esecuzione.\\
\constd{WNOWAIT} & Lascia il processo ancora in attesa di ricezione, così
che una successiva chiamata possa di nuovo riceverne
fermato ha ripreso l'esecuzione.\\
\constd{WNOWAIT} & Lascia il processo ancora in attesa di ricezione, così
che una successiva chiamata possa di nuovo riceverne
@@
-1673,8
+1674,8
@@
dell'eseguibile; il formato è ormai in completo disuso, per cui è molto
probabile che non il relativo supporto non sia disponibile. Se il programma è
in formato ELF per caricare le librerie dinamiche viene usato l'interprete
indicato nel segmento \constd{PT\_INTERP} previsto dal formato stesso, in
probabile che non il relativo supporto non sia disponibile. Se il programma è
in formato ELF per caricare le librerie dinamiche viene usato l'interprete
indicato nel segmento \constd{PT\_INTERP} previsto dal formato stesso, in
-genere questo è \sysfile{/lib/ld-linux.so.1} per programmi collegati con la
-\acr{libc5}, e \sysfile{/lib/ld-linux.so.2} per programmi collegati con la
+genere questo è \sysfile
d
{/lib/ld-linux.so.1} per programmi collegati con la
+\acr{libc5}, e \sysfile
d
{/lib/ld-linux.so.2} per programmi collegati con la
\acr{glibc}.
Infine nel caso il programma che si vuole eseguire sia uno script e non un
\acr{glibc}.
Infine nel caso il programma che si vuole eseguire sia uno script e non un
@@
-1930,11
+1931,11
@@
dell'utente che ha lanciato il programma, effettuare il lavoro che non
necessita di privilegi aggiuntivi, ed eventualmente tornare indietro.
Come esempio per chiarire l'uso di queste funzioni prendiamo quello con cui
necessita di privilegi aggiuntivi, ed eventualmente tornare indietro.
Come esempio per chiarire l'uso di queste funzioni prendiamo quello con cui
-viene gestito l'accesso al file \sysfile{/var/run/utmp}. In questo file viene
+viene gestito l'accesso al file \sysfile
d
{/var/run/utmp}. In questo file viene
registrato chi sta usando il sistema al momento corrente; chiaramente non può
essere lasciato aperto in scrittura a qualunque utente, che potrebbe
falsificare la registrazione. Per questo motivo questo file (e l'analogo
registrato chi sta usando il sistema al momento corrente; chiaramente non può
essere lasciato aperto in scrittura a qualunque utente, che potrebbe
falsificare la registrazione. Per questo motivo questo file (e l'analogo
-\sysfile{/var/log/wtmp} su cui vengono registrati login e logout) appartengono
+\sysfile
d
{/var/log/wtmp} su cui vengono registrati login e logout) appartengono
ad un gruppo dedicato (in genere \acr{utmp}) ed i programmi che devono
accedervi (ad esempio tutti i programmi di terminale in X, o il programma
\cmd{screen} che crea terminali multipli su una console) appartengono a questo
ad un gruppo dedicato (in genere \acr{utmp}) ed i programmi che devono
accedervi (ad esempio tutti i programmi di terminale in X, o il programma
\cmd{screen} che crea terminali multipli su una console) appartengono a questo
@@
-2961,8
+2962,8
@@
corrente. Benché la funzione sia utilizzabile anche con processi sottoposti a
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
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 \macro
d{\_POSIX\_PRIORITY\_SCHEDULING} che è definita
-
nell'\textit{header
file} \headfiled{sched.h}.
+macro \macro
{\_POSIX\_PRIORITY\_SCHEDULING} che è definita 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
Se invece si vuole sapere quale è politica di \textit{scheduling} di un
processo si può usare la funzione di sistema \funcd{sched\_getscheduler}, il
@@
-3056,7
+3057,7
@@
l'introduzione del \textit{Completely Fair Scheduler} questo comportamento è
cambiato ed un processo che chiama la funzione viene inserito nella lista dei
processi inattivo, con un tempo molto maggiore.\footnote{è comunque possibile
ripristinare un comportamento analogo al precedente scrivendo il valore 1
cambiato ed un processo che chiama la funzione viene inserito nella lista dei
processi inattivo, con un tempo molto maggiore.\footnote{è comunque possibile
ripristinare un comportamento analogo al precedente scrivendo il valore 1
- nel file \sysctlfile{kernel/sched\_compat\_yield}.}
+ nel file \sysctlfile
d
{kernel/sched\_compat\_yield}.}
L'uso delle funzione nella programmazione ordinaria può essere utile e
migliorare le prestazioni generali del sistema quando si è appena rilasciata
L'uso delle funzione nella programmazione ordinaria può essere utile e
migliorare le prestazioni generali del sistema quando si è appena rilasciata
@@
-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
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, \type
d
{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
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)}
\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)}
\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)}
\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}}
}
\end{funcbox}}
@@
-3890,7
+3894,7
@@
Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
Il comportamento di default prevede che per tutti i processi si applichi la
politica generale di sistema definita nel file
Il comportamento di default prevede che per tutti i processi si applichi la
politica generale di sistema definita nel file
- \sysctlfile{vm/memory\_failure\_early\_kill}, ma specificando
+ \sysctlfile
d
{vm/memory\_failure\_early\_kill}, ma specificando
per \param{arg2} il valore \constd{PR\_MCE\_KILL\_SET} è possibile impostare
con il contenuto di \param{arg3} una politica specifica del processo
chiamante. Si può tornare alla politica di default del sistema utilizzando
per \param{arg2} il valore \constd{PR\_MCE\_KILL\_SET} è possibile impostare
con il contenuto di \param{arg3} una politica specifica del processo
chiamante. Si può tornare alla politica di default del sistema utilizzando
@@
-4190,6
+4194,10
@@
elenco, che illustra quelle attualmente disponibili:\footnote{si fa
% \item[\constd{CLONE\_NEWPID}]
% \item[\constd{CLONE\_NEWUTS}]
% \item[\constd{CLONE\_NEWPID}]
% \item[\constd{CLONE\_NEWUTS}]
+
+% TODO trattare CLONE_NEWCGROUP introdotto con il kernel 4.6, vedi
+% http://lwn.net/Articles/680566/
+
\item[\constd{CLONE\_PARENT}]
\item[\constd{CLONE\_PARENT\_SETTID}]
\item[\constd{CLONE\_PID}]
\item[\constd{CLONE\_PARENT}]
\item[\constd{CLONE\_PARENT\_SETTID}]
\item[\constd{CLONE\_PID}]
@@
-4233,6
+4241,10
@@
elenco, che illustra quelle attualmente disponibili:\footnote{si fa
% http://lwn.net/Articles/531498/
% http://lwn.net/Articles/531498/
+% TODO trattare le funzioni di protezione della memoria pkey_alloc, pkey_free,
+% pkey_mprotect, introdotte con il kernel 4.8, vedi
+% http://lwn.net/Articles/689395/ e Documentation/x86/protection-keys.txt
+
%TODO trattare kcmp aggiunta con il kernel 3.5, vedi
% https://lwn.net/Articles/478111/
%TODO trattare kcmp aggiunta con il kernel 3.5, vedi
% https://lwn.net/Articles/478111/
@@
-4356,7
+4368,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.
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 \type
d
{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
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
@@
-4473,8
+4485,8
@@
parte del programmatore.
In genere le funzioni di libreria non sono rientranti, molte di esse ad
esempio utilizzano variabili statiche, la \acr{glibc} però mette a
In genere le funzioni di libreria non sono rientranti, molte di esse ad
esempio utilizzano variabili statiche, la \acr{glibc} però mette a
-disposizione due macro di compilatore, \macro
d
{\_REENTRANT} e
-\macro
d
{\_THREAD\_SAFE}, la cui definizione attiva le versioni rientranti di
+disposizione due macro di compilatore, \macro{\_REENTRANT} e
+\macro{\_THREAD\_SAFE}, la cui definizione attiva le versioni rientranti di
varie funzioni di libreria, che sono identificate aggiungendo il suffisso
\code{\_r} al nome della versione normale.
varie funzioni di libreria, che sono identificate aggiungendo il suffisso
\code{\_r} al nome della versione normale.