Механизм Причина Использует
Прерывание Внешняя по отношению к - Отклик на внешнее асинхронное
выполнению текущей команды событие
Ловушка Связана с выполнением текущей Обработку ошибки или исключительной
команды ситуации
Вызов
супервизора Запрос приложения Вызов функции операционной
системы
Во-первых, рассмотрим системные прерывания. Фактически имеются системные прерывания двух видов. Первый вид — обычные прерывания, а второй — ловушки (trap). Прерывания первого вида происходят из-за событий определенного типа, не связанных с выполняющимся процессом и являющихся внешними по отношению к нему (таким событием может быть, например, завершение операции ввода-вывода). Ловушки связаны с ошибкой или исключительной ситуацией, возникшей в результате выполнения текущего процесса. В качестве примера можно привести попытку получения незаконного доступа к файлу. При обычном прерывании управление передается обработчику прерываний, который осуществляет некоторые подготовительные действия, а затем — функции операционной системы, отвечающей за прерывания данного вида. Приведем конкретные примеры прерываний.
• Прерывание таймера. Операционная система определяет, что текущий процесс выполняется в течение максимально разрешенного промежутка времени. Если это так, то данный процесс нужно переключить в состояние готовности и передать управление другому процессу.
• Прерывание ввода-вывода. Операционная система определяет, что именно произошло, и если это то событие, которого ожидают один или несколько процессов, операционная система переводит все соответствующие блокированные процессы в состояние готовности (соответственно, блокированные
приостановленные процессы она переводит в состояние готовых приостановленных процессов). Затем операционная система должна принять решение: возобновить выполнение текущего процесса или передать управление готовому к выполнению процессу с более высоким приоритетом.
• Ошибка отсутствия блока в памяти. Допустим, что процессор должен обратиться к слову виртуальной памяти, которое в настоящий момент отсутствует в основной памяти. При этом операционная система должна загрузить в основную память блок (страницу или сегмент), в котором содержится адресованное слово. Сразу же после запроса на загрузку блока операционная система может передать управление другому процессу, а процесс, для продолжения выполнения которого нужно загрузить блок в основную память, переходит в блокированное состояние. После загрузки нужного блока этот процесс переходит в состояние готовности.
В случае возникновения ловушки (trap) операционная система определяет, является ли ошибка или исключительная ситуация фатальной. Если это так, то выполняющийся в данный момент процесс переходит в состояние завершающегося, а управление переходит к другому процессу. В противном случае действия операционной системы будут зависеть от характера происшедшей ошибки, а также от конструкции самой операционной системы. Может быть предпринята попытка выполнить восстановительные процедуры или просто поставить пользователя в известность о происшедшей ошибке. Операционная система при этом может как выполнить переключение процессов, так и продолжить выполнение текущего процесса.
Наконец, операционная система может быть активизирована в результате вызова супервизора (supervisor call), который исходит от выполняемой программы. Например, пусть в ходе работы пользовательского процесса нужно выполнить команду, для которой требуется операция ввода-вывода, например открытие файла. Такой вызов приведет к тому, что управление перейдет к процедуре, являющейся частью кода операционной системы. Вообще говоря, использование таких системных вызовов приводит к переходу процесса в блокированное состояние.
Дата добавления: 2016-06-05; просмотров: 1303;