1. Programación de colas de varios niveles (MLQ) :
Es bastante difícil tener una sola cola y programar todos los procesos. Aquí es donde se utiliza la programación de colas de varios niveles. En esto, los procesos se dividen en varias clases según la propiedad de los procesos, como el proceso del sistema, el proceso de E/S, etc. Por lo tanto, obtenemos ‘n’ número de colas para n clases de procesos. A cada cola se le asigna una prioridad y puede usar su propio algoritmo de programación, lo que facilita el uso de muchos algoritmos de programación al mismo tiempo. Generalmente, el nivel superior de la cola tiene la prioridad más alta, que disminuye a medida que avanzamos a los niveles inferiores. Si el nivel superior tiene una prioridad absoluta sobre los niveles inferiores, entonces no es preventivo; de lo contrario, si el intervalo de tiempo se divide entre varias colas, se vuelve de naturaleza preventiva.
- Ventajas:
La principal ventaja de este algoritmo es que podemos usar varios algoritmos como FCFS, SSJF, LJF, etc. al mismo tiempo en diferentes colas.
- Desventajas:
Los procesos de nivel más bajo sufren problemas de inanición.
2. 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, la CPU ejecuta el siguiente proceso, pero si tiene un tiempo de ráfaga mayor que el cuanto de tiempo, el proceso se interrumpe y el siguiente proceso se ejecuta con 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.
Diferencia entre el algoritmo de programación MLQ y Round-Robin (RR):
MLQ | Todos contra todos (RR) |
---|---|
MLQ ejecuta el proceso según la prioridad si el nivel de cola en el que reside el proceso y la ejecución posterior dependen del algoritmo utilizado en ese nivel. | 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. |
MLQ puede ser no preventivo y preventivo dependiendo de las condiciones. | Round-Robin (RR) es de naturaleza preventiva. |
El tiempo de espera promedio para un conjunto dado de procesos depende de la tupla de algoritmos utilizados en varios niveles de la cola de varios niveles. | El tiempo de espera promedio para un conjunto dado de procesos es bastante pequeño y depende de la cantidad de tiempo. |
Es bastante complejo y difícil de implementar. | Es bastante fácil implementar RR. |
Conduce a la inanición de los procesos en los niveles inferiores. | 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. |
Cambiar entre diferentes niveles provoca una 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. |