
Госэкзамен. Кафедра 29 / Технологии создания схемотехнических проектов и Моделирование систем / Технологии создания схемотехнических проектов / Система прерываний.Типы прерываний.Обслуживание прерывания.(4)
.docСистема прерываний. Типы прерываний. Обслуживание прерываний.
Необходимы для обработки событий, происходящих асинхронно по отношению к выполнению программы. Прерывание можно рассматривать как некоторое особое событие в системе, требующее моментальной реакции. Например, хорошо спроектированные системы повышенной надежности используют прерывание по аварии в питающей сети для выполнения процедур записи содержимого регистров и оперативной памяти на магнитный носитель, с тем чтобы после восстановления питания можно было бы продолжить работу с того же места.
Поскольку прерывания возможны самые разнообразные по самым различным причинам, каждому прерыванию присваивается номер прерывания. С каждым номером прерывания связывается то или иное событие. Система умеет разпознать какое прерывание, с каким номером произошло, и запускает соответствующую этому номеру процедуру.
По источнику и характеру возникновения прерывания можно разделить на группы (рис. 1):
Программные прерывания вызывают сами программы, поэтому они неявляются асинхронными. Для этого они используют команду INT. Программные прерывания удобно использовать для организации доступа к отдельным общим для всех программ модулям. Например, программные модули операционной системы доступны прикладным программам именно через прерывания, и нет необходимости при вызове этих модулей знать их текущий адрес в памяти. Прикладные программы сами могут устанавливать свои обработчики прерываний для их последующего использования другими программами. Для этого встраиваемые обработчики прерываний должны быть резидентными в памяти.
Аппаратные прерывания вызываются физическиими устройствами и приходят асинхронно. Эти прерывания информируют систему о событиях, связанных с работой устройств, например о том, что завершилась печать символа на принтере и неплохо было бы выдать следующий символ, или о том, что требуемый сектор диска уже прочитан, его содержание доступно программе.
Использование прерываний при работе с медленными внешними устройствами позволяет совместить ввод/вывод с обработкой данных в центральном процессоре и в результате повышает общую производительность системы.
Внешние аппаратные прерывания вызваны сигналами, внешними по отношению к цетрральному процессору, и подаются на его входы INT и NMI.
Прерывания по входу INT относятся к аппаратным маскируемым прерываниям, поскольку могут быть разрешены или запрещены флагом IF регистра флагов. Номер вектора прерываний маскируемых прерываний передается в процессор по его восьми младшим разрядам шины
данных.
Вход немаскируемого прерывания NMI обычно используется для сообщений о "катастрофических" событий (отключении питания, обнаружении ошибок памяти и т.д.). Номер этого прерывания равен 2.
Внутренние (логические) прерывания формируются самим процессором, когда он встречается с некоторыми особыми событиями вроде деления на 0.
Когда контроллер принял прерывание поцессора, то он выявляет, разрешено ли прерывание от данного устройства. В регистре маски 1 – прерывание разрешено, 0 – запрещено. (регистр маски делает программист) Т.е. прерывание может возникунть, но может не обработаться.
Это первый аппартный уровень, на кот. работает программист.
Вектора прерываний – все аппаратные прерывания имеют некое соответствие тому каналу, по которому пришло прерывание и ячейке ОП (вектор прерываний), кот. находится в 1 килобайте ОП. В них пишется адрес начала программы обработки прерываний. ОС при загрузке загружает драйверы (вектора прерываний) в ОП.
Когда происходит прерывание в процессоре, контроллер сообщает процессору о возникновении прерывания, процессор выдает адрес прерывания. При этом происходят следующие операции:
-
завершают выполнение текущие программы;
-
сохраняются значения регистров, необходимые для восстановления информации, и идет процесс записи в стек;
-
ввод адреса вектора, в кот. записан адрес выполнения программы прерывания;
-
выполнение программы обработки прерывания;
-
восстановление ресурсов из стека;
-
продолжение обработки прерванной программы.
Таки образом для прерывания необходимо время: Ta+Tп, т.е. аппаратная и программная части.