Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПЗ / posobie.doc
Скачиваний:
55
Добавлен:
07.02.2016
Размер:
419.33 Кб
Скачать

Лекция 9 Управление процессами, модели управление процессами

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

Типичные функции ядра операционной системы:

Управление процессами

• создание и завершение процессов;

• планирование и диспетчеризация процессов;

• переключение процессов;

• синхронизация и поддержка обмена информацией между процессами;

• организация управляющих блоков процессов.

Управление памятью

• выделение адресного пространства процессам;

• свопинг;

управление страницами и сегментами.

Управление вводом-выводом

• управление буферами;

• выделение процессам каналов и устройств ввода-вывода.

Функции поддержки

• обработка прерываний;

• учет использования ресурсов;

• текущий контроль системы.

Создание процессов

Операционная система может сделать это следующим образом.

1. Присвоить новому процессу уникальный идентификатор. На этом этапе в первичную таблицу процессов вносится новая запись.

2. Выделить пространство для процесса.

3. Инициализировать управляющий блок процесса.

4. Установить необходимые связи

5. Создать или расширить другие структуры данных.

Переключение процессов

Переключение процесса может произойти в любой момент. Возможные причины, перехода к операционной системе:

  • прерывание;

  • ловушка;

  • вызов супервизора.

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

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

  • прерывание таймера;

  • прерывание ввода-вывода;

  • ошибка отсутствия блока в памяти.

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

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

Переключение режимов

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

1. Сохраняет контекст текущей программы.

2. Устанавливает в счетчике команд начальный адрес программы - обработчика прерываний.

3. Переключается из пользовательского режима в режим ядра для выполнения привилегированных команд кода обработки прерывания.

После этого процессор переходит к циклу выборки и выбирает первую команду из программы обработки прерываний.

Контекст процесса должен содержать информацию, которая может быть изменена в процессе работы обработчика прерываний для возобновления выполнения прерванной программы.

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

Изменение состояния процесса

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

1. Сохранение контекста процессора, включая содержимое счетчика команд и других регистров.

2. Обновление управляющего блока выполняющегося в данное время процесса. Сюда входит изменение состояния процесса на одно из следующих: готовый, блокированный, готовый приостановленный или завершающийся.

3. Помещение управляющего блока данного процесса в соответствующую очередь (очередь готовых к выполнению процессов; процессов, блокированных событием; очередь готовых приостановленных процессов).

4. Выбор следующего процесса для выполнения.

5. Обновление управляющего блока выбранного процесса. Для этого процесса нужно установить состояние выполнения.

6. Обновление структур данных по управлению памятью.

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

Соседние файлы в папке СПЗ