Головна |
Основні регістри мікропроцесора 180x86, знання яких необхідно для розуміння захищеного режиму роботи, наведені на рис. 3.2. Слід звернути увагу на наступне:
Q покажчик команди EIP - 32 бітовий регістр, молодші 16 розрядів цього регістра є регістр IP;
Q регістр прапорів EFLAGS - 32 біта, молодші 16 розрядів представляють регістр FLAGS;
Q регістри загального призначення ЕАХ, ЕВХ, ЕСХ, EDX, і навіть ESP, EBP, ESI, EDI - 32-бітові, проте їхні молодші 16 розрядів є відомі регістри АХ, ВХ, СХ, DX, SP, BP, SI, DI ;
Q сегментні регістри CS, SS, DS, ES, FS, GS - 16-бітові. При кожному з регістрів CS, SS, DS, ES, FS, GS зображені пунктиром приховані від програмістів (недоступні нікому, крім власне мікропроцесора) 64-бітові регістри, в які завантажуються дескриптори відповідних сегментів;
Q регістр-покажчик на локальну таблицю сегментів поточної завдання- LDTR (16 бітів). При цьому регістрі також є «тіньової» (прихований від програміста) 64-бітовий регістр, в який мікропроцесор заносить дескриптор, який вказує на таблицю дескрипторів сегментів завдання, що описують її локальне ВАП;
Q регістр-покажчик завдання TR1 (16 бітів). Вказує на дескриптор в глобальній таблиці дескрипторів, що дозволяє отримати доступ до дескриптора завдання TSS2 - Інформаційній структурі, яку підтримує мікропроцесор для управління завданнями;
1 TR - Task register.
2 TSS - task state segment.
Про регістр GDTR1 (48 бітів) глобальної таблиці GDT, що містить як дескриптори загальних сегментів, так і спеціальні системні дескриптори. Зокрема, в GDTR знаходяться дескриптори, з допомогою яких можна отримати доступ до сегментів TSS;
1 GDTR - global descriptor table register. |
Q регістр IDTR (48 бітів) таблиці дескрипторів переривань. Містить інформацію, необхідну для доступу до «таблиці переривань» IDT; U керуючі регістри CRO - CR3 (32-бітові) і деякі інші регістри.
Керуючий регістр CRO містить цілий ряд прапорів, які визначають режими роботи мікропроцесора. Детально про ці прапори можна прочитати в книгах [2, 22, 48]. Ми ж просто обмежимося тим фактом, що наймолодший біт (РЕ, protect enable) цього регістра визначає режим роботи процесора. При РЕ = 0 процесор функціонує в реальному режимі роботи, а при одиничному значенні мікропроцесор перемикається в захищений режим. Найстарший біт регістра CRO (біт PG, paging) визначає, включений (PG = 1) чи ні (PG = 0) режим сторінкового перетворення адрес.
Регістр CR2 ??призначений для розміщення в ньому адреси підпрограми обробки сторінкового виключення, тобто в разі використання сторінкового механізму відображення пам'яті звернення до відсутньої сторінці викликатиме перехід на відповідну підпрограму диспетчера пам'яті, і для визначення цієї підпрограми буде задіяний регістр CR2.
Регістр CR3 містить номер фізичної сторінки, в якій розташовується таблиця каталогів таблиць сторінок поточного завдання. Очевидно, що, приписавши до цього номеру нулі, ми потрапимо на початок цієї сторінки.
Реальний і захищений режими роботи процесора | Підтримка сегментного способу організації віртуальної пам'яті
Підтримка сторінкового способу організації віртуальної пам'яті | Режим віртуальних машин для виконання додатків реального режиму | Захист адресного простору задач | Рівні привілеїв для захисту адресного простору задач | На сегменти коду з іншими рівнями привілеїв | Робота системи переривань в реальному режимі роботи процесора | Зазвичай контролер IDE1 (другий канал). | Робота системи переривань в захищеному режимі роботи процесора | Обробка переривань в контексті поточної завдання | Обробка переривань з перемиканням на нове завдання |