Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin y Tabla de Pr
JuanCarlos PerezCortes
Table of Contents
Tema 8. Gestin de procesos..............................................................................................................................1
8.1 Introduccin.......................................................................................................................................1
8.2 Tipos de procesos...............................................................................................................................1
8.3 Polticas de planificacin en Linux....................................................................................................1
8.4 Estructuras utilizadas por el planificador...........................................................................................2
8.5 El planificador: schedule().................................................................................................................2
8.1 Introduccin
En este tema se van a estudiar las funciones relacionadas con el proceso de planificacin.
El algoritmo de planificacin es el encargado de elegir, en un momento dado, el proceso ms
prioritario del sistema, de entre los que estn preparados para ejecucin.
En Linux, la planificacin de procesos se lleva a cabo en la funcin schedule()[kernel/sched.c#L549].
Aun as, existen otras funciones que tambin estn involucradas en la planificacin, como ya
veremos.
El algoritmo de planificacin de Linux utiliza diversas polticas de planificacin, en funcin del tipo
de proceso. En este tema se vern las diversas polticas y como afectan las polticas de planificacin a
la organizacin de los procesos y a su planificacin.
Preliminares a la planificacin
Se adquiere el cerrojo sobre la cola de ejecucin. [#577]
Si el proceso actual (prev) sigue la poltica round robinSCHED_RR, entonces hay que comprobar si
ya se le ha acabado el quantum y en su caso enviarlo al final de la cola de preparados. [#5804]
Si el proceso actual no est en el estado TASK_RUNNING, hay que quitarlo de la cola de preparados.
Si est bloqueado pero aceptando seales (TASK_INTERRUPTIBLE), se comprueba si hay que
enviarle una seal y despertarlo. Si no, se elimina tambin de la cola (al no ejecutarse el break).
[#58695]
Finalizando la planificacin
Finalmente, y antes de abandonar el planificador, se llevan a cabo un par de acciones ms.
Se vuelve a adquirir el cerrojo del ncleo que se libero en la lnea #569. [#701]
Si al final de llegar al planificador, el nuevo proceso escogido ya necesita volver a planificarse (que
todo puede pasar ;) ), se vuelve casi al principio del planificador a repetir todo el proceso (para qu
esperar ms?). [#7023]
Por ltimo, se vuelve de la funcin schedule(), pero como se ha cambiado la pila del ncleo por
la del nuevo proceso, la direccin de retorno ser la del punto en el que se invoco a
schedule() desde dicho proceso. [#704]