Мегаобучалка Главная | О нас | Обратная связь


Приоритеты одновременно происходящих прерываний



2015-12-06 597 Обсуждений (0)
Приоритеты одновременно происходящих прерываний 0.00 из 5.00 0 оценок




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

Общие принципы.

Рестарт команд.

Приоритеты одновременно происходящих прерываний.

Механизмы передачи управления обработчикам прерываний.

Защита в процедурах прерываний.

Код ошибки.

Условия возникновения исключений.

Общие принципы.

 

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

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

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

Маскируемые прерывания вызываются переходом в высокий уровень сиг­нала на входе INTR (Interrupt Request) при установленном флаге разрешения (IF=1). В этом случае процессор сохраняет в стеке регистр флагов, сбрасы­вает флаг IFи вырабатывает два следующих друг за другом (back to back) цикла подтверждения прерывания, в которых генерируются управляющие сиг­налы INTA# (Interrupt Acknowledge). Высокий уровень сигнала INTR должен сохраняться по крайней мере до подтверждения прерывания. Первый цикл подтверждения холостой, по второму импульсу внешний контроллер прерыва­ний передает по шине номер вектора, обслуживающего данный тип аппарат­ного прерывания. Прерывание с полученным номером вектора выполняется процессором так же, как и программное. Обработка текущего прерывания может быть в свою очередь прервана немаскируемым прерыванием, а если обработчик установит флаг IF, то и другим маскируемым аппаратным прерыванием.

Немаскируемые прерывания выполняются независимо от состояния флага IFпо сигналу NMI (Non Mascable Interrupt). Высокий уровень на этом входе вы­зовет прерывание с типом (вектором) 2, которое выполняется так же, как и маскируемое. Его обработка не может прерываться под действием сигнала на входе NMI до выполнения команды IRET.

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

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

Ловушка (trap) — это исключение, которое обнаруживается и обслуживает­ся после выполнения инструкции, его вызывающей. После обслуживания этого исключения управление возвращается на инструкцию, следующую за вызвав­шей ловушку. К классу ловушек относятся и программные прерывания.

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

Обработка прерываний и исключений в защищенном режиме базируется на таблице дескрипторов прерываний (шлюзов прерываний) IDT – адрес начала и размер которой хранятся в регистре IDTR. Его формат аналогичен формату регистра GDTR (рис. 4.1).

Рис. 4.1 Формат регистра IDTR

Таблица прерываний может содержать до 256 дескрипторов. При попытке обслуживания прерывания с номером, выходящим за размер таблицы, генери­руется исключение #DF. Под исключения отданы первые 32 номера (0 ¸31).

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

Векторы маскируемых прерываний определяются аппаратно. Контроллеры внешних прерываний (например, Intel 8259, программируемый контроллер прерываний) передают вектор на шину процессора во время цикла квитирования прерывания. Использоваться могут любые векторы в диапазоне значений от 32 до 255. В реальном режиме диапазон номеров для обработки аппаратных прерываний находился: IRQ0¸IRQ7 номера прерываний 08h¸0Fh и IRQ8¸IRQ15 – 70h¸77h. В связи с тем, что, как отмечалось выше, первые 32 номера заняты под исключения, возникает необходимость перепрограммировать контроллер прерываний на другие номера. Изначальным программирование контроллера для реального режима занимается BIOS. Итого в защищенном режиме остается 208 номеров под программные прерывания. Назначения векторов исключений и прерываний показаны в Таблице 4.1 .

1 В реальном режиме — вектор прерывания не попадает в таблицу.

2 В реальном режиме не возникают, но возможны в V86.

3 В реальном режиме — нарушение границы сегмента стека.

4 В реальном режиме — нарушение границы сегмента данных или кода.

 

Таблица 4.1 Назначения векторов исключений и прерываний

Рестарт команды.

 

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

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

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

Приоритеты одновременно происходящих прерываний.

 

Анализ условий обслуживания прерываний и исключений выполняется в следующем порядке (по убыванию приоритета):

1. Проверка на исключение-ловушку отладки (#DS) по выполненной инструкции (пошаговый режим через флаг TF или точка останова по данным через регистры отладки).

2. Проверка на исключение-отказ отладки (#DB) по последующей инструк­ции (точка останова по инструкции через регистр отладки).

3. Немаскируемое прерывание (аппаратное по входу NMI).

4. Маскируемое прерывание (аппаратное по входу INTR при IF=1).

5. Проверка на исключение-отказ сегментации (#NP или #GP) при выборке следующей инструкции.

6. Проверка на исключение-отказ страницы (#PF) при выборке следующей инструкции.

7. Проверка на отказ декодирования следующей инструкции (#UD или #GP).

8. Для операции WAIT проверка TS и МР (исключение #NM, если TS=1 и МР=1).

9. Для операции ESCAPE (инструкция математического сопроцессора) про­верка ЕМ и TS (исключение #NМ, если EМ=1 или TS=1).

10. Для операции WAIT или ESCAPE проверка на исключение #MF от сопро­цессора.

11. Проверка на отказ сегментации (#NР, #SS, #GP) или отказ страницы (#PF) для операндов, используемых в инструкции.

Двойной отказ (Double Fault) — исключение #DF — возникает, когда при обработке исключения, связанного с сегментацией (#TS, #NP, #SS или #GP), процессор обнаруживает исключение, отличное от отказа страницы (#PF). Также двойной отказ возникает, если при обработке исключения отказа страни­цы #PF обнаруживается исключение другого типа. В этом случае тоже исполня­ется исключение #DF.

Если во время обслуживания исключения отказа страницы произойдет еще один отказ страницы, то происходит аварийный останов (Shutdown) процессо­ра. Во время аварийного останова никакие новые инструкции не выполняются. Из этого состояния процессор можно вывести только аппаратно сигналом NMI, оставляя его в защищенном режиме, или сигналом RESET, переводящим процессор в реальный режим.

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

4.4 Механизмы передачи управления обработчикам прерываний.

 

Дескрипторная таблица прерываний (IDT) содержит шлюзы (рис 4.2).

 

Рис. 4.2 Формат шлюза IDT

Поле «TYPE» в байте доступа определяет тип шлюза:

· 4 - шлюз вызова 80286 (Call Gate);

· 5 - шлюз задачи 80286 (Task Gate);

· 6 - шлюз прерывания 80286 (Interrupt Gate);

· 7 - шлюз ловушки 80286 (Trap Gate);

· C - шлюз вызова 386+ (Call Gate);

· D - шлюз задачи 386+ (Task Gate);

· Е - шлюз прерывания 386+ (Interrupt Gate);

· F - шлюз ловушки 386+ (Trap Gate).



2015-12-06 597 Обсуждений (0)
Приоритеты одновременно происходящих прерываний 0.00 из 5.00 0 оценок









Обсуждение в статье: Приоритеты одновременно происходящих прерываний

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (597)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.01 сек.)