Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ по Delphi Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog
8.1.1 Алгоритм
Сразу после переключения контекста ядро запускает алгоритм планирования выполнения процессов (Рисунок 8.1), выбирая на выполнение процесс с наивысшим приоритетом среди процессов, находящихся в состояниях "резервирования" и "готовности к выполнению, будучи загруженным в память". Рассматривать процессы, не загруженные в память, не имеет смысла, поскольку не будучи загружен, процесс не может выполняться. Если наивысший приоритет имеют сразу несколько процессов, ядро, используя принцип кольцевого списка (карусели), выбирает среди них тот процесс, который находится в состоянии "готовности к выполнению" дольше остальных. Если ни один из процессов не может быть выбран для выполнения, ЦП простаивает до момента получения следующего прерывания, которое произойдет не позже чем через один таймерный тик; после обработки этого прерывания ядро снова запустит алгоритм планирования.
алгоритм schedule_process
входная информация: отсутствует
выходная информация: отсутствует
{
выполнять пока (для запуска не будет выбран один из процессов) {
for (каждого процесса в очереди готовых к выполнению)
выбрать процесс с наивысшим приоритетом из загруженных в память;
if (ни один из процессов не может быть избран для выполнения)
приостановить машину;
/* машина выходит из состояния простоя по прерыванию */
}
удалить выбранный процесс из очереди готовых к выполнению;
переключиться на контекст выбранного процесса, возобновить его выполнение;
}
Рисунок 8.1. Алгоритм планирования выполнения процессов