From: Simone Piccardi Date: Thu, 13 Dec 2007 14:01:24 +0000 (+0000) Subject: Messo riferimento a {{{/proc/sys/kernel/pid_max}}} X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=commitdiff_plain;h=26fccdef0d2fe3c709912e3443947d1fb4c4dd0f;p=gapil.git Messo riferimento a {{{/proc/sys/kernel/pid_max}}} --- diff --git a/prochand.tex b/prochand.tex index 0726c43..3418331 100644 --- a/prochand.tex +++ b/prochand.tex @@ -218,7 +218,6 @@ prima ritorna due volte (nel processo padre e nel figlio) mentre la seconda non ritorna mai (in quanto con essa viene eseguito un altro programma). - \section{Le funzioni di base}% della gestione dei processi} \label{sec:proc_handling} @@ -250,10 +249,12 @@ basso disponibile a partire da un minimo di 300,\footnote{questi valori, fino al kernel 2.4.x, sono definiti dalla macro \const{PID\_MAX} in \file{threads.h} e direttamente in \file{fork.c}, con il kernel 2.5.x e la nuova interfaccia per i thread creata da Ingo Molnar anche il meccanismo di - allocazione dei \acr{pid} è stato modificato.} che serve a riservare i -\acr{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 \acr{pid} uguale a uno. + allocazione dei \acr{pid} è stato modificato; il valore massimo è + impostabile attraverso il file \procfile{/proc/sys/kernel/pid\_max} e di + default vale 32768.} che serve a riservare i \acr{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 +\acr{pid} uguale a uno. Tutti i processi inoltre memorizzano anche il \acr{pid} del genitore da cui sono stati creati, questo viene chiamato in genere \acr{ppid} (da @@ -477,9 +478,9 @@ rischio di incorrere nelle cosiddette \itindex{race~condition} \textit{race In realtà a partire dal kernel 2.5.2-pre10 il nuovo \itindex{scheduler} \textit{scheduler} di Ingo Molnar esegue sempre per primo il -figlio;\footnote{i risultati precedenti sono stati ottenuti su un kernel della - serie 2.4.} questa è una ottimizzazione che serve a evitare che il padre, -effettuando per primo una operazione di scrittura in memoria, attivi il +figlio;\footnote{i risultati precedenti sono stati ottenuti usando un kernel + della serie 2.4.} questa è una ottimizzazione che serve a evitare che il +padre, effettuando per primo una operazione di scrittura in memoria, attivi il meccanismo del \itindex{copy~on~write} \textit{copy on write}. Questa operazione infatti potrebbe risultare del tutto inutile qualora il figlio fosse stato creato solo per eseguire una \func{exec}, in tal caso infatti si @@ -489,7 +490,7 @@ indirizzi, rendendo superflua la copia della memoria modificata dal padre. Eseguendo sempre per primo il figlio la \func{exec} verrebbe effettuata subito avendo così la certezza che il \itindex{copy~on~write} \textit{copy on write} viene utilizzato solo quando necessario. Quanto detto in precedenza vale -allora soltanto per i kernel fino al 2.4, per mantenere la portabilità è però +allora soltanto per i kernel fino al 2.4; per mantenere la portabilità è però opportuno non fare affidamento su questo comportamento, che non si riscontra in altri Unix e nelle versioni del kernel precendenti a quella indicata.