Google+

12 octubre 2013

Algoritmos de planificación

Parámetros

Cuando tenemos más de un proceso en condiciones de ejecutar, debemos escoger uno de entre ellos. Para escogerlo empleamos un algoritmo de planificación. Estos algoritmos pueden usar prioridades. En este caso a cada proceso se le asigna una prioridad y los procesos de mayor prioridad tendrán preferencia sobre los de menos. La prioridad de un proceso se puede modificar a lo largo de su vida, para evitar que un proceso de baja prioridad nunca llegue a ejecutarse debido a que los de alta prioridad monopolizan el procesador.
Otra característica  de un algoritmo de planificación es la expropiación. Podemos definir un algoritmo de planificación como expropiativo si podemos retirar un proceso que se está ejecutando para introducir otro nuevo.
Para estudiar la bondad de un algoritmo de planificación se suelen estudiar algunos parámetros:
  • Tiempo de espera: Tiempo que el proceso está parado o en espera desde que se lanza hasta que finaliza su ejecución.
  • Tiempo de retorno: Tiempo que transcurre desde que el proceso se lanza hasta que finaliza su ejecución. Se puede ver como la suma del tiempo de espera más el tiempo de ejecución.
  • Tiempo de respuesta: Tiempo que pasa desde que se manda ejecutar un proceso hasta que se ejecuta por primera vez.
  • Productividad: Número de trabajos realizados por unidad de tiempo.
  • Uso de la CPU: Porcentaje de tiempo que el procesador pasa ejecutando procesos.
Pasamos a explicar los diferentes algoritmos desarrollando un ejemplo sobre la siguiente tabla de procesos que representa los instantes de llegada de cada proceso y también los tiempos de ejecución respectivamente.


FCFS. First Come, First Served o lo que es lo mismo el primero que llega es el primero en ser atendido. Podemos decir que no es expropiativo y no emplea prioridades. Es un algoritmo muy sencillo de implementar, basta con emplear una cola FIFO, pero corre el peligro de que un proceso muy largo monopolice la CPU durante mucho tiempo generando tiempos de espera mayores de los que serían deseables.

Algoritmo FCFS

Round-Robin. También conocido como RR, Carrousel o planificación por rondas. Se reparte el tiempo de CPU en quantums o rodajas. El funcionamiento es dar una rodaja a cada proceso de forma secuencial. La selección de entre los procesos activos se gestiona según una cola FIFO o lo que es lo mismo se elije el que más tiempo lleve esperando. Si llega un proceso nuevo y hay otro en ejecución, los ciclos de CPU se distribuyen entre ambos pero se ejecuta un ciclo de CPU para el proceso en ejecución e inmediatamente  se le asigna un ciclo al recién llegado. Como se puede deducir, este algoritmo es expropiativo y no emplea prioridades.


RR quantum=3
RR quantum=2
RR quantum=1
SJF. Son las siglas de Short Job First, es decir el trabajo más corto primero. En este caso se seleccionará el proceso que requiera menor tiempo de ejecución (si dos tienen el mismo tiempo se decide por FIFO). El problema puede aparecer con procesos muy largos que están siempre bloqueados por procesos más cortos. Este algoritmo puede ser expropiativo o no. En la variante expropiativa denominada SRTN(Shortest Remainig Time Next) medimos el tiempo restante que le queda a cada proceso.


Algoritmo SJF (no expropiativo)


SRTN. Es la variedad expropiativa de SJF. Eso significa que el proceso con menor tiempo para acabar es el siguiente proceso en ejecutarse expropiando la CPU inmediatamente al proceso que este en ejecución en el instante correspondiente. El problema vendría en el caso que tengamos un proceso que requiera un tiempo de ejecución para finalizar igual que un proceso nuevo que entra. Existen dos soluciones, dar prioridad a los procesos nuevos sobre los procesos en ejecución o dar prioridad a los procesos en ejecución sobre los procesos nuevos.

SRTN con prioridad a procesos en ejecución
SRTN con prioridad a procesos nuevos

Por prioridad. En este tipo de algoritmos el proceso de mayor prioridad es el que se ejecuta. Para evitar que los procesos con baja prioridad no lleguen a  ejecutarse, a lo largo de la vida de un proceso se puede incrementar dicha prioridad de acuerdo a diferentes criterios:
  • Según la categoría del usuario.
  • Segun el tipo de proceso.
  • Según la ocupación de CPU de los procesos.
Multiples colas. Se usan diferentes colas, donde cada cola puede tener diferentes algoritmos de planificación y también se pueden clasificar los procesos. Se trata de repartir el tiempo de la CPU entra las diferentes  colas según la carga que tenga cada una. Otra idea útil es migrar los procesos de una cola a otra cuando la situación lo requiera. Este algoritmo es uno de los más completos, pero también es de los más difíciles de implementar.

2 niveles. Hasta ahora se ha supuesto que todos los procesos están en memoria, pero qué pasa cuando hay muchos procesos, o poca memoria y no podemos almacenarlos todos allí. Una de las soluciones más elegantes consiste en establecer dos niveles, uno para planificar a largo plazo, donde se situan los procesos que no están en memoria y otro nivel a corto plazo donde se ponen los procesos que están en memoria.
Ejemplo 
Cierto SO posee un algoritmo de planificación de CPU basado en 3 colas multinivel realimentadas. La forma en la que los trabajos se alojan en cada una de las colas es la siguiente:
  • Todos los trabajos, cuando llegan al sistema, son colocados en la cola 1, la cual se planifica de acuerdo con un algoritmo Round-Robin con cuanto de tiempo igual a 2ms. en esta cola un trabajo permanecerá si después de ejecutar su primera ráfaga de CPU, le queda por ejecutar ráfagas inferiores a 5 ms. en caso contrario pasaría a la cola 2 o a la cola 3.
  • Un trabajo pasará a la cola 2 en caso de que le quede por ejecutar una ráfaga mayor o igual a 5 ms. Este trabajo permanecerá en esta cola hasta que termine su ejecución y se planifica según Round-Robin con cuanto igual a 3ms.
  • Un trabajo pasará a la cola 3, en caso de que le quede por ejecutar una ráfaga de CPU superior o igual a 8 ms. Este trabajo permanecerá en esta cola hasta que termine su ejecución  y se planifica según SJF.

Sabiendo que la cola 1 es la de mayor prioridad y la 3 la de prioridad inferior, calcule para el siguiente conjunto de trabajos:

  1. Dibujar la planificación de los trabajos en cada una de las colas y el orden en que se van ejecutando en la CPU.
  2. El tiempo de espera y de estancia de cada trabajo.
  3. Tiempo medio de retorno y de espera del sistema.
Planificación CPU basada en colas multinivel








Propuesta 

Cierto SO posee un algoritmo de planificación de CPU basado en 3 colas multinivel realimentadas. La forma en la que los trabajos se alojan en cada una de las colas es la siguiente:
  • Todos los trabajos, cuando llegan al sistema, son colocados en la cola 1, la cual se planifica de acuerdo con un algoritmo Round-Robin con cuanto de tiempo igual a 2ms. en esta cola un trabajo permanecerá si después de ejecutar su primera ráfaga de CPU, le queda por ejecutar ráfagas inferiores a 5 ms. en caso contrario pasaría a la cola 2 o a la cola 3.
  • Un trabajo pasará a la cola 2 en caso de que le quede por ejecutar una ráfaga mayor o igual a 5 ms. Esta cola se planifica según Round-Robin con cuanto igual a 3ms.
  • Un trabajo pasará a la cola 3, en caso de que le quede por ejecutar una ráfaga de CPU superior o igual a 8 ms. Esta cola  se planifica según SJF.

Sabiendo que la cola 1 es la de mayor prioridad y la 3 la de prioridad inferior, calcule para la tabla de  trabajos anterior la planificación, el tiempo medio de espera y el tiempo medio de respuesta, teniendo en cuenta las siguientes consideraciones: 

  • Cada trabajo que exista en el sistema se bloquea cuando solicita alguna operación de E/S sobre un mismo dispositivo compartido.
  • Las solicitudes de E/S son atendidas secuencialmente en el mismo orden en que fueron efectuadas por los procesos. En caso de coincidencia en el tiempo en el acceso al mismo dispositivo por parte de dos o más trabajos, estos se colocarán en una cola dedicada a dicho dispositivo mientras termina la transferencia el trabajo anterior.
  • Dicha cola se gestionará en forma de FIFO.

Consideraciones Finales

RR

  • Es adecuado para implementar tiempo compartido.
  • Se comporta como FCFS pero cada proceso dispone de un cuanto de tiempo máximo.
  • Si el cuanto es muy grande (más grande que el mayor tiempo de CPU de los procesos), RR se convierte en FCFS ya que los procesos terminan sus ráfagas de CPU antes de que termine el cuanto.
  • Si el cuanto es muy pequeño se provocarían constantemente cambios de contexto, disminuyendo el rendimiento.
FCFS
  • Tiene tiempos de espera bastantes largos.
SJF
  • Se minimiza el tiempo de espera medio.
  • Los procesos de larga duración sufren riesgo de inanición.
  • SJF es un caso especial de planificación por prioridad.
  • SJF dispone de su versión expulsiva.

Prioridades
  • Los procesos de prioridad más baja tienen riesgo de inanición que podría ser solventado aumentando de forma progresiva la prioridad de los procesos en espera (prioridades dinámicas).
  • La política de prioridades puede ser o no expulsiva.

LinkWithin

Related Posts Plugin for WordPress, Blogger...