Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Module_1_answers_with_practice.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.55 Mб
Скачать

6. Структура таблиц idt. Дескриптор шлюза.

Таблица векторов прерываний (англ. Interrupt Descriptor Table, IDT) используется в x86 архитектуре и служит для определения корректного ответа на прерывания и исключения. В микропроцессорах 8086/80186 таблица векторов прерываний расположена в первом килобайте памяти начиная с адреса 0000:0000 и содержит 256 векторов прерываний в формате сегмент:смещение. В IDT используются следующие типы прерываний: аппаратные прерывания, программные прерывания и прерывания, зарезервированные процессором, называемые исключениями (первые 32) на случай возникновения некоторых событий (деление на ноль, ошибка трассировки, переполнение). В реальном режиме элементом IDT является 32-битный FAR адрес обработчика прерывания.

INT_NUM

Short Description PM

0x00

Division by zero (Деление на ноль)

0x01

Debugger (Отладка)

0x02

Non-maskable interrupt (Немаскируемые прерывания)

0x03

Breakpoint (Точка останова)

0x04

Overflow (Переполнение)

0x05

Bounds (Ограничение)

0x06

Invalid Opcode (Не существующий код операции)

0x07

Coprocessor not available (Сопроцессор не доступен)

0x08

Double fault (Двойная ошибка)

0x09

Coprocessor Segment Overrun (Переполнение сегмента сопроцессора)

0x0A

Invalid Task State Segment (Не существующий сегмент состояния задачи)

0x0B

Segment not present (Сегмент не существует)

0x0C

Stack Fault (Ошибка стека)

0x0D

General protection fault (Нарушение защиты общего характера)

0x0E

Page fault (Ошибка страницы)

0x0F

reserved (зарезервировано)

0x10

Math Fault (Математическая ошибка)

0x11

Alignment Check (Проверка выравнивания)

0x12

Machine Check (Проверка машины)

0x13

SIMD Floating-Point Exception (SIMD исключения с плавающей точкой)

Дескриптор шлюза

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

  • Смещение (англ. Offset, жёлтые поля) — смещение процедуры в сегменте кода;

  • Селектор (англ. Selector, оранжевое поле) — селектор сегмента процедуры, на который происходит переход. Может быть сегментом кода или TSS;

  • Количество параметров (англ. Words count, голубое поле, биты 32-36) — количество слов (16-разрядный стек) или двойных слов (32-разрядный стек), копируемых из стека вызывающей программы в стек вызываемой процедуры. Актуально только при смене уровня привилегий; используется только в шлюзах вызова (Call Gate)

  • Тип/права доступа (голубые поля, биты 40-47) — права доступа к шлюзу и его тип (см.Дескриптор сегмента — типы системных сегментов).

Ссылки:

http://ru.wikipedia.org/wiki/Дескриптор_шлюза

http://ru.wikipedia.org/wiki/Таблица_векторов_прерываний

http://en.wikipedia.org/wiki/Interrupt_descriptor_table

http://wiki.osdev.org/Interrupt_Descriptor_Table

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