Алгоритм
Сразу после переключения контекста ядро запускает алгоритм планирования выполнения процессов (), выбирая на выполнение процесс с наивысшим приоритетом среди процессов, находящихся в состояниях "резервирования" и "готовности к выполнению, будучи загруженным в память". Рассматривать процессы, не загруженные в память, не имеет смысла, поскольку не будучи загружен, процесс не может выполняться. Если наивысший приоритет имеют сразу несколько процессов, ядро, используя принцип кольцевого списка (карусели), выбирает среди них тот процесс, который находится в состоянии "готовности к выполнению" дольше остальных. Если ни один из процессов не может быть выбран для выполнения, ЦП простаивает до момента получения следующего прерывания, которое произойдет не позже чем через один таймерный тик; после обработки этого прерывания ядро снова запустит алгоритм планирования.
алгоритм schedule_process входная информация: отсутствует выходная информация: отсутствует { выполнять пока (для запуска не будет выбран один из про- цессов) { для (каждого процесса в очереди готовых к выполнению) выбрать процесс с наивысшим приоритетом из загру- женных в память; если (ни один из процессов не может быть избран для выполнения) приостановить машину; /* машина выходит из состояния простоя по преры- /* ванию */ } удалить выбранный процесс из очереди готовых к выполне- нию; переключиться на контекст выбранного процесса, возобно- вить его выполнение; } |
Рисунок 8.1. Алгоритм планирования выполнения процессов