Programación de cola de retroalimentación multinivel (MLFQ) Programación de CPU

Programación de cola de retroalimentación multinivel (MLFQ) La programación de CPU es como la programación de cola multinivel (MLQ), pero en este proceso puede moverse entre las colas. Y, por lo tanto, mucho más eficiente que la programación de colas de varios niveles. 

Características de la programación de colas de retroalimentación multinivel:

  • En un algoritmo de programación de colas multinivel , los procesos se asignan permanentemente a una cola al ingresar al sistema y no se les permite moverse entre las colas. 
  • Como los procesos se asignan permanentemente a la cola, esta configuración tiene la ventaja de una sobrecarga de programación baja, 
  • Pero por otro lado la desventaja de ser inflexible.

Ventajas de la programación de colas de comentarios multinivel:

  • Es más flexible.
  • Permite que diferentes procesos se muevan entre diferentes colas.
  • Previene la inanición al mover un proceso que espera demasiado por la cola de menor prioridad a la cola de mayor prioridad.

Desventajas de la programación de colas de comentarios de varios niveles:

  • Para la selección del mejor planificador, se requieren otros medios para seleccionar los valores.
  • Produce más gastos generales de CPU.
  • Es el algoritmo más complejo.

Sin embargo, la programación de colas de comentarios de varios niveles permite que un proceso se mueva entre colas. Multilevel Feedback QueueScheduling (MLFQ) sigue analizando el comportamiento (tiempo de ejecución) de los procesos y según el cual cambia su prioridad. 

Ahora, mire el diagrama y la explicación a continuación para entenderlo correctamente.

Ahora supongamos que las colas 1 y 2 siguen el round robin con el cuanto de tiempo 4 y 8 respectivamente y la cola 3 sigue FCFS .

La implementación de MFQS se proporciona a continuación: 

  • Cuando un proceso comienza a ejecutarse, el sistema operativo puede insertarlo en cualquiera de las tres colas anteriores, dependiendo de su prioridad . Por ejemplo, si se trata de un proceso en segundo plano, al sistema operativo no le gustaría que se asignara a las colas de prioridad más alta, como la cola 1 y 2. Lo asignará directamente a una cola de prioridad más baja, es decir, la cola 3. Digamos que nuestra cola actual El proceso para su consideración tiene una prioridad significativa, por lo que se le asignará la cola 1 .
  • En la cola 1, el proceso se ejecuta durante 4 unidades y si se completa en estas 4 unidades o proporciona CPU para la operación de E/S en estas 4 unidades, entonces la prioridad de este proceso no cambia y si vuelve a aparecer en la cola lista, vuelve a hacerlo. inicia su ejecución en la Cola 1.
  • Si un proceso en la cola 1 no se completa en 4 unidades, su prioridad se reduce y se cambia a la cola 2.
  • Los puntos 2 y 3 anteriores también son válidos para los procesos de la cola 2, pero la cantidad de tiempo es de 8 unidades. En un caso general, si un proceso no se completa en un cuanto de tiempo, se cambia a la cola de menor prioridad.
  • En la última cola, los procesos se programan de manera FCFS.
  • Un proceso en una cola de menor prioridad solo puede ejecutarse cuando las colas de mayor prioridad están vacías.
  • Un proceso que se ejecuta en la cola de menor prioridad es interrumpido por un proceso que llega a la cola de mayor prioridad.

Bueno, la implementación anterior puede diferir, por ejemplo, la última cola también puede seguir la programación por turnos. 

Problemas en la implementación anterior: un proceso en la cola de menor prioridad puede sufrir inanición debido a que algunos procesos cortos consumen todo el tiempo de la CPU. 

Solución: una solución simple puede ser aumentar la prioridad de todos los procesos después de intervalos regulares y colocarlos en la cola de mayor prioridad. 

¿Cuál es la necesidad de una programación tan compleja? 

  • En primer lugar, es más flexible que la programación de colas multinivel.
  • Para optimizar el tiempo de respuesta, se necesitan algoritmos como SJF, que requieren el tiempo de ejecución de los procesos para programarlos. Pero el tiempo de ejecución del proceso no se conoce de antemano. MFQS ejecuta un proceso durante un tiempo y luego puede cambiar su prioridad (si es un proceso largo). Por lo tanto, aprende del comportamiento pasado del proceso y luego predice su comportamiento futuro. De esta manera, intenta ejecutar primero un proceso más corto, optimizando así el tiempo de respuesta.
  • MFQS también reduce el tiempo de respuesta.

Ejemplo:  considere un sistema que tiene un proceso vinculado a la CPU, que requiere un tiempo de ráfaga de 40 segundos. Se utiliza el algoritmo de programación de la cola de realimentación multinivel y el cuanto de tiempo de la cola es de ‘2’ segundos y en cada nivel se incrementa en ‘5’ segundos. Entonces, ¿cuántas veces se interrumpirá el proceso y en qué cola terminará la ejecución? 

Solución:

  • El proceso P necesita 40 segundos para su ejecución total. 
  • En la cola 1 se ejecuta durante 2 segundos y luego se interrumpe y se cambia a la cola 2. 
  • En la cola 2 se ejecuta durante 7 segundos y luego se interrumpe y se cambia a la cola 3. 
  • En la cola 3 se ejecuta durante 12 segundos y luego se interrumpe y se cambia a la cola 4. 
  • En la cola 4 se ejecuta durante 17 segundos y luego se interrumpe y se cambia a la cola 5. 
  • En la cola 5 se ejecuta durante 2 segundos y luego se completa. 
  • Por lo tanto, el proceso se interrumpe 4 veces y se completa en la cola 5. 

Este artículo es una contribución de Ashish Sharma . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *