El profesor de sistema operativo nos pidió que utilizáramos el conocimiento más simple del lenguaje C para implementar el algoritmo de programación de colas de comentarios de varios niveles en el sistema operativo. ¡Por favor ayuda, gracias! Algoritmo de programación de cola de retroalimentación multinivel El algoritmo de programación de cola de retroalimentación multinivel es un algoritmo de programación del procesador de CPU adoptado por el sistema operativo UNIX. El algoritmo de programación de colas de retroalimentación de varios niveles puede permitir responder a trabajos de alta prioridad y completar rápidamente trabajos (procesos) cortos. (Compare las deficiencias de FCFS con los algoritmos de programación de tasa de respuesta de alta prioridad). El algoritmo de programación de colas de retroalimentación de varios niveles (supuesto nivel N) es el siguiente: 1. Hay N colas (Q1, Q2 ... QN), cada una de las cuales tiene una prioridad diferente para el procesador, es decir, cada cola se encuentra en Los trabajos (procesos) tienen diferentes prioridades. En términos generales, la prioridad es Prioridad (Q1) gt; Prioridad (Q2) gt; Por lo tanto, cualquier trabajo (proceso) ubicado en Q1 tiene una prioridad más alta en relación con la CPU que cualquier trabajo (proceso) ubicado en Q2 (es decir, los trabajos en Q1 deben ser programados por el procesador antes que los trabajos en Q2), la prioridad de otros colas y demás. 2.2 Para una cola específica, el método de rotación del intervalo de tiempo se sigue internamente. En otras palabras, hay N trabajos en la cola Q2 y su tiempo de ejecución está determinado por el intervalo de tiempo establecido por la cola Q2 (para facilitar la comprensión, también podemos suponer que la prioridad de los trabajos en una determinada cola está programada de acuerdo con FCFS ). 3. ¿Son iguales los intervalos de tiempo de cada cola? No, ésta es la sutileza del diseño de algoritmos. El intervalo de tiempo de cada cola disminuye a medida que aumenta la prioridad. Es decir, cuanto mayor es la prioridad de la cola, más corto es el intervalo de tiempo. Al mismo tiempo, el intervalo de tiempo de la última cola QN (la cola de mayor prioridad) es generalmente grande (no es necesario considerar esto) para facilitar la finalización de esos trabajos muy grandes. Descripción del algoritmo de programación de la cola de retroalimentación de varios niveles: 1. Cuando un proceso está esperando en la cola para ser programado, primero ingresa al Q1 con la mayor prioridad para esperar. 2. Programe primero el proceso con mayor prioridad en la cola. Si no hay ningún proceso programado en la cola de alta prioridad, el proceso se programa en la cola de segunda prioridad. Por ejemplo, entre las tres colas Q1, Q2 y Q3, Q2 solo se puede programar si no hay ningún proceso en espera en Q1. De manera similar, Q3 se puede programar solo si tanto Q1 como Q2 están vacíos. cola, prográmelos de acuerdo con el método de rotación del intervalo de tiempo. Por ejemplo, si el intervalo de tiempo de la cola Q1 es N, entonces si el trabajo en Q1 no se puede completar después de N intervalos de tiempo, ingresará a la cola Q2 y esperará. Si el trabajo no se puede completar después de que se use el intervalo de tiempo Q2. hacia arriba, continuará con el siguiente paso un nivel de cola hasta que se complete. 4. Si el proceso en la cola de menor prioridad se está ejecutando y hay una nueva llegada, luego de ejecutar este intervalo de tiempo, la CPU se asignará a la nueva llegada inmediatamente (preventiva). Veamos cómo funciona el algoritmo: supongamos que hay tres colas de retroalimentación Q1, Q2, Q3 en el sistema con intervalos de tiempo 2, 4 y 8 respectivamente. Ahora hay tres trabajos J1, J2 y J3 que llegan en los momentos 0, 1 y 3 respectivamente. Requieren 3, 2 y 1 intervalos de tiempo de CPU respectivamente. 1. J1 llega al tiempo 0. Entonces ingresa a la cola 1 y se ejecuta durante 1 intervalo de tiempo. El intervalo de tiempo aún no ha llegado y J2 llega en este momento. 2. Llega la hora 1 J2. Dado que el intervalo de tiempo todavía está bajo el control de J1, espera. J1 ha completado su límite de 2 intervalos de tiempo en el primer trimestre después de ejecutarse durante 1 intervalo de tiempo, por lo que J1 se coloca en el segundo trimestre esperando la programación. El procesador ahora está asignado a J2 3. Hora 2, J1 ingresa a Q2 para esperar la programación, y J2 obtiene la CPU y comienza a ejecutarse. 4. Llega el momento 3 J3 Debido a que el intervalo de tiempo de J2 aún no ha llegado, J3 está esperando la programación en Q1 y J1 también está esperando la programación en Q2.
5. Se completa el procesamiento J2 en el momento 4, porque J3 y J1 están esperando la programación, pero la prioridad de J3 en la cola es mayor que la prioridad de J1 en la cola, por lo que J3 está programado y J1 continúa esperando en el Q2. 6. Tiempo 5 J3 Después de 1 intervalo de tiempo, se completa. 7. Tiempo 6 Dado que Q1 ya está inactivo, comienza a programar el trabajo en Q2 y luego J1 hace que el procesador comience a ejecutarse. 8. Hora 7 J1 Después de otro intervalo de tiempo, el trabajo se completa. En este punto finaliza todo el proceso de programación.