O(n) scheduler — это планировщик использовавшийся в ядре Linux в версиях с 2.4 по 2.6. Начиная с версии 2.6.0, он был заменен на O(1) scheduler, а начиная с 2.6.23 на CFS.

Алгоритм Данный планировщик делит время на «эпохи». В рамках одной эпохи процессы выполнялись отведенное им время. Если какой-то процесс выполнялся меньше отведенного времени, то половина отведенного времени добавлялась к времени, которое будет отведено процессу в следующую «эпоху». Планировщик рассматривает все доступные для запуска процессы и находил процесс, значение функции goodness для которого было бы наибольшим.

Оценка работы

Данный планировщик показывал себя лучше в сравнении с более примитивным предшественником, в основе которого лежала цикличная очередь. Тем не менее, при росте числа процессов, работа планировщика начинает требовать значительное количество процессорного времени. Выбор следующей задачи сопряжен с проходом всего списка процессов готовых к выполнению, а значит выполняется за О(n) по времени, где n — количество процессов, готовых к исполнению. Так-же он не подходил для систем реального времени и не мог быть масштабирован на новейшие многоядерные процессоры.

Примечания

Литература

Категория:Ядро Linux