Планировщик Linux

В ядре Linux 2.6 представлен полностью новый планировщик, называемый также планировщиком 0(1). Это значит, что планировщик выполняет планирование выполнения шач за константное время . Гл. 3 описывает базовые структуры планировщика, их инициализацию при создании процессов. Этот раздел описывает, как задачи выполняются на единственном процессоре. Мы будем упоминать о планировщике для многопроцессорной системы (SMP), но в общем процессы внутри всех планировщиков совпадают. Далее мы опишем, как планировщик переключает текущий выполняющийся процесс, шределяя, какой контекст будет вызван следующим, и затем мы коснемся других значительных изменений в ядре 2.6 - приоритетных прерываний обслуживания.
На наивысшем уровне планировщик просто группирует функции, работающие с этими структурами данных. Почти весь код, связанный с планировщиком, можно найти kernel/sched.c и include/linux/sched.h. Важно не забывать, что, как мы упоминали ранее, в коде планировщика термины задача и процесс обозначают одно и то же. Задача или процесс в планировщике представляют собой набор структур данных и поток управления. Код планировщика также связан с task_struct - структурой данных, используемой Linux для слежения за процессами2.