Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 1-8 / ОС_03.doc
Скачиваний:
141
Добавлен:
04.04.2013
Размер:
148.99 Кб
Скачать

3.2 Диаграмма состояний процесса

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

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

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

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

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

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

ПРИМЕЧАНИЕ. В ОС общего назначения пассивного состояния процесса не существует (на рис. 3.2 состояние бездействия отделено от остальных состояний пунктиром). В ОС реального времени (ОСРВ) ситуация иная.

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

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

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

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

Рис. 3.3 Подготовка процесса к выполнению

Пояснение к рисунку: Из списка заблокированных процессов процессы выбираются в порядке освобождения необходимых им ресурсов. В этом же порядке они становятся в очередь готовых процессов. (Следующим в список готовых процессов перейдет процесс Р9). Из списка готовых процессов процессы выбираются по очереди один за другим. (На выполнение процессы пойдут в следующем порядке: Р1, Р8, Р2, Р3, Р11, Р12, Р9).

Когда в систему поступает некоторое задание, она создает соответствующий процесс, который затем устанавливается в конец списка готовых процессов. Этот процесс постепенно продвигается к головной части списка — по мере завершения выполнения предыдущих процессов. Когда процесс оказывается первым в списке готовых и когда освобождается центральный процессор, этому процессу выделяется ЦП и говорят, что происходит смена состояния процесса — он переходит из состояния готовности в состояние выполнения. Предоставление центрального процессора первому процессу списка готовых процессов называется запуском. Подобную смену состояния мы обозначаем следующим образом:

запуск(имяпроцесса): готов  выполняется

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

истечение кванта (имяпроцесса): выполняется  готов и

запуск (имяпроцесса): готов  выполняется

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

блокирование(имяпроцесса): выполняется  блокирован

Таким образом, из состояния выполнения процесс может выйти по одной из следующих причин:

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

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

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

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

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

пробуждение(имяпроцесса): блокирован  готов

Таким образом, мы определили четыре возможные смены состояния процесса:

запуск(имяпроцесса): готов  выполняется

истечениекванта(имяпроцесса): выполняется  готов

блокирование(имяпроцесса): выполняется  блокирован

пробуждение(имяпроцесса): блокирован  готов

Отметим, что единственная смена состояния, инициируемая самим процессом пользователя, — это блокирование, остальные три смены состояния инициируются объектами, внешними по отношению к данному процессу.

Соседние файлы в папке Лекции 1-8