Лекция: Диаграмма состояний процесса

Необходимо различать системные управляющие процессы, представляющие ра­боту супервизора операционной системы и занимающиеся распределением и управ­лением ресурсов, от всех других процессов: системных обрабатывающих процес­сов, которые не входят в ядро операционной системы, и процессов пользователя. Для системных управляющих процессов в большинстве операционных систем ресурсы распределяются изначально и однозначно. Эти процессы управляют ре­сурсами системы, за использование которых существует конкуренция между всеми остальными процессами. Поэтому исполнение системных управляющих программ не принято называть процессами. Термин задача можно употреблять только по отношению к процессам пользователей и к системным обрабатывающим процес­сам. Однако это справедливо не для всех ОС. Например, в так называемых «мик­роядерных» (см. главу 5 «Архитектура операционных систем и интерфейсы прикладного программирования») ОС (в качестве примера можно привести ОС реального времени QNX фирмы Quantum Software systems) большинство управ­ляющих программных модулей самой ОС и даже драйверы имеют статус высо­коприоритетных процессов, для выполнения которых необходимо выделить со­ответствующие ресурсы. Аналогично и в UNIX-системах выполнение системных программных модулей тоже имеет статус системных процессов, которые получа­ют ресурсы для своего исполнения.

Если обобщать и рассматривать не только обычные ОС общего назначения, но и, например, ОС реального времени, то можно сказать, что процесс может нахо­диться в активном и пассивном (не активном) состоянии. В активном состоянии

1 Например, дисциплина «последний пришедший обслуживается первым» определяет об­служивание в порядке, обратном очередности поступления соответствующих запросов.


процесс может участвовать в конкуренции за использование ресурсов вычисли­тельной системы, а в пассивном — он только известен системе, но в конкуренции не участвует (хотя его существование в системе и сопряжено с предоставлением ему оперативной и/или внешней памяти). В свою очередь, активный процесс мо­жет быть в одном из следующих состояний:

Q выполнения — все затребованные процессом ресурсы выделены. В этом состоя­нии в каждый момент времени может находиться только один процесс, если речь идет об однопроцессорной вычислительной системе;

Q готовности к выполнению — ресурсы могут быть предоставлены, тогда про­цесс перейдет в состояние выполнения;

Q блокирования или ожидания — затребованные ресурсы не могут быть предо­ставлены, или не завершена операция ввода/вывода.

В большинстве операционных систем последнее состояние, в свою очередь, под­разделяется на множество состояний ожидания, соответствующих определенно­му виду ресурса, из-за отсутствия которого процесс переходит в заблокирован­ное состояние.

В обычных ОС, как правило, процесс появляется при запуске какой-нибудь про­граммы. ОС организует (порождает или выделяет) для нового процесса соответ­ствующий дескриптор (см. об этом дальше) процесса, и процесс (задача) начи­нает развиваться (выполняться). Поэтому пассивного состояния не существует. В ОС реального времени (ОСРВ) ситуация иная. Обычно при проектировании системы реального времени уже заранее бывает известен состав программ (за­дач), которые должны будут выполняться. Известны и многие их параметры, которые необходимо учитывать при распределении ресурсов (например, объем памяти, приоритет, средняя длительность выполнения, открываемые файлы, используемые устройства и т. п.). Поэтому для них заранее заводят дескрипторы задач с тем, чтобы впоследствии не тратить драгоценное время на организацию дескриптора и поиск для него необходимых ресурсов. Таким образом, в ОСРВ' многие процессы (задачи) могут находиться в состоянии бездействия, что мы и отобразили на рис. 1.3, отделив это состояние от остальных состояний пунк­тиром.

За время своего существования процесс может неоднократно совершать перехо­ды из одного состояния в другое. Это обусловлено обращениями к операцион­ной системе с запросами ресурсов и выполнения системных функций, которые предоставляет операционная система, взаимодействием с другими процессами, появлением сигналов прерывания от таймера, каналов и устройств ввода/выво­да, а также других устройств. Возможные переходы процесса из одного состоя­ния в другое отображены в виде графа состояний на рис. 1.3. Рассмотрим эти пе­реходы из одного состояния в другое более подробно.

Процесс из состояния бездействия может перейти в состояние готовности в сле­дующих случаях:

Q по команде оператора (пользователя). Имеет место в тех диалоговых опера­ционных системах, где программа может иметь статус задачи (и при этом яв­ляться пассивной), а не просто быть исполняемым файлом и только на время


исполнения получать статус задачи (как это происходит в большинстве со­временных ОС для ПК);

Q при выборе из очереди планировщиком (характерно для операционных сис­тем, работающих в пакетном режиме);

Q по вызову из другой задачи (посредством обращения к супервизору один процесс может создать, инициировать, приостановить, остановить, уничто­жить другой процесс);

Q по прерыванию от внешнего инициативного1 устройства (сигнал о свершении некоторого события может запускать соответствующую задачу);

Q при наступлении запланированного времени запуска программы.

Последние два способа запуска задачи, при которых процесс из состояния без­действия переходит в состояние готовности, характерны для операционных сис­тем реального времени.

Процесс, который может исполняться, как только ему будет предоставлен про­цессор, а для диск-резидентных задач в некоторых системах — и оперативная па­мять, находится в состоянии готовности. Считается, что такому процессу уже выделены все необходимые ресурсы за исключением процессора.

Из состояния выполнения процесс может выйти по одной из следующих при­чин:

Q процесс завершается, при этом он посредством обращения к супервизору пе­редает управление операционной системе и сообщает о своем завершении. В результате этих действий супервизор либо переводит его в список бездей­ствующих процессов (процесс переходит в пассивное состояние), либо уничто­жает (уничтожается, естественно, не сама программа, а именно задача, которая соответствовала исполнению некоторой программы). В состояние бездействия процесс может быть переведен принудительно: по команде оператора (дейст-

1 Устройство называется ^инициативным*, если по сигналу запроса на прерывание от него должна запускаться некоторая задача.


вне этой и других команд оператора реализуется системным процессом, кото­рый «транслирует» команду в запрос к супервизору с требованием перевести указанный процесс в состояние бездействия), или путем обращения к супер­визору операционной системы из другой задачи с требованием остановить данный процесс;

Q процесс переводится супервизором операционной системы в состояние готов­ности к исполнению в связи с появлением более приоритетной задачи или в связи с окончанием выделенного ему кванта времени;

Q процесс блокируется (переводится в состояние ожидания) либо вследствие запроса операции ввода/вывода (которая должна быть выполнена прежде, чем он сможет продолжить исполнение), либо в силу невозможности предо­ставить ему ресурс, запрошенный в настоящий момент (причиной перевода в состояние ожидания может быть и отсутствие сегмента или страницы в слу­чае организации механизмов виртуальной памяти, см. раздел «Сегментная, страничная и сегментно-страничная организация памяти» в главе 2), а также по команде оператора на приостановку задачи или по требованию через су­первизор от другой задачи.

При наступлении соответствующего события (завершилась операция ввода/вы­вода, освободился затребованный ресурс, в оперативную память загружена необ­ходимая страница виртуальной памяти и т. д.) процесс деблокируется и перево­дится в состояние готовности к исполнению.

Таким образом, движущей силой, меняющей состояния процессов, являются со­бытия. Один из основных видов событий — это прерывания.

еще рефераты
Еще работы по информатике