Реализация многозадачного режима
Поскольку ОС берет на себя блокировку, «усыпление» процесса, она должна обеспечить и его разблокировку, «пробуждение». Чтобы это стало возможным, система должна для каждого спящего процесса помнить, «чего он ждет», т.е. помнить условия пробуждения процесса. Система отслеживает все события, способные разблокировать какой-либо процесс (во многих случаях используя для этого аппаратные прерывания) и, когда для одного или сразу нескольких процессов наступает ожидаемое событие, переводит эти события из состояния сна в состояние готовности.
На рис. 41 показаны основные состояния процесса и переходы между ними. Этот рисунок кочует из книги в книгу, поскольку он действительно наглядно отражает самую суть работы многозадачных систем.
Рис. 41
Рассмотрим возможные переходы между состояниями процесса, показанные на рисунке стрелками.
Переход Работа а Сон представляет собой блокировку процесса, которая может произойти при вызове блокирующей системной функции.
Переход Сон а Готовность – это пробуждение процесса, оно выполняется системой при возникновении соответствующего условия.
Переход Работа а Готовность ранее не рассматривался. Он называется вытеснением процесса и выполняется системой, когда она принимает решение о смене текущего процесса.
Для обратного перехода Готовность а Работа нет общепринятого термина. Будем называть его выбором процесса для выполнения. Отметим, что этот переход почти всегда связан либо с блокировкой, либо с вытеснением прежнего текущего процесса.
Ответьте сами на вопрос: почему «почти всегда», а не «всегда»? Какие еще возможны варианты?
предыдущаяследующая