En las computadoras modernas, muchos procesos se ejecutan a la vez. Procesos activos se colocan en una matriz denominada una cola de ejecución , o cola de ejecución . La cola de ejecución puede contener valores de prioridad para cada proceso, que el programador utilizará para determinar qué proceso ejecutar a continuación. Para garantizar que cada programa tenga una parte justa de recursos, cada uno se ejecuta durante un período de tiempo (cuántico) antes de pausarlo y volver a colocarlo en la cola de ejecución. Cuando un programa se detiene para dejar que se ejecute otro, se permite que se ejecute el programa con la prioridad más alta en la cola de ejecución.
Los procesos también se eliminan de la cola de ejecución cuando solicitan dormir , están esperando a que un recurso esté disponible o se hayan terminado.
En el sistema operativo Linux (antes del kernel 2.6.23), a cada CPU del sistema se le asigna una cola de ejecución, que mantiene tanto una matriz de procesos activa como expirada. Cada matriz contiene 140 (uno para cada nivel de prioridad) punteros a listas doblemente enlazadas , que a su vez hacen referencia a todos los procesos con la prioridad dada. El planificador selecciona el siguiente proceso de la matriz activa con mayor prioridad. Cuando el cuanto de un proceso expira, se coloca en la matriz expirada con cierta prioridad. Cuando la matriz activa no contiene más procesos, el planificador intercambia las matrices activas y caducadas, de ahí el nombre planificador O (1).
En UNIX o Linux , el comando sar se usa para verificar la cola de ejecución.
El comando vmstat UNIX o Linux también se puede utilizar para determinar la cantidad de procesos que están en cola para ejecutarse o esperando para ejecutarse. Estos aparecen en la columna 'r'.
Hay dos modelos de colas de ejecución: uno que asigna una cola de ejecución a cada procesador físico y el otro tiene solo una cola de ejecución en el sistema.
Ver también
- Completely Fair Scheduler , el algoritmo de programación utilizado por Linux desde el kernel 2.6.23