Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

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



 

При виникненні переривання від джерела з номером п мікропроцесор, знаходячись в

захищеному режимі, виконує наступні дії:

 

1. Визначає місцезнаходження таблиці IDT, адреса і розмір якої міститься в

регістрі idtr.

 

2. Складає значення адреси, по якій розміщена IDT, і значення n*8. По

даному зсуву в таблиці IDT повинен знаходитися 8-байтовий дескриптор

що визначає місцеположення процедури обробки переривання.

 

3. Перемикається на процедуру обробки переривання.

 

Шлюз пастки

 

Формат шлюзу пастки —

offset_2

p

dpl

1 1 1 1

не використовується

 

63 47 39 36 32

 

indicator

offset_1

 

31 15 0

 

Offset_1, offset_2 - перша і друга половини зсуву в сегменті

 

indicator - Селектор, вказуючий на дескриптор в LDT або GDT

 

000 - Постійне значення

 

type - 1111 - Тип шлюзу — пастка

 

dpl - Визначення мінімального рівня привілеїв завдання, яке може передати

управління обробникові переривань через даний шлюз (зазвичай dpl = 112)

 

p - Біт присутності (0 або 1)

 

Коли виникає переривання і його вектор вибирає в таблиці IDT дескриптор шлюзу

з типом пастки, мікропроцесор зберігає в стеку інформацію про місце, де він

перервав роботу поточної програми. Після цього він передає управління в

відповідності з полями indicator і offset.

 

Поле indicator представляє селектор однієї з таблиць, GDT або LDT, в залежності

від стану бита TI в нім.

 

Поле offset визначає зсув в сегменті коди. Цей сегмент коди описується дескриптором, на який указує селектор в полі indicator.

 

Після того, як управління було передане обробникові переривання, він виконує свою роботу до тих пір, поки не зустріне команду iret. Ця команда відновлює із стека стан регістрів eflags, cs і eip на момент виникнення переривання, і робота припиненої програми продовжується.

 

 

При підготовці виходу з програми обробки переривання майте на увазі, що

команда iret нічого не знає про можливість наявності в стеку коду помилки, тому для коректного повернення управління не забудьте при необхідності попереднього видалити командою popкод помилки із стека.

 

Шлюз переривання

 

Шлюз переривання відрізняється тільки полем типу = 1110.

 

При виникненні переривання, якому відповідає шлюз переривання

мікропроцесор виконує ті ж дії, що і для шлюзу пастки, але з одним

важливою відмінністю:

 

при передачі управління обробникові переривання через шлюз переривання

мікропроцесор скидає прапор переривання в регістрі eflags в 0, забороняючи тим самим обробку апаратних переривань. Цей факт має важливе значення для програмування обробників апаратних і програмних переривань.

 

Рада. Якщо у вас є сумнів в тому, який з шлюзів - переривання або пастки

- використовувати — застосовуйте шлюз переривання.

 

Шлюз завдання

 

Шлюз завдання відрізняється

 

1) поле типу = 1110

 

2) поле indicator замість селектора сегменту коди указує на дескриптор

сегменту стану завдання (TSS).

 

Здійснюється перехід на нове завдання, яке здійснюватиме обробку

переривання. Завдання є частиною механізму багатозадачності. Тобто проводиться

перемикання завдань. (Поточний стан завдання апаратного, що переривається, зберігається

у її власному TSS.)

 

Для кожного завдання визначається сегмент стану завдання TSS (Task Segment Status)

із строго певною структурою. У цьому сегменті є поля для збереження всіх

регістрів загального призначення, деяких системних регістрів і іншої інформації.

Всю сукупність цієї інформації називають контекстом завдання. Цей сегмент

описується, подібно до інших сегментів, дескриптором в таблиці GDT або LDT.

 

Якщо за допомогою деякого селектора звернутися до такого дескриптора, то

мікропроцесор здійснить перемикання на відповідне завдання. Подібні

перемикання можуть, зокрема, здійснюватися операційною системою

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

розділення часу між завданнями. Перемикання завдань може проводитися

звичайними командами міжсегментної передачі управління або по виникненню

переривання при переході до обробника переривання через шлюз завдання.

 

РЕЗЮМЕ

 

Шлюзи пастки і переривання за допомогою полів indicator і offset визначають адресу

по якому знаходиться точка входу в програму обробки переривання.

 

Шлюз завдання призначений для реалізації принципово іншого переходу до обробника

переривань — з використанням механізму перемикання завдань.

 

 

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

 

 




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.