Algoritmos de Planificacion
Algoritmos de Planificacion
Algoritmos de Planificacion
Sistemas Operativos.
Rendimiento (throughput)...................................................................................................3
Penalización (P)...................................................................................................................3
En los siguientes sub apartados vamos a estudiar ciertos algoritmos utilizados para
planificar la CPU, la elección de uno (o de una mezcla de varios) depende de decisiones de
diseño. Antes de exponer los algoritmos vamos a explicar ciertas medidas que se utilizan
para evaluarlos.
Tiempo de espera (E) = tiempo que una ráfaga ha permanecido en estado listo.
Tiempo de finalización (F) = tiempo transcurrido desde que una ráfaga comienza a existir
hasta que finaliza. F = E + t (t = tiempo de CPU de la ráfaga).
En general, hay que maximizar los dos primeros parámetros y minimizar los tres últimos.
Sin embargo, estos objetivos son contradictorios, el dedicar más tiempo de CPU a los
usuarios se hace a costa de llamar menos al algoritmo de planificación (menos cambios de
proceso), y de simplificarlo. Esto provoca que la CPU se reparta menos equitativamente
entre los procesos, en detrimento de los últimos tres parámetros.
Así pues, dependiendo de los objetivos se elegirá cierto algoritmo. En los sistemas
por lotes suele primar el rendimiento del sistema, mientras que en los sistemas interactivos
es preferible minimizar.
1. Planificación de Plazo Fijo
El usuario debe informar por adelantado de las necesidades precisas de recursos del
proceso. Semejante información rara vez está disponible.
El sistema debe ejecutar el proceso en un plazo fijo sin degradar demasiado el servicio a
los otros usuarios y debe planificar cuidadosamente sus necesidades de recursos dentro del
plazo. Esto puede ser difícil por la llegada de nuevos procesos que impongan demandas
imprevistas al sistema.
Si hay muchas tareas a plazo fijo activas al mismo tiempo, la planificación puede ser tan
compleja que se necesiten métodos de optimización avanzados para cumplir los plazos.
La administración intensiva de recursos requerida por la planificación de plazo fijo puede
producir un gasto extra substancial.
Cuando se tiene que elegir a qué proceso asignar la CPU se escoge al que llevara más
tiempo listo. El proceso se mantiene en la CPU hasta que se bloquea voluntariamente.
La siguiente herramienta presenta una simulación creada con el objetivo de hacer entender
al usuario el algoritmo de planificación Primero en Entrar Primero en Salir o F.I.F.O.
Este es uno de los algoritmos más antiguos, sencillos y equitativos en el reparto de la CPU
entre los procesos, muy válido para entornos de tiempo compartido. Cada proceso tiene
asignado un intervalo de tiempo de ejecución, llamado cuantum o cuánto. Si el proceso
agota su cuantum de tiempo, se elige a otro proceso para ocupar la CPU. Si el proceso se
bloquea o termina antes de agotar su cuantum también se alterna el uso de la CPU.
El round robin es muy fácil de implementar. Todo lo que necesita el planificador es
mantener una lista de los procesos listos, como se muestra en la figura 6.2.
En esta figura en a) el proceso P7 ocupa la CPU. En b) P7 se bloquea pasando P2 a ocupar
la CPU. En c) P2 agota su cuantum con lo que pasa al final de la lista y P4 ocupa la CPU.
La figura 4 representa un ejemplo más largo de la ocupación de la CPU utilizando el
algoritmo round robin.
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á hasta el punto en que la mayor parte del tiempo se invierte en la conmutación del
procesador, con muy poco o ningún tiempo para ejecutar los programas de los usuarios.
¿Exactamente dónde, entre cero e infinito, debe fijarse el tamaño del cuanto? La respuesta
es, lo bastante grande como para que la mayoría de las peticiones interactivas requieran
menos tiempo que la duración del cuanto.
Al igual que en el algoritmo FIFO las ráfagas se ejecutan sin interrupción, por tanto, sólo
es útil para entornos batch. Su característica es que cuando se activa el planificador, éste
elige la ráfaga de menor duración. Es decir, introduce una noción de prioridad entre
ráfagas. Hay que recordar que en los entornos batch se pueden hacer estimaciones del
tiempo de ejecución de los procesos.
La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo
de finalización promedio, como puede verse en el siguiente ejemplo:
Ej: Supongamos que en un momento dado existen tres ráfagas listas R1, R2 y R3, sus
tiempos de ejecución respectivos son 24, 3 y 3 ms. El proceso al que pertenece la ráfaga R1
es la que lleva más tiempo ejecutable, seguido del proceso al que pertenece R2 y del de R3.
Veamos el tiempo medio de finalización (F) de las ráfagas aplicando FIFO y SJF:
Se puede demostrar que este algoritmo es el óptimo. Para ello, consideremos el caso de
cuatro ráfagas, con tiempos de ejecución de a, b, c y d. La primera ráfaga termina en el
tiempo a, la segunda termina en el tiempo a+b, etc. El tiempo promedio de finalización es
(4a+3b+2c+d) /4. Es evidente que a contribuye más al promedio que los demás tiempos,
por lo que debe ser la ráfaga más corta, b la siguiente, y así sucesivamente. El mismo
razonamiento se aplica a un número arbitrario de ráfagas.
No obstante, este algoritmo sólo es óptimo cuando se tienen simultáneamente todas las
ráfagas. Como contraejemplo, considérense cinco ráfagas desde A hasta E, con tiempo se
ejecución de 2, 4, 1, 1 y 1 respectivamente. Sus tiempos de llegada son 0, 0, 3, 3 y 3.
Primero se dispone de A y B, puesto que las demás ráfagas no han llegado aún. Con el
algoritmo SJF las ejecutaríamos en orden A, B, C, D, y E con un tiempo de finalización
promedio de 4.6. Sin embargo, al ejecutarlas en orden B, C, D, E y A se tiene un promedio
de finalización de 4.4.
Es similar al anterior, con la diferencia de que si un nuevo proceso pasa a listo se activa
el dispatcher para ver si es más corto que lo que queda por ejecutar del proceso en
ejecución. Si es así el proceso en ejecución pasa a listo y su tiempo de estimación se
decremento con el tiempo que ha estado ejecutándose.
En la figura 6.5 tenemos un ejemplo de funcionamiento del algoritmo en el que se observa
cómo se penalizan las ráfagas largas (como en SJF). Un punto débil de este algoritmo se
evidencia cuando una ráfaga muy corta suspende a otra un poco más larga, siendo más
largo la ejecución en este orden al ser preciso un cambio adicional de proceso y la
ejecución del código del planificador.
Brinch Hansen desarrolló la estrategia de prioridad a la tasa de respueta más alta (HRN,
highest-response-ratio-next) que corrige algunas deficiencias de SJF, particularmente el
retraso excesivo de trabajos largos y el favoritismo excesivo para los trabajos cortos. HRN
es una disciplina de planificación no apropiativa en la cual la prioridad de cada proceso no
sólo se calcula en función del tiempo de servicio, sino también del tiempo que ha esperado
para ser atendido. Cuando un trabajo obtiene el procesador, se ejecuta hasta terminar. Las
prioridades dinámicas en HRN se calculan de acuerdo con la siguiente expresión:
Con este tipo de planificación se pretende garantizar al usuario cierta prestación del sistema
y tratar de cumplirla. Si en un sistema tenemos 'n' usuarios lo normal será garantizar a cada
uno de ellos al menos 1/n de la potencia del procesador. Para ello necesitamos del tiempo
consumido por el procesador y el tiempo que lleva el proceso en el sistema. La cantidad de
procesador que tiene derecho a consumir el proceso será el cociente entre el tiempo que
lleva en el sistema entre el número de procesos que hay en el sistema. A esa cantidad se le
puede asociar una prioridad que vendrá dada como el cociente entre tiempo de procesador
que ha consumido y el tiempo que se le prometió (el tiempo que tiene derecho a consumir).
De tal modo que si esa proporción es de 0'5 significa que tan sólo ha consumido la mitad
del tiempo prometido, pero si es de 2 quiere decir que ha consumido más de lo debido,
justamente el doble.
En sistemas de tiempo real se puede adoptar una variante de este algoritmo en el que se
otorgue mayor prioridad al proceso cuyo riesgo de no cumplir el plazo sea mayor.
No optimiza el tiempo de
Los procesos que llegan
Optimiza la utilización. espera. Rendimiento muy
FCFS primero son los primeros en
Fácil de implementar. variable. No adecuado para
ser ejecutados
sistemas interactivos.
Round Selecciona todos los procesos Equitativo. Fácil de Tiempo medio de retorno alto.
Robin de manera equitativa y en un implementar. Buen
orden racional, comenzando tiempo de respuesta.
por el primer proceso de la
lista hasta llegar al último y
empezando de nuevo desde el
primer elemento.
Tipo de Planificador Ventajas Desventajas
Algoritmos no
Ventajas Desventajas
Apropiativos
Fácil de implementar puede provocar baja productividad;
efecto “convoy”
First Come First Served Es bastante justo, si entendemos que
(FCFS) procesos con menos CPU
Algoritmo Shortest Job (Turnaround) con varios procesos Va a usarse la CPU antes de usarla.
First (SJF) listos en llegada simultánea.
Un proceso queda
Se puede usar de modo apropiativos
siempre esperando
o no apropiativo