O(n) scheduler

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
«O(n) scheduler» (планировщик процессов) на упрощенной схеме ядра Linux.

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

Алгоритм[править | править код]

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

Преимущества[править | править код]

Данный планировщик показывал себя лучше в сравнении с более примитивным предшественником, в основе которого лежала цикличная очередь.

Недостатки[править | править код]

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

Примечания[править | править код]

  1. A short history of Linux schedulers at ibm.com. Дата обращения: 1 июня 2022. Архивировано 18 марта 2022 года.