Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
202110_3DB25_otvety_k_gosudarstven-HkWCt.doc
Скачиваний:
12
Добавлен:
06.09.2019
Размер:
2.85 Mб
Скачать
  1. Назначение прерываний. Виды прерываний

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

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

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

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

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

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

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

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

В зависимости от источника прерывания делятся на три вида:

внешние;

внутренние;

программные.

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

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

Внутренние прерывания могут быть вызваны при обнаружении ошибки при выполнении программы. Это похоже на то, как если бы вы при чтении какого-либо предложения встретили «РБНСС ЗМЙ ЮДЙХМ ЯСМ ЖЯК», т.е. полнейшую бессмыслицу. Аналогичная ситуация может возникнуть и в компьютере. Процессор может встретить команды, не имеющие для него никакого смысла, или данные, которые нельзя обработать. Например, нулевой делитель, ошибки защиты памяти, обращение по несуществующему адресу, попытка выполнить привилегированную инструкцию в пользовательском режиме и т.п.

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

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

Механизм прерываний

Механизм прерываний поддерживается аппаратными средствами компьютера и программными средствами ОС.

Существуют два основных способа выполнения прерывания:

векторный (vectored), когда в процессор передается номер вызываемой процедуры обработки прерывания;

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

Устройствам, которые используют векторные прерывания, назначается вектор прерываний.

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

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

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

Для некоторых аппаратных платформ могут сочетаться оба типа прерываний.

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

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

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

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

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

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