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

29.Таблиця дескрипторів переривань (idt).

Замість таблиці векторів переривань система переривань має справу з таблицею дескрипторів переривань (IDT, interrupt descriptor table)

Таблиця IDT пов'язує кожен вектор переривання з дескриптором процедури або завдання, яка буде обробляти це переривання.

Елементами таблиці IDT є дескриптори - Розмір дескриптора = 8 байтам.

(Тобто формат таблиці IDT подібний формату GDT і LDT.)

Дескриптори в таблиці переривань зазвичай називаються шлюзами (іноді комутаторами).

Шлюзи призначені для вказівки точки входу в програму обробки пре ¬ риваніе.

У дескрипторній таблиці переривань IDT можуть міститися шлю ¬ зи трьох типів:

• шлюз пастки;

• шлюз переривання;

• шлюз завдання.

Фізично мікропроцесор відрізняє шлюзи по со ¬ держимому полів.

Особливості таблиці IDT:

• нульовий дескриптор використовується для опису шлюзу для програми обробки виняткової ситуації 0 (помилка поділу);

(У таблиці GDT відсутній)

• дескриптори в таблиці IDT суворо впорядковані відповідно з номерами переривань.

У таблицях GDT і LDT порядок опису дес ¬ кріпторов ролі не грає, хоча і допускається наявність деяких соглаше ¬ ний по їх впорядкованості;

• розмірність таблиці IDT - не більше 256 елементів розміром по вісім байт, за кількістю можливих джерел переривань.

В окремих випадках є сенс описувати всі 256 дескрипторів цієї таблиці, формуючи для невикористовуваних номерів переривань шлюзи-заглушки. Це дозволить кор ¬ ректно обробляти всі переривання, навіть якщо вони і не плануються до використання в даній задачі. Якщо цього не зробити, то при незапланованому перериванні з номером, що перевищує межі IDT для даної заду ¬ чі, виникатиме виняткова ситуація загального захисту (з номером 13 (ODh)).

Адреса і довжина таблиці IDT містяться в регістрі idtr.

Зауважимо, що в реальному режі ¬ ме регістр idtr також містить адресу таблиці переривань, але при цьому кожен вектор займає 4 байти і містить 32-розрядний адреса у форматі CS: IP. Початкове значення цього регістра дорівнює нулю, але внего можна занести й інше значення.

Þ Можливо довільне розміщення в пам'яті цієї таблиці не тільки в за ¬ захищеності режимі, але і реальному.

 У захищеному режимі зробити завантаження регістра idtr може тільки код з максимальним рівнем привілеїв.

Доступ до таблиці IDT з боку користувальницьких (прикладних) програм неможливий.

Аналог таблиці векторів переривань, існуючий в захищеному режимі, називається таблицею дескрипторів переривань (Interrupt Descriptor Table, IDT). За форматом і способом ініціалізації IDT практично ідентична GDT. Основні відмінності:      Вміст - в IDT знаходяться дескриптори інших типів. Перший буде розглянуто нижче в цьому розділі, другий - у розділі «Зовнішні переривання», третій і останній - у розділі «Багатозадачність».      Регістр, що визначає розмір і положення таблиці називається IDTR, команда для його завантаження - lidt.      На відміну від GDT, нульовий дескриптор IDT це звичайний, повноцінний дескриптор, до якого цілком можливе звернення.

Розмір IDT не повинен перевищувати 256 дескрипторів. Таким чином, злегка модифікуючи код з попередньої глави, отримуємо приклад ініціалізації IDT:

; Вычисляем линейный адрес начала массива дескрипторов

mov eax, 0

mov ax, ds

shl eax, 4

add eax, offset IDT

; Записываем его в структуру

mov dword ptr offset idtr + 2, eax

; Загружаем IDTR. fword ptr – указатель на шестибайтную структуру

lidt fword ptr idtr

; Interrupt Descriptor Table

IDT label byte

db … ; Дескриптор #0

db … ; Дескриптор #N

idt_len equ $ - IDT ; размер IDT

idtr dw idt_len – 1 ; 16-битный размер IDT – 1

dd ? ; Место для 32-х битного базового адреса IDT

30. Перетворення лінійної адреси на фізичну в системі сторінкової пам’яті.

Основне застосування сторінкового перетворення адреси - організація лінійной пам'яті. Лінійна пам'ять дозволяє використовувати програмами, більший обсяг пам'яті, ніж встановлений на комп'ютері фізичний обсяг пам'яті. Решта інформації може бути скинута на зовнішній носій

Рис. 18. Перетворення лінійної адреси у фізичний. Процес обчислення адреси сторінки часто називають трансляцією сторінок. Старші 10 біт лінійної адреси використовуються як індекс в таблиці, званої каталогом таблиць сторінок. Розміщення каталогу таблиць сторінок у фізичній пам'яті визначається вмістом системного регістра процесора CR3. Каталог таблиць сторінок містить дескриптори таблиць сторінок, що визначають фізичну адресу таблиць сторінок. У каталозі таблиць сторінок за все може бути 1024 дескриптора. Самих же каталогів може бути скільки завгодно, але в кожний момент часу використовується тільки один - той, на який вказує регістр CR3. Наступні 10 біт лінійної адреси призначені для індексації таблиці сторінок, обраної за допомогою старших 10 біт адреси. Таблиця сторінок містить 1024 дескриптора, що визначають фізичні адреси сторінок пам'яті. Розмір однієї сторінки складає 4 кілобайти, тобто 4096 байт. Молодші 12 біт лінійної адреси вказують зміщення до адресуемому байту всередині сторінки.

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