Прерывание - это изменение естественного порядка выполнения программы, которое связано с необходимостью реакции системы на работу внешних устройств, а также на ошибки и особые ситуации, возникшие при выполнении программы. При этом вызывается специальная программа - обработчик прерываний, специфическая для каждой возникшей ситуации, после выполнения которой возобновляется работа прерванной программы.
Механизм прерывания обеспечивается соответствующими аппаратно-программными средствами компьютера.
Классификация прерываний представлена на рис. 7.1.
(рис 7.1) Классификация прерыванийЗапросы аппаратных прерываний возникают асинхронно по отношению к работе микропроцессора и связаны с работой внешних устройств.
Запрос от немаскируемых прерываний поступает на вход микропроцессора и не может быть программно заблокирован. Обычно этот вход используется для запросов прерываний от схем контроля питания или неустранимых ошибок ввода/вывода.
Для запросов маскируемых прерываний используется вход INT микропроцессора. Обработка IF в регистре флагов микропроцессора.
Программные прерывания, строго говоря, называются исключениями или особыми случаями. Они связаны с особыми ситуациями, возникающими при выполнении программы (отсутствие страницы в оперативной памяти, нарушение защиты, переполнение), то есть с теми ситуациями, которые программист предвидеть не может, либо с наличием в программе специальной команды INT n, которая используется программистом для вызова функций операционной системы либо
Программные прерывания делятся на следующие типы.
Нарушение (отказ) - особый случай, который микропроцессор может обнаружить до возникновения фактической ошибки (например, отсутствие страницы в оперативной памяти); после обработки нарушения программа выполняется с
Ловушка - особый случай, который обнаруживается после окончания выполнения команды (например, наличие в программе команды INT n или установленный флаг TF в регистре флагов ). После обработки этого прерывания выполнение программы продолжается со следующей команды.
Авария (выход из процесса) - столь серьезная ошибка, что некоторый контекст программы теряется и ее продолжение невозможно. Причину
Прерывания и особые случаи распознаются на границах команд, и программист может не заботиться о состоянии внутренних рабочих регистров и устройств конвейера.
Реагируя на запросы прерываний, микропроцессор должен идентифицировать его источник, сохранить минимальный контекст текущей программы и переключиться на специальную программу - обработчик прерывания. После обслуживания прерывания МП возвращается к прерванной программе, и она должна возобновиться так, как будто прерывания не было.
Обработка запросов прерываний состоит из:
Для того чтобы микропроцессор мог идентифицировать источник прерывания и найти обработчик, соответствующий полученному запросу, каждому запросу прерывания присвоен свой номер ( тип прерывания ).
Тип прерывания для INT n, тип содержится в самой команде. Для маскируемых аппаратных прерываний тип вводится из контроллера приоритетных прерываний по
Всего микропроцессор различает 256 типов прерываний. Таким образом, все они могут быть закодированы в 1 байте.
"Рефлекторные" действия микропроцессора по обработке
EIP и CS, определяющие точку возврата в прерванную программу, и EFLAGS. Если вызов обработчика прерывания проводится с использованием шлюза задачи, то в памяти полностью сохраняется сегмент состояния TSS прерываемой задачи;После этого выполняется программа - обработчик прерывания, соответствующая поступившему запросу. Эта программа пишется и размещается в памяти прикладным или системным программистом. Обработчик прерывания должен завершаться командой I , по которой автоматически происходит переход к продолжению выполнения прерванной программы с восстановлением ее контекста.
Для вызова обработчика прерывания микропроцессор при работе в реальном режиме использует таблицу векторов прерываний, а в защищенном режиме - таблицу дескрипторов прерываний.
Таблица векторов прерываний (рис. 7.2) располагается в самых младших адресах оперативной памяти, имеет объем 1 Кбайт и содержит 4байтные элементы ( векторы прерываний ) для 256 обработчиков прерываний. Старшие 2 байта вектора загружаются в CS, а младшие 2 байта - в регистр указателя команд IP. Обращение к элементам таблицы осуществляется по 8-разрядному коду - типу прерывания. Так как таблица всегда имеет нулевой начальный адрес и длину вектора в 4 байта, чтобы определить адрес вектора для прерывания типа i, достаточно просто умножить это значение на 4.
В защищенном режиме для вызова обработчика прерывания используется таблица дескрипторов прерываний . Элементами таблицы являются 8-байтные
(рис 7.2) Таблица векторов прерываний Обращение к аналогично обращению к глобальной таблице дескрипторов, где вместо системного регистра R используется регистр IDTR, который определяет размер и базовый адрес таблицы в памяти.
, определяется как сумма базового адреса таблицы и умноженного на 8 типа прерывания (рис. 7.3).
(рис 7.3) Порядок обращения к таблице дескрипторов прерываний Содержимое регистра IDTr не сохраняется в сегментах TSS и не изменяется при переключении задачи. Программы не могут обратиться к , так как единственный бит TI индикатора таблицы в селекторе сегмента обеспечивает выбор только между таблицами и .
Максимальный предел таблицы дескрипторов прерываний составляет 256*8 - 1 = 2047.
Можно определить предел меньшим, но это не рекомендуется. Если происходит обращение к дескриптору вне пределов , процессор переходит в режим отключения до получения сигнала по входу или сброса.
В могут храниться только дескрипторы следующих типов:
Шлюзы WC (рис. 7.4). Так как прерывание является неожиданным событием и не связано с текущей программой, говорить о
(рис 7.4) Формат шлюзов ловушки и прерывания Бит S = 0 в байте доступа определяет этот дескриптор как
Поле уровня привилегий дескриптора , как правило, устанавливается равным 3 с тем, чтобы к обработчику прерываний могли обращаться программы с любого уровня привилегий.
Бит присутствия P может быть равен как 0, так и 1.
При входе в обработчик через шлюз прерывания в регистре флагов сбрасывается бит разрешения прерываний IF. В этом случае микропроцессор блокирует все маскируемые аппаратные прерывания. Поэтому в обработчике прерываний этот бит должен быть установлен в 1 как можно раньше с тем, чтобы не блокировать работу программ, которые вызываются, например, при обработке прерываний от
При входе в обработчик через шлюз IF не меняется.
Вызов обработчика через шлюз
Вызов обработчика через шлюз задачи обычно осуществляется при обработке аппаратных прерываний, так как такая обработка не связана с текущей выполняемой задачей. При этом возможен механизм вложенных прерываний, если прерывания в задаче разрешены. Вызов обработчика прерывания через шлюз задачи осуществляется и при TSS ", когда поврежденная задача не может вызвать процедуру прерывания. Переключение задач требует примерно в 5 раз больше времени, чем вызов процедуры. Поэтому, если
Прерывание - один из наиболее дефицитных ресурсов в INT - по нему принимаются запросы, обработка которых может быть замаскирована сбросом флага IF в регистре флагов, - и вход немаскируемых прерываний . Вход фактически закреплен за запросами прерываний от схем контроля питания. Поэтому при такой архитектуре микропроцессора в INT микропроцессора запросы от многочисленных внешних устройств, входящих в состав микропроцессорной системы. В качестве такой схемы используется контроллер приоритетных прерываний (КПП).
Мы рассмотрим его функционирование на примере БИС i8259, которая, с одной стороны, имеет самостоятельное значение, а с другой стороны, фактически без изменений входит в состав современных чипсетов.
Его структура представлена на рис. 7.5.
Функции
При использовании КПП обработка запросов
(рис 7.5) Структура контроллера приоритетных прерываний IRR , который предварительно настраивается на восприятие запросов по спаду или низкому уровню сигнала, происходит установка соответствующих разрядов в "1".IMR запросы передаются в приоритетный арбитр, замаскированные блокируются.IRQ0, а самый низкий - по входу IRQ7.ISR ). Если приоритет нового запроса выше либо в данный момент обслуживаемых запросов нет, то контроллер формирует INT в микропроцессор, в противном случае обработка запроса откладывается. В регистре типа прерывания формируется тип принятого к обработке IF = 1, то по завершении текущей команды выполняет 2 цикла подтверждения прерывания, выдавая сигналы на выход INTA:IRR . В ISR устанавливается разряд, соответствующий принятому к обработке запросу, и сбрасывается разряд в IRR ;IRR ;IRET , завершающая обработчик прерываний, восстанавливает прежнее состояние микропроцессора и передает управление прерванной программе.Для расширения количества запросов прерываний, которые могут быть подключены к микропроцессору, в
(рис 7.6) Каскадное подключение контроллеров приоритетных прерываний к микропроцессору К входу INT микропроцессора подключается выход INT ведущего контроллера. Выход INT ведомого контроллера подключается к одному из входов IRQi ведущего КПП на правах других запросов прерываний, поступающих на этот контроллер. В
На рис. 7.5 было дано схематическое представление
Регистры КПП делятся на 2 группы: регистры инициализации ICW1-ICW4 и операционные регистры OCW1-OCW3.
Регистры инициализации загружаются при инициализации контроллера и в процессе работы КПП не меняются.
Регистр ICW1 - управление микросхемой:
ICWi.Регистр ICW2 - регистр типа прерывания. При инициализации в 5 его старших разрядов заносится некоторая константа. В процессе обработки запросов прерываний в 3 младшие разряда этого регистра заносится номер входа IRQi, по которому принят запрос, подлежащий обработке (рис. 7.7):
(рис 7.7) Формат регистра типа прерывания ICW2В ICW2 ведущего контроллера при инициализации заносится константа 00001b, а в ведомый - константа 01110b. Поэтому типы всех прерываний, запросы от которых поступают через ведущий КПП, лежат в диапазоне 00001000b-00001111b (08h-0Fh), ачерез ведомый - в диапазоне 01110000b-01110111b (70h-77h). Распределение входов прерываний в стандартной конфигурации
| Контроллер | Тип | Назначение | Начальное состояние маски | |
|---|---|---|---|---|
| Ведущий контроллер | 0 | 8 | Таймер | 0 |
| 1 | 9 | Клавиатура | 0 | |
| 2 | A | Ведомый КПП | 0 | |
| 3 | B | 1 | ||
| 4 | C | 1 | ||
| 5 | D | Последовательный принтер ( |
1 | |
| 6 | E | НГМД | 0 | |
| 7 | F | Параллельный принтер ( |
1 | |
| Ведомый контроллер | 8 | 70 | Часы реального времени | 1 |
| 9 | 71 | Резерв. Программно переназначен на IRQ2 | 0 | |
| 10 | 72 | Резерв | 1 | |
| 11 | 73 | Резерв | 1 | |
| 12 | 74 | Мышь | 1 | |
| 13 | 75 | Ошибка сопроцессора | 1 | |
| 14 | 76 | НЖМД | 0 | |
| 15 | 77 | Резерв | 1 |
Регистр ICW3 - регистр управления ведомым. Имеет различное назначение в ведущем и ведомом КПП. В ведущем КПП устанавливаются единицы в разрядах, соответствующих линиям с подключенными ведомыми КПП. В
Регистр ICW4 - регистр управления режимом. Определяет, является данный КПП ведущим или ведомым, тип окончания прерывания, то есть кем должен сбрасываться бит запроса в регистре обслуживания прерывания , и другие параметры работы.
Так как для КПП определено только 2 допустимых состояния (ведущий или ведомый), максимальная конфигурация INT микропроцессора до 64 запросов прерываний.
Содержимое операционных регистров изменяется в процессе работы КПП записью в них новой информации.
Регистр OCW1 ( ) - регистр маски прерывания. Код 1 в разряде i запрещает, а код 0 - разрешает обработку IRQi.
Регистр OCW2 - определяет один из трех возможных порядков изменения приоритетов запросов прерываний:
В
Так как здесь используются два каскадно включенных контроллера (см.рис. 7.6), приоритеты запросов прерываний IRQi имеют вид, представленный на рис. 7.8.
(рис 7.8) Приоритетность запросов прерываний IRQi в персональной ЭВМ Регистр OCW3 - управляет переводом контроллера в режим неприоритетного обслуживания и считыванием содержимого регистра запросов и регистра обслуживания . В режиме неприоритетного обслуживания микропроцессор получает от КПП только сигнал и и по своим алгоритмам определить, какой из имеющихся запросов прерываний принять к обслуживанию.
Краткие итоги. В лекции рассмотрена классификация прерываний, порядок обработки прерываний в реальном и защищенном режимах работы микропроцессора, структура и функционирование
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.