Робота системи переривань у захищеному режимі роботи процесора.


У захищеному режимі роботи система переривань діє зовсім інакше. Насамперед, система переривань мікропроцесора i80x86 при роботі в захищеному режимі замість таблиці векторів, про яку ми говорили вище, має справу з таблицею дескрипторів переривань(IDT, interrupt descriptor table). Справа тут не стільки в назві таблиці, скільки в тім, що таблиця IDT являє собою не таблицю з адресами оброблювачів переривань, а таблицю зі спеціальними системними структурами даних (дескрипторами), доступ до якої з боку користувацьких (прикладних) програм неможливий. Тільки сам мікропроцесор (його система переривань) і код операційної системи можуть одержати доступ до цієї таблиці, що являє собою спеціальний сегмент, адреса і довжина якого містяться в регістрі IDTR (див. мал. 3.2). Цей регістр аналогічний регістру GDTR у тім відношенні, що він ініціалізується один раз при завантаженні системи. Цікаво помітити, що в реальному режимі роботи регістр IDTR так само вказує адресу таблиці переривань, але при цьому, як і в процесорі і8086, кожен елемент таблиці переривань (вектор) займає всього 4 байти і містить 32-бітну адресу у форматі селектор:зсув (CS:IP). Початкове значення цього регістра дорівнює нулю, але в нього можна занести й інше значення. У цьому випадку таблиця векторів переривань буде знаходитися в іншому місці оперативної пам'яті. Природньо, що перед тим, як це зробити (занести в регістр IDTR нове значення), необхідно підготувати саму таблицю векторів. У захищеному режимі роботи завантаження регістра IDTR може зробити тільки код з максимальним рівнем привілеїв.Кожен елемент у таблиці дескрипторів переривань, про яку ми говоримо вже в захищеному режимі, являє собою 8-байтову структуру, більш схожу на дескриптор шлюзу (gate), ніж на дескриптор сегмента. Як ми вже знаємо, у залежності від причини переривання процесор автоматично індексує таблицю переривань і вибирає відповідний елемент, за допомогою якого і здійснюється перенапрямок у виконанні коду, тобто передача керування на оброблювач переривання. Однак таблиця IDT містить тільки шлюзи, а не дескриптори сегментів коду, тому фактично виходить непряма адресація, але з використанням розглянутого раніше механізму захисту за допомогою рівнів привілею. Завдяки цьому користувачі вже не можуть самі змінити обробку переривань, що визначається системним програмним забезпеченням.

Дескриптор переривань може належати до одного з трьох типів:

· комутатор переривання (interrupt gate);

· комутатор перехоплення (trap gate);

· комутатор задачі (task gate).

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



Дата добавления: 2016-07-27; просмотров: 2092;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.006 сек.