1. El trabajo más corto primero (SJF) :
el algoritmo de programación del trabajo más corto primero (SJF) se basa en el tiempo de ráfaga del proceso. Los procesos se colocan en la cola de listos en función de sus tiempos de ráfaga. En este algoritmo, el proceso con el menor tiempo de ráfaga se procesa primero. Se compara el tiempo de ráfaga de sólo aquellos procesos que están presentes o han llegado hasta ese momento. También es de naturaleza no preventiva. Su versión preventiva se llama algoritmo Shortest Remaining Time First (SRTF) .
La principal ventaja de este algoritmo es que proporciona el tiempo de espera mínimo para un conjunto dado de procesos y, por lo tanto, reduce el tiempo de espera promedio. La desventaja de este algoritmo es que el sistema nunca puede procesar los procesos largos y pueden permanecer en la cola durante mucho tiempo, lo que lleva a la inanición de los procesos.
Nota:
si dos procesos tienen el mismo tiempo de ráfaga, el empate se rompe mediante FCFS, es decir, el proceso que llegó primero se procesa primero.
2. Round-Robin (RR) :
el algoritmo de programación Round-Robin (RR) está especialmente diseñado para sistemas de tiempo compartido. Los procesos se colocan en la cola de procesos listos, que en este caso es una cola circular. En este caso se define una pequeña unidad de tiempo conocida como cuanto de tiempo. El algoritmo selecciona el primer proceso de la cola y lo ejecuta durante el tiempo definido por el cuanto de tiempo. Si el proceso tiene un tiempo de ráfaga menor que el cuanto de tiempo, entonces la CPU ejecuta el siguiente proceso, pero si tiene un tiempo de ráfaga mayor que el cuanto de tiempo, entonces el proceso se interrumpe y el siguiente proceso se ejecuta por el mismo cuanto de tiempo. Si se interrumpe un proceso, se produce un cambio de contexto y el proceso se vuelve a colocar al final de la cola. Es de carácter preventivo.
Este algoritmo depende principalmente del cuanto de tiempo. La cantidad de tiempo muy grande hace que RR sea igual que FCFS, mientras que una cantidad de tiempo muy pequeña conducirá a la sobrecarga ya que el cambio de contexto ocurrirá una y otra vez después de intervalos muy pequeños.
La principal ventaja de este algoritmo es que todos los procesos se ejecutan uno tras otro, lo que no conduce a la inanición de los procesos ni a la espera de un proceso durante mucho tiempo para ejecutarse.
La diferencia entre el algoritmo de programación Shortest Job First (SJF) y Round-Robin (RR) es la siguiente:
Trabajo más corto primero (SJF) | Todos contra todos (RR) |
---|---|
Shortest Job First (SJF) ejecuta los procesos en función de su tiempo de ráfaga, es decir, en orden ascendente de sus tiempos de ráfaga. | Round-Robin (RR) ejecuta los procesos en función de la cantidad de tiempo definida, es decir, cada proceso se ejecuta durante un período de tiempo fijo. |
SJF tampoco es preventivo, pero su versión preventiva también se llama algoritmo de tiempo restante más corto primero (SRTF). | Round-Robin (RR) es de naturaleza preventiva. |
El tiempo de espera promedio para un conjunto dado de procesos es mínimo. | El tiempo de espera promedio para un conjunto dado de procesos es bastante pequeño y depende de la cantidad de tiempo. |
La verdadera dificultad con SJF es saber la duración de la siguiente solicitud o ráfaga de CPU. | Es bastante fácil implementar RR. |
Es posible que nunca se ejecute un proceso largo y que el sistema siga ejecutando los procesos cortos. | Cada proceso se ejecuta y cada usuario siente que su trabajo se está realizando ya que la CPU dedica la misma cantidad de tiempo a cada proceso. |
En el caso de SJF, se debe registrar el tiempo transcurrido, lo que genera más sobrecarga en el procesador. | En el caso de RR, si la cantidad de tiempo es muy pequeña, el cambio de contexto tiene lugar una y otra vez después de intervalos de tiempo muy cortos, lo que conduce a una sobrecarga. |