El programador O(n) [1] es el programador utilizado en el kernel de Linux desde las versiones 2.4 a 2.6. Desde la versión 2.6.0 ha sido reemplazado por O(1) Scheduler y desde la 2.6.23 por CFS.
Este planificador divide el tiempo en "épocas". Dentro de la misma época, los procesos se ejecutaban por el tiempo que les correspondía. Si algún proceso se ejecutaba menos del tiempo asignado, entonces la mitad del tiempo asignado se agregaba al tiempo que se le asignará al proceso en la siguiente "época". El programador considera todos los procesos disponibles para el lanzamiento y encuentra el proceso para el cual el valor de la función de bondad sería mayor.
Este planificador funcionó mejor que su predecesor más primitivo, que se basaba en una cola cíclica.
Con un aumento en la cantidad de procesos, el trabajo del programador comienza a requerir una cantidad significativa de tiempo de procesador. La elección de la siguiente tarea está asociada al paso de toda la lista de procesos listos para ejecución, lo que significa que toma O (n) tiempo, donde n es el número de procesos listos para ejecución. Además, no era adecuado para sistemas en tiempo real y no se podía escalar a la última[ ¿cuándo? ] procesadores multinúcleo.
núcleo de linux | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Organización |
| ||||||||||||||||||||||||||
Técnico |
| ||||||||||||||||||||||||||
Adopción |
| ||||||||||||||||||||||||||
|