Cuando más de un proceso es
ejecutable desde el punto de vista lógico, el Sistema Operativo
debe decidir cuál de ellos debe ejecutarse en primer término.
El Planificador es la
porción del Sistema Operativo que decide y el Algoritmo de Planificación es el
utilizado.
Las decisiones de planificación de CPU se toman según las cuatro situaciones siguientes:
1. Cuando un proceso pasa del estado en ejecución a en espera.
2. Cuando un proceso pasa del estado en ejecución a listo.
3. Cuando un proceso pasa del estado en espera al estado listo.
4. Cuando un proceso termina.
ñ Planificación apropiativa:
es la
estrategia de permitir que procesos
ejecutables
(desde el punto de vista lógico) sean suspendidos
temporalmente.
ñ Planificación no apropiativa:
es la
estrategia de permitir la ejecución de un
proceso hasta terminar.
Principales algoritmos
de planificación:
FIFO (First in, First ouput - primero en entrar, primero en salir): es un algoritmo no apropiativo
ya que no libera el CPU hasta la ejecución del proceso.
Cuando se tiene que elegir a qué proceso asignar la CPU se escoge
al que lleva más tiempo listo. Cuando el CPU está libre, éste es asignado al
proceso que está en la cabeza de la cola. El proceso en ejecución se mantiene
en la CPU hasta que espontáneamente lo suelta ya sea porque el proceso finalizó
o por algún requerimiento de E/S.
Este algoritmo puede presentar un inconveniente ya que si el
proceso que está adelante es demasiado largo, el resto sin importar su tiempo
de duración, debe esperar hasta que termine completamente.
SJF (Short job
first – Primero el trabajo más corto): puede ser apropiativo o no apropiativo.
Este tipo de algoritmo de planificación se usa para trabajos en batch o de procesamiento por lotes en los cuales se puede saber cual es el tiempo de duración de la ejecución de cada proceso y entonces se puede seleccionar primero el trabajo más corto. El problema que se presenta con éste algoritmo es que los grandes procesos podrían sufrir de inanición dado que cualquier proceso pequeño se "cuela" sobre uno de mayor tamaño y como resultado final se podría dar el caso que el proceso grande nunca obtenga procesamiento.
SRTF (Short Remaining time first –
Tiempo restante de ejecución menor): es la parte apropiativa de SJF.
En este caso si un nuevo proceso pasa a listo y es más corto que
lo que queda por ejecutar del proceso en ejecución, el proceso en ejecución
pasa a listo y el nuevo a ejecución, es decir el proceso en CPU es desalojado si
llega a la cola un proceso con duración más corta.
Round
Robin: En este tipo de planificación cada proceso tiene asignado un
quantum de tiempo para ejecutarse, en este caso al finalizar el quantum. El quantum
de un proceso equivale a un número fijo de pulsos o ciclos de reloj. Si ese
quantum no es suficiente para acabar, el reloj del sistema genera una interrupción
y el proceso pasa de nuevo a la cola para ser atendido nuevamente cuando todos
los demás procesos hayan recibido su quantum.
Si el cuanto de tiempo es muy grande, cada proceso tendrá el tiempo necesario para terminar, de manera que el esquema de planificación por turno rotatorio degenera en uno de primero-en-entrar-primero-en-salir. Si el cuanto es muy pequeño, el gasto extra por cambio de proceso se convierte en el factor dominante y el rendimiento del sistema se degradará.
Prioridad: A cada proceso se le asocia una prioridad y la CPU es asignada al proceso de mayor prioridad, el criterio principal es hacer que los procesos ‘en espera’ sean los primeros en ejecutarse es por esa que los procesos de prioridad más baja tienen riesgo de inanición, para evitar esto es recomendable ir aumentando de forma progresiva la prioridad de los procesos en espera.
Las prioridades pueden ser definidas externa o internamente. De forma interna, la define el SO. De forma externa, la definen los usuarios. El algoritmo SJF es un caso de planificación por prioridad.
Para conocer los tiempos de espera (tiempo que un proceso permanece en la cola de preparados) y de retorno (tiempo transcurrido entre la llegada de un proceso y su finalización), se utilizan las siguientes fórmulas:
Además se construye un diagrama de Gantt para colocar los procesos, todo esto se realiza según el criterio de cada algoritmo. Por ejemplo:
Se tiene una tabla con los siguientes valores y se desea aplicar el algoritmo FIFO: