Захищений режим

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Захищений режим (режим захищеної віртуальної адреси) — режим роботи процесора. Розроблений фірмою Digital Equipment (DEC) для 32-розрядних комп'ютерів VAX-11, а також фірмою Intel для своїх процесорів, починаючи з 32-розрядних процесорів 80386. Хоча захищений режим частково було реалізовано вже у процесорі 80286, але там істотно відрізнявся спосіб роботи з пам'яттю, бо процесори ще були 16-бітні і не була реалізована сторінкова організація пам'яті. Використовується в процесорах інших виробників. Цей режим дозволив створити багатозадачні операційні системи, такі як Microsoft Windows, Unix тощо.

Особливості процесора 80286[ред.ред. код]

Процесор Intel 80286

У процесорі i286 було реалізовано два режими роботи — захищений режим і реальний режим. У захищеному режимі процесор міг адресувати до 1 ГБ віртуальної пам'яті (при цьому обсяг реальної пам'яті становив не більше 16 МБ) завдяки зміненню механізму адресації пам'яті. Перемикання з реального режиму до захищеного відбувається програмно та відносно просто, однак для зворотного переходу потрібне апаратне скидання процесора. Для відстеження поточного режиму роботи процесора використовується регістр слово стану машини (MSW). Програми реального режиму без модифікацій у захищеному режимі використовуватись не можуть, так само як і програми BIOS машини.

Суть захищеного режиму полягає у наступному. Програміст і розроблювані ним програми використовують логічний адресний простір (віртуальний адресний простір), розмір якого може становити 1024 МБ. Логічна адреса перетворюється на фізичну адресу автоматично за допомогою схеми управління пам'яттю (MMU). Завдяки захищеному режиму в пам'яті можна зберігати тільки ту частину програми, яка необхідна в певний момент, а решта може зберігатися в зовнішній пам'яті (наприклад, на жорсткому диску). У випадку звернення до тої частини програми, якої немає в пам'яті в певний момент, операційна система може призупинити програму, завантажити потрібну секцію коду із зовнішньої пам'яті та відновити виконання програми. Відповідно, стають доступними програми, розмір яких перевищує обсяг наявної пам'яті. Інакше кажучи, користувачеві здається, що він працює з більшим обсягом пам'яті, ніж насправді. Проте реалізація системи віртуальної пам'яті була ще далека від досконалості. Для використання захищеного режиму необхідна багатозадачна операційна система, наприклад Microsoft Windows 3.0, IBM OS/2 або UNIX.

Фізична адреса формується в такий спосіб. У сегментних регістрах зберігається селектор, який містить індекс дескриптора в таблиці дескрипторів (13 біт), 1 біт, що визначає, до якої таблиці дескрипторів буде здійснюватись звернення (до локальної або до глобальної) і 2 біти запрошуваного рівню привілей. Далі відбувається звернення до відповідної таблиці дескрипторів і до відповідного дескриптора, який містив початкову, 24-бітну адресу сегмента, розмір сегмента та права доступу. Після чого розраховується необхідна фізична адреса, за допомогою складання адреси сегмента та зсуву, який зберігається у 16-розрядному вказівному регістрі.

Особливості процесорів 80386-80486[ред.ред. код]

Процесор Intel 80386

З появою 32-розрядних процесорів 80386 фірми Intel процесори можуть працювати у трьох режимах: реальному, захищеному та віртуального процесора 8086. У захищеному режимі використовуються повні можливості 32-розрядного процесора — забезпечується безпосередній доступ до 4 ГБ фізичного адресного простору та багатозадачний режим із паралельним виконанням декількох програм (процесів). Власне кажучи, багатозадачний режим організує операційна система, проте мікропроцесор надає необхідний для цього режиму потужний і надійний механізм захисту завдань одна від одної за допомогою чотирьохрівневої системи привілей. Також у цьому режимі доступна сторінкова організація пам'яті, яка збільшує рівень захисту завдань одне від одного та ефективність їх виконання. У процесорі i386 компанія Intel врахувала необхідність кращої підтримки реального режиму, тому що програмне забезпечення часу його появи не було здатне повністю працювати в захищеному режимі. Тому, наприклад, в i386 можливо перемикання із захищеного режиму назад до реального (при розробці 80286 вважалось, що це не буде потрібне, тому на комп'ютерах із процесором 80286 повернення до реального режиму здійснювалось схемно — через скидання процесора). Під час ввімкнення мікропроцесора в ньому автоматично встановлюється режим реальної адреси. Перехід до захищеного режиму здійснюється програмно за допомогою виконання відповідної послідовності команд. Програми, призначені для захищеного режиму, мають бути написані особливим чином. Це означає, що реальний і захищений режими не сумісні.

Сторінкова організація пам'яті[ред.ред. код]

Відношення між віртуальною та реальною пам'яттю

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

Дивись також[ред.ред. код]

Література[ред.ред. код]

  • Рудаков П. И., Финогенов К. Г. Программируем на языке Ассемблера IBM PC. — М.: «Энтроп», 1996.