Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
L_SPPO.doc
Скачиваний:
30
Добавлен:
04.11.2018
Размер:
522.24 Кб
Скачать
  1. Система прерываний 32-разрядных микропроцессоров i80х86

В реальном режиме работы система прерываний работает так же, как и для 16-разрядного микропроцессора i8086/8088. Имеется 16 линий запросов на прерывания (IRQ – Interrupt ReQuest), реализуемых с помощью двух контроллеров прерываний i8259A, соединенных каскадным образом.

Линии IRQ:

  1. 1 – контроллер клавиатуры;

  2. 3 – COM2;

  3. 4 – COM1;

  4. 6 – контроллер FDD;

  5. 8 – часы реального времени с автономным питанием;

  6. 12 – контроллер мыши типа PS/2;

  7. 13 – математический сопроцессор;

  8. 14 – контроллер IDE (первый канал);

  9. 15 – контроллер IDE (второй канал);

  10. 16 – Intel (R) 82801DB/DBM USB Universal Host Controller – 24C2 ;

  11. 17 – SoundMax Integrated Digital Audio;

  12. 18 – Intel (R) 82801DB/DBM USB Universal Host Controller – 24C7;

  13. 19 – Intel (R) 82801DB/DBM USB Universal Host Controller – 24C4;

  14. 20 – ASUSTeK/Broadcom 440x10/100 Int…

  15. 22 – Microsoft ASPI – Compliant System

  16. 23 – Intel PCI to USB enhanced Host Controller

В защищенном режиме система прерываний действует совершенно иначе. Вместо таблицы векторов используется таблица дескрипторов прерываний IDT. Здесь хранятся не адреса обработчиков прерываний ISR, а специальные системные структуры данных, доступ к которым пользовательским программам запрещен. Каждый элемент в таблице дескрипторов прерываний имеет 8-байтовую структуру и может принадлежать к одному из трех типов:

    1. Коммутатор прерывания;

    2. Коммутатор перехвата;

    3. Коммутатор задачи.

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

Рассмотрим обработку прерываний в контексте текущей задачи. После анализа дескриптора процессор выполняет следующие действия:

  1. В стек на уровне привилегий текущего сегмента кода помещаются:

  1. значения SS и SP, если уровень привилегий в коммутаторе выше уровня привилегий ранее исполнявшегося кода;

  2. регистр флагов EFLAGS;

  3. регистры CS и IP.

  1. Если тип дескриптора – коммутатор прерывания, то другие прерывания запрещаются, если – коммутатор перехвата, новые прерывания на период обработки текущего прерывания не запрещаются;

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

Совершенно иначе обрабатываются прерывания, если дескриптор является коммутатором задачи. В этом случае происходит полное переключение на новую задачу, при этом сохраняются все регистры процессора.

В основном обработку прерываний осуществляют в контексте текущей задачи, так как это повышает быстродействие системы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]