Состояния процессов
Всего в операционной системе UNIX распознается девять состояний процессов, перечисленных в табл. 3.9; соответствующая диаграмма переходов состояний показана на рис. 3.14 (в ее основе — рисунок из [ВАСН86]). Этот рисунок похож на рис. 3.6; нужно только принять во внимание, что спящие состояния в системе UNIX соответствуют блокированным состояниям. Кратко перечислим основные различия между диаграммами.
• Для отражения того факта, что процесс может выполняться как в пользовательском режиме, так и в режиме ядра, в диаграмме имеется два состояния выполняющихся процессов.
• Состояния вытесненных и загруженных в память и готовых к выполнению процессов отличаются друг от друга. По сути эти два состояния почти одинаковы (на что указывает соединяющая их пунктирная линия). Различие же делается, чтобы подчеркнуть, каким именно образом процесс может быть прерван в пользу другого. Если процесс выполняется в режиме ядра (в результате вызова диспетчера, прерывания по таймеру или прерывания по команде ввода-вывода), рано или поздно наступает момент, когда ядро завершает свою работу и готово возвратить управление пользовательской программе. В это время ядро может принять решение передать управление процессу с более высоким приоритетом, чем у выполнявшегося до этого. В таком случае текущий процесс переходит в состояние вытесненного, но с точки зрения диспетчеризации эти процессы одинаковы. Процесс, прерванный в пользу другого, и находящийся в состоянии готовности к выполнению, находятся в одной очереди.
Таблица 3.9. Состояния процессов в UNIX
Выполняющийся пользовательский Выполняющийся в пользовательском режиме
Выполняющийся ядра Выполняющийся в режиме ядра
Готовый к выполнению Готов к выполнению, как только ядро решит
передать ему управление
Спящий, загруженный Не может выполняться, пока не произойдет
некоторое событие; процесс находится в основной памяти (блокированное состояние)
Готовый к выполнению, выгруженный Процесс готов к выполнению, но прежде чем
ядро сможет спланировать его запуск, процесс свопинга должен загрузить этот процесс в основную память
Спящий, выгруженный Процесс ожидает некоторого события; он вы-
гружен из основной памяти (блокированное состояние)
Вытесненный В момент переключения процессора из режима
ядра в пользовательский режим ядро решает передать управление другому процессу
Созданный Процесс только что создан и еще не готов к
выполнению
Зомби Самого процесса больше не существует, но записи о нем остались с тем, чтобы ими мог воспользоваться родительский процесс
Такое вытеснение процесса может произойти только в момент переключения режима выполнения из режима ядра в пользовательский режим. При выполнении процесса в режиме ядра он не может быть вытеснен, поэтому операционная система UNIX не приспособлена для работы в режиме реального времени. Обсуждение требований к системам, выполняющим обработку запросов в реальном времени, можно найти в главе 10, "Многопроцессорное планирование и планирование реального времени".
В UNIX есть два процесса, которых нет ни в каких других операционных системах. Процесс 0 — это специальный процесс, который создается при загрузке системы. В сущности, он предопределен как структура данных, которая загружается вместе с системой. Этот процесс является процессом свопинга. Кроме того, процесс 0 порождает процесс 1, который называется инициализирующим процессом (init process). Этот процесс является родительским по отношению ко всем остальным. Когда в систему входит новый интерактивный пользователь, именно процесс 1 создает новый процесс для этого пользователя. Далее пользовательский процесс может создавать ветвящиеся дочерние процессы. Таким образом, каждое приложение может состоять из ряда взаимосвязанных процессов.
Описание процессов
В операционной системе UNIX процессы представлены довольно сложными структурами данных, которые предоставляют операционной системе всю необходимую для управления и диспетчеризации процессов информацию. В табл. 3.10 приведены элементы образа процесса, разделенные на три части: контекст пользовательского уровня, контекст регистров и контекст системного уровня.
Таблица 3.10. Образ процесса в UNIX
Дата добавления: 2016-06-05; просмотров: 1879;