X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=prochand.tex;h=50084035037e37f61c000910e8d81fd6114b93bf;hb=85e7b3ed7aafdb66a7feda150f68649915a5e85d;hp=7ce8852ff95dbc841d50d4c5eab1359f2ad4e263;hpb=b2fde72b2f308cb35873f1fd050501af6a742bc0;p=gapil.git diff --git a/prochand.tex b/prochand.tex index 7ce8852..5008403 100644 --- a/prochand.tex +++ b/prochand.tex @@ -1,6 +1,6 @@ %% prochand.tex %% -%% Copyright (C) 2000-2007 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2009 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", @@ -144,6 +144,9 @@ fig.~\ref{fig:proc_task_struct}. \label{fig:proc_task_struct} \end{figure} +% TODO la task_struct è cambiata per qualche dettaglio vedi anche +% http://www.ibm.com/developerworks/linux/library/l-linux-process-management/ + Come accennato in sez.~\ref{sec:intro_unix_struct} è lo \itindex{scheduler} \textit{scheduler} che decide quale processo mettere in esecuzione; esso viene eseguito ad ogni system call ed ad ogni interrupt,\footnote{più in una serie @@ -161,7 +164,7 @@ periodico secondo la frequenza specificata dalla costante valore è espresso in Hertz.\footnote{a partire dal kernel 2.6.21 è stato introdotto (a cura di Ingo Molnar) un meccanismo completamente diverso, detto \textit{tickless}, in cui non c'è più una interruzione periodica con - frequenza prefissata, ma ad ogni chiamata del time viene programmata + frequenza prefissata, ma ad ogni chiamata del timer viene programmata l'interruzione successiva sulla base di una stima; in questo modo si evita di dover eseguire un migliaio di interruzioni al secondo anche su macchine che non stanno facendo nulla, con un forte risparmio nell'uso dell'energia @@ -1235,7 +1238,10 @@ campi: \item[\var{si\_status}] con lo stato di uscita del figlio o con il segnale che lo ha terminato, fermato o riavviato. \item[\var{si\_code}] con uno fra \const{CLD\_EXITED}, \const{CLD\_KILLED}, - \const{CLD\_STOPPED}, \const{CLD\_CONTINUED} (vedi tab.~\ref{xxx_si_code}). + \const{CLD\_STOPPED}, \const{CLD\_CONTINUED}, \const{CLD\_TRAPPED} e + \const{CLD\_DUMPED} a indicare la ragione del ritorno della funzione, + rispettivamente: uscita normale, terminazione da segnale, processo fermato, + processo riavviato, processo terminato in \textit{core dump}. \end{basedescript} %TODO mettere riferimento alla tabella giusta (vedere man credentials e man @@ -2887,6 +2893,11 @@ fintanto che esso si trova in uno qualunque degli altri stati. \textbf{Zombie}\index{zombie} & \texttt{Z} & Il processo è terminato ma il suo stato di terminazione non è ancora stato letto dal padre. \\ + \textbf{Killable}& \texttt{D} & Un nuovo stato introdotto con il kernel + 2.6.25, sostanzialmente identico + all'\textbf{Uninterrutible Sleep} con la + sola differenza che il processo può + terminato (con \const{SIGKILL}). \\ \hline \end{tabular} \caption{Elenco dei possibili stati di un processo in Linux, nella colonna