Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры к экзамену,3 лабы(4 вар) / Ответы Гуров 2011 (1).doc
Скачиваний:
71
Добавлен:
10.05.2014
Размер:
1.01 Mб
Скачать

Пример:

Нарушение в системных таблицах.INDEXуказывает на дескриптор, а длина таблицы не так определена.

Порядок обработки прерываний

  1. Сознательные действия программиста;

  2. Рефлекторные действия процессора– выполняются на аппаратном уровне, включаются автоматически.

Рефлекторные действия процессора

  1. определение типа прерывания;

  2. сохранение контекстапрерываемой программы (информация, которая позволит вернуться в программу).

  • EIP, CS, EFLAGS– если переход на обработчик происходит через шлюз прерывания или через шлюз ловушки;

  • Целиком сегмент задач TSS– если переход через шлюз задач или при переключении.

  1. Определить адрес обработчика прерываний и загрузить его в:

  • Регистр сегмента кода;

  • Регистр прерываний.

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

Пример (для рефлекторного мк):

  • Адрес запоминается в стеке;

  • Определяет тип прерывания;

  • Вызывает прерывание;

  • Переход на адрес;

  • Выполняется написанный обработчик;

  • IRET – выталкивается адрес возврата.

Типы прерываний

Для программных прерываний: вводятся изнутри микропроцессором, например, отсутствие страницы памяти = тип 14.

  1. Для маскируемыхаппаратных прерываний – тип вводитсяиз контроллера приоритетных прерыванийпо шине данных.

  2. Для немаскируемыхпрерываний –тип=2(автоматически)

Всего МП различает 256 типов прерываний. Это делается автоматически

Определение адреса обработчика прерываний

При работе в реальном режимеадрес определяется по таблице векторов прерываний (1), который занимает младший килобайт ОП.

В защищённом режимеиспользуется (2) таблица дескрипторов прерываний (IDT), в ней могут храниться ТОЛЬКО дескрипторы типа ШЛЮЗ (ITDнаходится где угодно):

  • Шлюз ловушка

  • Шлюз прерывания

  • Шлюз задачи

Шлюзы ловушки и прерывания

Для CS

Для EIP

Байт доступа

Селектор

Смещение

P

DPL

0

ТИП

Резерв

16

32

64 бита = 8 байт

Назначение: Поиск первой команды обработчика

P– бит присутствия

При входе в обработчик через шлюз прерыванияв регистре флаговсбрасывается бит разрешения прерывания (IF=0). А черезшлюз ловушкиНЕТ.

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

Шлюз задачи

Байт доступа

Селектор TSS

P

DPL

0

0101

Резерв

16

8

64

Назначение: Запуск дескриптора TSS

Через шлюз задач обычно реализуются аппаратные прерывания.

  1. Аппаратные прерывания в микропроцессорных системах. Источники аппаратных прерываний в стандартной конфигурации МПС. Контроллер приоритетных прерываний (КПП): функции, структура и алгоритм работы. Включение КПП в структуру микропроцессорной системы. Каскадное включение контроллеров приоритетных прерываний.

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

Запросы аппаратныхпрерываний возникаютасинхронноработе МП исвязаны с работой внешних устройств(мышь, HDD, и т.д.)

Программныезапросы прерываний –связаны с особыми ситуациями при работе программы (отсутствие страниц в ОП, переполнение и т.д.), что не может предвидеть программист. Либо наличие в программе командыINT n– используется для вызова функций ОС, либо BIOS, которые поддерживают работу с внешними устройствами.

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

Ловушка– обнаруживается после окончания «виноватой команды». После его обработки выполнение программы продолжается со следующей команды.

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

Контроллер приоритетных прерываний (КПП)

2контроллера приоритетных прерываний, до 15 прерываний без ухищрений (сейчас).

Последовательность действий при обработке запросов прерываний:

  1. Зафиксировать пришедший запрос прерывания в регистре запросов прерываний IRR

  2. Незамаскированные в регистре маскизапросы передаются в «Приоритетный арбитр», азамаскированные блокируются.

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

  4. Приоритет выделенного запроса сравнивается с приоритетом запроса, который обслуживается в данный момент (регистр обслуживания запросов ISR). Если приоритет нового запроса выше, то контроллер вырабатывает сигнал INT в МП, иначе обработка запроса откладывается.

МП анализирует бит IF в регистре флагов. Если прерывание разрешено, то он вырабатывает ДВАсигнала подтверждения INTA в микроконтроллере:

  • ПЕРВЫЙ сигнал INTA – запрет записи в IRR. Выбранный сигнал из IRR перезаписывается в ISR.

  • ВТОРОЙ сигнал INTA – тип прерывания из регистра типов передаётся по шине данных микропроцессору, разрешается запись в IRR.