X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=prochand.tex;h=3693f9186eafdf8b12df0eba71943a2cfb61b2ca;hb=6271cd1b0cc4d403753d1f48d3d562b16db7e613;hp=510e69ac8f11c3262149395d7b955f753e1c93cc;hpb=2dd133c40d690671199991d8972169c32cbe19a7;p=gapil.git diff --git a/prochand.tex b/prochand.tex index 510e69a..3693f91 100644 --- a/prochand.tex +++ b/prochand.tex @@ -742,8 +742,6 @@ che sia cos terminato; si potrebbe avere cioè quello che si chiama un processo \textsl{orfano}. -% TODO verificare il reparenting - Questa complicazione viene superata facendo in modo che il processo orfano venga \textsl{adottato} da \cmd{init}. Come già accennato quando un processo termina, il kernel controlla se è il padre di altri processi in esecuzione: in @@ -2096,8 +2094,6 @@ attivi. In particolare prenderemo in esame i vari meccanismi con cui viene gestita l'assegnazione del tempo di CPU, ed illustreremo le varie funzioni di gestione. -% TODO: rivedere alla luce degli aggiornamenti del 2.6 (man sched_setscheduler) - \subsection{I meccanismi di \textit{scheduling}} \label{sec:proc_sched} @@ -2172,7 +2168,8 @@ fintanto che esso si trova in uno qualunque degli altri stati. 2.6.25, sostanzialmente identico all'\textbf{Uninterrutible Sleep} con la sola differenza che il processo può - terminato (con \const{SIGKILL}).\\ + terminato con \const{SIGKILL} (usato per + lo più per NFS).\\ \hline \end{tabular} \caption{Elenco dei possibili stati di un processo in Linux, nella colonna @@ -2181,8 +2178,6 @@ fintanto che esso si trova in uno qualunque degli altri stati. \label{tab:proc_proc_states} \end{table} -% TODO nel 2.6.25 è stato aggiunto TASK_KILLABLE, da capire dova va messo. - Si deve quindi tenere presente che l'utilizzo della CPU è soltanto una delle risorse che sono necessarie per l'esecuzione di un programma, e a seconda dello scopo del programma non è detto neanche che sia la più importante (molti @@ -2768,13 +2763,22 @@ real-time, e serve a far s da essere rimesso in coda alla lista dei processi con la stessa priorità per permettere ad un altro di essere eseguito; se però il processo è l'unico ad essere presente sulla coda l'esecuzione non sarà interrotta. In genere usano -questa funzione i processi in modalità \textit{fifo}, per permettere +questa funzione i processi con politica \const{SCHED\_FIFO}, per permettere l'esecuzione degli altri processi con pari priorità quando la sezione più urgente è finita. -% TODO: con il 2.6.23 il comportamento è stato leggermente modificato ed è -% stato introdotto /proc/sys/kernel/sched_compat_yield da mettere a 1 per aver -% la compatibilità con il precedente. +La funzione può essere utilizzata anche con processi che usano lo scheduling +ordinario, ma in questo caso il comportamento non è ben definito, e dipende +dall'implementazione. Fino al kernel 2.6.23 questo comportava che i processi +venissero messi in fondo alla coda di quelli attivi, con la possibilità di +essere rimessi in esecuzione entro breve tempo, con 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 + nel file \texttt{/proc/sys/kernel/sched\_compat\_yield}.} + + \subsection{Il controllo dello \textit{scheduler} per i sistemi multiprocessore}