Скачиваний:
31
Добавлен:
10.05.2014
Размер:
67.07 Кб
Скачать

Система прерываний. Типы прерываний. Обслуживание прерываний.

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

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

По источнику и характеру возникновения прерывания можно разделить на группы (рис. 1):

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

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

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

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

Прерывания по входу INT относятся к аппаратным маскируемым прерываниям, поскольку могут быть разрешены или запрещены флагом IF регистра флагов. Номер вектора прерываний маскируемых прерываний передается в процессор по его восьми младшим разрядам шины

данных.

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

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

Когда контроллер принял прерывание поцессора, то он выявляет, разрешено ли прерывание от данного устройства. В регистре маски 1 – прерывание разрешено, 0 – запрещено. (регистр маски делает программист) Т.е. прерывание может возникунть, но может не обработаться.

Это первый аппартный уровень, на кот. работает программист.

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

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

  1. завершают выполнение текущие программы;

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

  3. ввод адреса вектора, в кот. записан адрес выполнения программы прерывания;

  4. выполнение программы обработки прерывания;

  5. восстановление ресурсов из стека;

  6. продолжение обработки прерванной программы.

Таки образом для прерывания необходимо время: Ta+Tп, т.е. аппаратная и программная части.