Puede suceder que los procesos en la cola de procesos listos se puedan dividir en diferentes clases donde cada clase tiene sus propias necesidades de programación. Por ejemplo, una división común es un proceso en primer plano (interactivo) y un proceso en segundo plano (por lotes) . Estas dos clases tienen diferentes necesidades de programación. Para este tipo de situación se utiliza la programación de colas multinivel .
Ahora, veamos cómo funciona.
Ventajas de la programación de CPU de cola multinivel:
- Los procesos se asignan permanentemente a la cola, por lo que tiene la ventaja de una sobrecarga de programación baja.
Desventajas de la programación de CPU de cola multinivel:
- Algunos procesos pueden quedarse sin CPU si algunas colas de mayor prioridad nunca se vacían.
- Es de naturaleza inflexible.
Ready Queue se divide en colas separadas para cada clase de procesos. Por ejemplo, tomemos tres tipos diferentes de procesos Procesos de sistema, procesos interactivos y procesos por lotes. Los tres procesos tienen su propia cola. Ahora, mira la siguiente figura.
La descripción de los procesos en el diagrama anterior es la siguiente:
- Procesos del sistema: la CPU en sí tiene su propio proceso para ejecutar, que generalmente se denomina Proceso del sistema.
- Procesos interactivos: un proceso interactivo es un tipo de proceso en el que debe haber el mismo tipo de interacción.
- Procesos por lotes: el procesamiento por lotes es generalmente una técnica en el sistema operativo que recopila los programas y los datos en forma de lote antes de que comience el procesamiento .
Los tres tipos diferentes de procesos tienen su propia cola. Cada cola tiene su propio algoritmo de programación. Por ejemplo, la cola 1 y la cola 2 usan Round Robin , mientras que la cola 3 puede usar FCFS para programar sus procesos.
Programación entre las colas: ¿Qué sucederá si todas las colas tienen algunos procesos? ¿Qué proceso debería obtener la CPU? Para determinar esto es necesario Scheduling entre las colas. Hay dos formas de hacerlo:
- Método de programación preventiva de prioridad fija: cada cola tiene prioridad absoluta sobre la cola de menor prioridad. Consideremos seguir el orden de prioridad cola 1 > cola 2 > cola 3. De acuerdo con este algoritmo, ningún proceso en la cola por lotes (cola 3) puede ejecutarse a menos que las colas 1 y 2 estén vacías. Si se está ejecutando algún proceso por lotes (cola 3) y cualquier sistema (cola 1) o proceso interactivo (cola 2) ingresó a la cola de listos, el proceso por lotes se reemplaza.
- División de tiempo : en este método, cada cola obtiene una determinada porción de tiempo de CPU y puede usarla para programar sus propios procesos. Por ejemplo, la cola 1 toma el 50 por ciento del tiempo de CPU, la cola 2 toma el 30 por ciento y la cola 3 obtiene el 20 por ciento del tiempo de CPU.
Problema de ejemplo:
considere la siguiente tabla de cuatro procesos en la programación de colas multinivel. El número de cola indica la cola del proceso.
La prioridad de la cola 1 es mayor que la de la cola 2. La cola 1 usa Round Robin (Time Quantum = 2) y la cola 2 usa FCFS.
A continuación se muestra el diagrama de Gantt del problema:
Laboral:
- Al comienzo, ambas colas tienen un proceso, por lo que el proceso en la cola 1 (P1, P2) se ejecuta primero (debido a su mayor prioridad) en forma rotativa y se completa después de 7 unidades.
- Luego, el proceso en la cola 2 (P3) comienza a ejecutarse (ya que no hay ningún proceso en la cola 1), pero mientras se ejecuta, P4 entra en la cola 1 e interrumpe a P3 y comienza a ejecutarse durante 5 segundos y
- Después de su finalización, P3 toma la CPU y completa su ejecución.
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