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. 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.
Diferencia entre SJF y la programación de colas de varios niveles:
Trabajo más corto primero (SJF) | Programación de colas de varios niveles (MLQ) |
---|---|
SJF tampoco es preventivo, pero su versión preventiva también se llama algoritmo de tiempo restante más corto primero (SRTF). | MLQ puede ser no preventivo o preventivo dependiendo de las condiciones. |
Ejecuta los procesos en orden descendente de su tiempo de ráfaga, es decir, el trabajo más corto se ejecuta primero. | Los procesos se ejecutan según la prioridad de ese nivel particular de cola al que pertenece el proceso. La selección adicional de procesos se basa en el tipo de algoritmo utilizado en esa cola en particular. |
La sobrecarga en SJF se debe al hecho de que se debe registrar el tiempo transcurrido. | MLQ tiene cierta sobrecarga de CPU, ya que necesita cambiar entre las colas. |
El tiempo de espera promedio es mínimo en el caso de SJF. | El tiempo de espera promedio depende de los algoritmos utilizados en varios niveles de colas. |
La mayor dificultad en su implementación es que se desconoce la duración de la próxima ráfaga de CPU. | Es un algoritmo complejo y es difícil de implementar. |
Conduce a la inanición de procesos que tienen tiempos de ráfaga muy grandes. | Conduce a la inanición de los procesos en los niveles inferiores. |