O(n) scheduler (O(n) scheduler)
Эту статью предлагается удалить. |
O(n) scheduler[1] — это планировщик использовавшийся в ядре Linux в версиях с 2.4 по 2.6. Начиная с версии 2.6.0, он был заменен на O(1) scheduler, а начиная с 2.6.23 на CFS.
Алгоритм
[править | править код]Данный планировщик делит время на «эпохи». В рамках одной эпохи процессы выполнялись отведенное им время. Если какой-то процесс выполнялся меньше отведенного времени, то половина отведенного времени добавлялась к времени, которое будет отведено процессу в следующую «эпоху». Планировщик рассматривает все доступные для запуска процессы и находил процесс, значение функции goodness для которого было бы наибольшим.
Преимущества
[править | править код]Данный планировщик показывал себя лучше в сравнении с более примитивным предшественником, в основе которого лежала цикличная очередь.
Недостатки
[править | править код]При росте числа процессов, работа планировщика начинает требовать значительное количество процессорного времени. Выбор следующей задачи сопряжен с проходом всего списка процессов готовых к выполнению, а значит выполняется за О(n) по времени, где n — количество процессов, готовых к исполнению. Так-же он не подходил для систем реального времени и не мог быть масштабирован на новейшие[когда?] многоядерные процессоры.
Примечания
[править | править код]- ↑ A short history of Linux schedulers at ibm.com . Дата обращения: 1 июня 2022. Архивировано 18 марта 2022 года.