jueves, 5 de mayo de 2016

SJF (No apropiativo)


SJF, significa  (Short Job First – El trabajo más corto primero) se refiere al proceso que tenga el próximo ciclo de CPU más corto. La idea es escoger entre todos los procesos listos el que tenga su próximo ciclo de CPU más pequeño, que asocia a cada proceso la longitud de la siguiente ráfaga de CPU de ese proceso. Cuando la CPU queda disponible, asigna al proceso cuya siguiente ráfaga de CPU sea más corta. Si hay dos procesos cuyas siguientes ráfagas de CPU tienen la misma duración, se emplea planificación FiFo

Puede comprobarse que el algoritmo SJF es óptimo, ya que ofrece el menor tiempo promedio para un conjunto de procesos dados.

Este algoritmo presenta una gran ventaja, pues el tiempo de espera será mucho menor, pues mientras los procesos de tiempo inferior terminan y ocupan tiempo en operaciones de E/S, el CPU se ocupa de resolver el proceso con mayor tiempo.


Este algoritmo puede ser preemptive y nonpreemptive. En el caso depreemptive, cuando un proceso llega a la cola de procesos listos, su prioridad es comparada con la prioridad del proceso que está corriendo. Si la prioridad del nuevo proceso es mayor, entonces se atiende al nuevo proceso


Ejemplo: 

1. Se tiene el siguiente listado de tareas




2. Se empiezan a ingresar las tareas para ser procesadas, escogiendo la tarea mas corta (cual aplica para todas las tareas), por lo tanto se ingresa la T3, con un tamaño de 8 



3. Luego se ingresa la tarea T4, esta tiene un tamaño de 9, mas los 8 ocupados por T3, para un total de 17. 




4. Posteriormente se ingresa T1 con un tamaño de 12, mas los 17 ya ocupados por T3 y T4, para un total de 29. 




5. Ahora se ingresa la T5, la cual ocupa 13, mas los 29 ya ocupados por las tareas ingresadas 
anteriormente, serian 42.




6. Por último entra T2, con 15 de tamaño, mas el tamaño de las tareas previamente ingresadas, son 57




7. Luego se suman todos los tamaños de cuando son procesadas las tareas: 


8 + 17 + 29 + 42 + 57 = 153


y para hallar el tiempo promedio de ejecución, se toma el resultado de la suma y se divide en la cantidad de tareas que ingresaron. 

153 / 5 = 30.6




Por último se tiene un vídeo explicativo del algoritmo SJF, en donde se evidencian algunos ejercicios. 







2 comentarios: