Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АК_лекции.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.74 Mб
Скачать

5.3.4 Многоразовые операции

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

Кратко опишем действия, которые производит операционная система при выполнении многоразовых операций над процессами.

1) Запуск процесса. Из числа процессов, находящихся в состоянии «готовность», операционная система выбирает один процесс для последующего исполнения. Для избранного процесса операционная система обеспечивает наличие в оперативной памяти информации, необходимой для его дальнейшего выполнения. Далее состояние процесса изменяется на «исполнение», восстанавливаются значения регистров для данного процесса, и управление передается команде, на которую указывает счетчик команд процесса. Все данные, необходимые для этого восстановления контекста, извлекаются из PCB процесса, над которым совершается операция.

2) Приостановка процесса. Работа процесса, находящегося в состоянии «исполнение», приостанавливается в результате какого-либо прерывания. Процессор автоматически сохраняет счетчик команд и, возможно, один или несколько регистров в стеке исполняемого процесса и передает управление по специальному адресу обработки данного прерывания. На этом деятельность hardware по обработке прерывания завершается. По указанному адресу обычно располагается одна из частей операционной системы. Она сохраняет динамическую часть системного и регистрового контекстов процесса в его PCB, переводит процесс в состояние «готовность» и приступает к обработке прерывания, то есть к выполнению определенных действий, связанных с возникшим прерыванием.

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

4) Разблокирование процесса. После возникновения в системе какого-либо события, операционной системе нужно точно определить какое именно событие произошло. Затем операционная система проверяет: находился ли некоторый процесс в состоянии «ожидание» для данного события и, если находился, переводит его в состояние «готовность», выполняя необходимые действия, связанные с наступлением события (инициализация операции ввода-вывода для очередного ожидающего процесса и т.п.).

5.3.5 Прерывание и типы прерываний

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

В компьютерах фирмы IBM возможны следующие типы прерываний:

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

б) внешние (асинхронные) прерывания. Вызываются асинхронными событиями, которые происходят вне прерываемого процесса:

- прерывания от таймера;

- прерывания от внешних устройств;

- прерывания по нарушению питания;

- прерывания с пульта оператора;

- прерывания от другого процессора или другой ЭВМ и др.

в) внутренние (синхронные) прерывания. Вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями:

- при нарушении адресации (например, неверный адрес команды или страницы виртуальной памяти);

- при попытке выполнить операцию с неправильным кодом;

- при делении на нуль;

- при переполнении или исчезновении порядка и др.

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