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

3.6 Обработка прерываний

В вычислительной машине прерывание — это событие, при котором меняется нормальная последовательность команд, выполняемых процессором.

Инициатором прерывания, в частности, может оказаться выполняющийся процесс — или оно может быть вызвано некоторым событием, связанным или даже не связанным с этим процессом.

3.6.1 Типы прерываний

В этом разделе мы рассмотрим схему прерываний, применяемую в крупных компьютерах фирмы IBM. Здесь предусматриваются шесть типов прерываний:

  • SVC-прерывания (программное прерывание по вызову супервизора). Инициатором этих прерываний является работающий процесс, который выполняет команду SVC. Команда SVC (supervisor call – обращение к супервизору) — это запрос программы на предоставление конкретной системной услуги, например, на выполнение операции ввода-вывода, увеличение размера выделенной памяти. Механизм SVC помогает защитить операционную систему от пользователей, которые должны запрашивать требуемую услугу при помощи команды SVC. Благодаря этому операционная система всегда знает обо всех попытках пользователя пересечь её границы и может отказаться от выполнения определенных запросов, если данный пользователь не имеет соответствующих полномочий;

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

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

  • прерывания по рестарту. Эти прерывания происходят, когда оператор нажимает кнопку рестарта или когда от другого процессора в мультипроцессорной системе поступает команда рестарта SIGP (сигнал процессору).

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

  • прерывания по контролю (ошибке) машины. Эти прерывания вызываются аппаратными ошибками.

3.6.2 Переключения контекста

Для обработки каждого из этих различных типов прерываний в составе операционной системы предусмотрены программы, называемые обработчиками прерываний (IH — Interrupt Handler). Таким образом, в системе имеется шесть обработчиков прерываний: это обработчики прерываний SVC, прерываний ввода-вывода, внешних прерываний, прерываний по рестарту, прерываний по контролю программы и прерываний по контролю машины.

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

При реализации этого способа используются слова состояния программы (PSW – Program Status Word), которые управляют порядком выполнения команд и содержат различную информацию относительно состояния процесса. Существуют три типа слов состояния программы, а именно текущее PSW, новое PSW и старое PSW.

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

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

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

Рис. 3.6 Замещение PSW при обработке прерывания

  • текущее PSW становится старым PSW для прерывания этого типа;

  • новое PSW для прерывания этого типа становится текущим PSW.

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

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

Отметим, что существует много различных интересных схем обработки прерываний, отличных от описанной выше.

22

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