La planificación de la CPU, en el sentido de conmutarla
entre los distintos procesos, es una de las funciones del sistema operativo.
Este despacho es llevado a cabo por un pequeño programa llamado planificador a
corto plazo o dispatcher (despachador). La misión del dispatcher consiste en
asignar la CPU a uno de los procesos ejecutables del sistema, para ello sigue
un determinado algoritmo. En secciones posteriores estudiaremos algunos
algoritmos posibles. Para que el dispatcher conmute el procesador entre dos
procesos es necesario realizar un cambio de proceso.
Los acontecimientos que pueden provocar la llamada al
dispatcher dependen del sistema (son un subconjunto de las interrupciones),
pero son alguno de estos:
El proceso en ejecución acaba su ejecución o no puede
seguir ejecutándose (por una E/S, operación WAIT, etc).
Un elemento del sistema operativo ordena el bloqueo
del proceso en ejecución (ver estados de un proceso).
El proceso en ejecución agota su cuantum o cuanto de
estancia en la CPU.
Un proceso pasa a estado listo.
El scheduling está muy relacionado con la gestión de los
recursos. Existen tres niveles de scheduling, como se ilustra en la figura,
estos niveles son:
Planificador de la CPU o a corto plazo.
Planificador a medio plazo.
Planificador a largo plazo.
Ya hemos hablado del planificador de la CPU, y en los
subapartados posteriores se comentan los dos restantes:
Planificación a largo plazo
Este planificador está presente en algunos sistemas que
admiten además de procesos interactivos trabajos por lotes. Usualmente , se les
asigna una prioridad baja a los trabajos por lotes, utilizándose estos para
mantener ocupados a los recursos del sistema durante períodos de baja actividad
de los procesos interactivos. Normalmente, los trabajos por lotes realizan tareas
rutinarias como el cálculo de nóminas; en este tipo de tareas el programador
puede estimar su gasto en recursos, indicándoselo al sistema. Esto facilita el
funcionamiento del planificador a largo plazo.
El objetivo primordial del planificador a largo plazo es el
de dar al planificador de la CPU una mezcla equilibrada de trabajos, tales como
los limitados por la CPU (utilizan mucho la CPU) o la E/S. Así, por ejemplo,
cuando la utilización de la CPU es baja, el planificador puede admitir más
trabajos para aumentar el número de procesos listos y, con ello, la
probabilidad de tener algún trabajo útil en espera de que se le asigne la CPU.
A la inversa, cuando la utilización de la CPU llega a ser alta, y el tiempo de
respuesta comienza a reflejarlo, el planificador a largo plazo puede optar por
reducir la frecuencia de admisión de trabajos.
Normalmente, se invoca al planificador a largo plazo siempre
que un proceso termina. La frecuencia de invocación depende, pues, de la carga
del sistema, pero generalmente es mucho menor que la de los otros dos
planificadores. Esta baja frecuencia de uso hace que este planificador pueda
permitirse utilizar algoritmos complejos, basados en las estimaciones de los
nuevos trabajos.
Planificación a Medio Plazo
En los sistemas de multiprogramación y tiempo compartido
varios procesos residen en la memoria principal. El tamaño limitado de ésta
hace que el número de procesos que residen en ella sea finito. Puede ocurrir
que todos los procesos en memoria estén bloqueados, desperdiciándose así la
CPU. En algunos sistemas se intercambian procesos enteros (swap) entre memoria
principal y memoria secundaria (normalmente discos), con esto se aumenta el
número de procesos, y, por tanto, la probabilidad de una mayor utilización de
la CPU.
El planificador a medio plazo es el encargado de regir las
transiciones de procesos entre memoria principal y secundaria, actúa intentando
maximizar la utilización de los recursos. Por ejemplo, transfiriendo siempre a
memoria secundaria procesos bloqueados, o transfiriendo a memoria principal
procesos bloqueados únicamente por no tener memoria.

No hay comentarios:
Publicar un comentario