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

26.Глобальні, локальні таблиці дескрипторів та idt.

Таблиці дескрипторів визначають всі сегменти, що використовуються в системі на базі 80386.

Є три типи таблиць:

1. таблиця глобальних дескрипторів;

2. таблиця локальних дескрипторів;

3. таблиця дескрипторів переривань.

Кожна з таблиць зберігатися в своїй області пам'яті і має розмір від 8 байт до 64 кбайт. Кожна таблиця може містити до 8к 8-ми байтних дескрипторів. Старші 13 біт селектора використовуються в якості індексу дескрипторної таблиці. Для звернення до таблиць є спеціальні регістри, що зберігають 32-х бітовий виконавчий адресу і 16 бітову кордон даної таблиці. Ці регістри GDTR, LDTR і IDTR завантажуються командами LGDT, LLDT, LIDT і зберігаються командами SGDT, SLDT і SIDT. Маніпуляція таблицями здійснюється операційною системою за допомогою привілейованих команд. Таблиця глобальних дескрипторів (GDT)

Таблиця GDT містить дескриптори, доступні для всіх завдань системи. GDT може містити будь-які дескриптори сегментів за винятком дескрипторів, що використовуються для обслуговування переривань. Зазвичай GDT містить сегменти команд і даних, що використовуються ОС і дескриптори таблиць LDT. Першому елементу GDT відповідає неіснуючий селектор, який не використовується. Таблиця локальних дескрипторів (LDT)

Таблиця LDT містить дескриптори, використовувані в даній задачі. Зазвичай ОС розробляються таким чином, щоб кожна задача мала окрему LDT. LDT може містити тільки дескриптори команд, даних, стека, номери завдання і виклику номеру. Таблиці LDT служать механізмом для ізоляції сегментів команд і даних окремих завдань від ОС, в той час, як GDT зберігає дескриптори сегментів, які є загальними для всіх завдань. Сегмент не може бути доступний завданню, якщо його дескриптор відсутня всередині поточної LDT чи GTR. Це забезпечує захист сегментів завдань і в той же час, спільне використання глобальних даних різними завданнями. На відміну від 6-ти байтових GDT і IDT регістрів, які зберігають базовий адресу і обмежувач, видима частина регістра LDT зберігає тільки 16 бітовий селектор. Цей селектор визначає дескриптор LDT в GDT. Таблиця дескрипторів переривань (IDT)

IDT містить дескриптори, що вказують розташування 256 підпрограм обслуговування переривань. IDT може зберігати тільки вектора завдань, вектора переривань і вектора трассіровок. IDT повинна бути не менше, ніж 256 байтовой, щоб зберігати дескриптори 32 переривань, зарезервованих ф. Intel. Кожне переривання, що використовується в системі, має бути описане в IDT. IDT використовується при виконанні команд INT, зовнішніх запитів переривань в особливих ситуаціях.

  • Дескриптори містяться у двох таблицях, доступних процесу

    • Глобальна таблиця дескрипторів (Global Descriptor Table, GDT)

      • Містить дескриптори, що описують програмний код і дані, спільні для усіх процесів (наприклад, бібліотеки, драйвери пристроїв, тощо), а також численні системні об'єкти

      • На цю таблицю вказує регістр gdtr

    • Локальна таблиця дескрипторів (Local Descriptor Table, LDT)

      • Доступна лише тому процесу, який виконується в даний момент

      • Кожний процес має свою власну локальну таблицю

      • На цю таблицю вказує регістр ldtr

  • Обробники переривань доступні через таблицю дескрипторів переривань (Interrupt Descriptor Table, IDT)

    • На неї вказує регістр idtr

Регістр

Таблиця (об'єкт)

Формат регістру

gdtr

GDT

Global Descriptor Table

48

Містить базову адресу і межу таблиці

ldtr

LDT

Local Descriptor Table

16

Селектор у таблиці GDT

idtr

IDT

Interrupt Descriptor Table

48

Містить базову адресу і межу таблиці

tr

TSS

Task Status Segment

16

Селектор у таблиці GDT


  • Сегменти, що вказують на глобальні системні об'єкти (gdtr та idtr) містять базові лінійні адреси цих об'єктів, а також задають розмір об'єктів

  • Сегменти, що вказують на локальні для кожного процесу об'єкти (ldtr та tr) містять лише селектори, які адресують відповідні дескриптори у глобальній таблиці

    • Таким чином, таблиця GDT містить дескриптори, що описують сегменти стану задач і локальні таблиці дескрипторів усіх процесів, що виконуються в системі

    • Для переходу до виконання іншого процесу необхідно просто завантажити у регістри ldtr та tr відповідні дескриптори

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