режим надає механізм захисту – тобто процесор може дозволити або не дозволити виконувати яку-небудь дію (доступ до певної ділянки пам'яті, запис в регістр і т. п) залежно від поточного рівня привілеїв. Механізм захисту застосовується головним чином при багатозадачності для забезпечення захисту виконуваних програм один від одного. Існує чотири рівні привілеїв ("кільця") в якому може виконуватися програма, при цьому 0 позначає щонайвищі привілеї, а 3 – якнайменші. В сучасних ОС ядро системи виконується на 0 рівні, а призначені для користувача програми на третьому.
Захищений режим надає можливість адресуватися як мінімум до чотирьох гігабайтів пам'яті і на відміну від реального режиму надає ще один спосіб адресації – сторінкову адресацію.
2. Будова, принцип функціонування
В основі реалізації ієрархії пам'яті сучасних комп'ютерів лежать два принципи: принцип локальності звертань і співвідношення вартість/продук-тив-ність. Принцип локальності звертань говорить про те, що більшість програм на щастя не виконує звернень до всіх своїх команд і даних рівноймовірно, а надають перевагу деякої частини свого адресного простору.
Ієрархія пам'яті сучасних комп'ютерів будується на декількох рівнях, причому більш високий рівень менше за об'ємом, швидший і має більшу вартість в перерахунку на байт, ніж більш низький рівень. Рівні ієрархії взаємопов'язані: всі дані на одному рівні можуть бути також знайдені на більш низькому рівні, і всі дані на цьому більш низькому рівні можуть бути знайдені на наступному нижчому рівні і так далі, поки ми не досягнемо основи ієрархії.
Ієрархія пам'яті звичайно складається з багатьох рівнів, але в кожний момент часу ми маємо справу тільки з двома сусідніми рівнями. Мінімальна одиниця інформації, яка може або бути присутньою, або бути відсутньою в дворівневій ієрархії, називається блоком. Розмір блоку може бути або фіксованим, або змінним. Якщо цей розмір зафіксований, то об'єм пам'яті є кратним розміру блоку.
Успішне або неуспішне звернення до більш високого рівня називаються відповідно попаданням (hit) або промахом (miss). Попадання – звернення до об'єкту в пам'яті, який знайдений на більш високому рівні, тоді як промах означає, що він не знайдений на цьому рівні. Частка попадань (hit rate) або коефіцієнт попадань (hit ratio) є частка звертань, знайденого на більш високому рівні. Іноді вона представляється відсотками. Частка промахів (miss rate) є частка звертань, який не знайдений на більш високому рівні.
Оскільки підвищення продуктивності є головною причиною появи ієрархії пам'яті, частота попадань і промахів є важливою характеристикою. Час звертань при попаданні (hit time) є час звернення до більш високого рівня ієрархії, який включає, зокрема, і час, необхідний для визначення того, чи є звертання попаданням або промахом. Втрати на промах (miss реnalty) є час для заміщення блоку в більш високому рівні на блок з більш низького рівня плюс час для пересилки цього блоку в необхідний пристрій (звично в процесор). Втрати на промах далі включають дві компоненти: час доступу (асcess time) – час звернення до першого слова блоку при промаху, і час пересилки (transfer time) – додатковий час для пересилки слів блоку, що залишилися. Час доступу пов'язаний із затримкою пам'яті більш низького рівня, тоді як час пересилки пов'язаний із смугою пропускання каналу між пристроями пам'яті двох суміжних рівнів.
Концепція віртуальної пам'яті
Загальноприйнята в даний час концепція віртуальної пам'яті з'явилася достатньо давно. Вона дозволила вирішити цілий ряд актуальних питань організації обчислень. Перш за все до числа таких питань відноситься забезпечення надійного функціонування мультипрограмних систем.
У будь-який момент часу комп'ютер виконує багато процесів або задач, кожна з яких має в своєму розпорядженні свій адресний простір. Було б дуже накладно віддавати всю фізичну пам'ять якійсь одній задачі, тим паче, що багато задач реально використовують тільки невелику частину свого адресного простору. Тому необхідний механізм розділення невеликої фізичної пам'яті між різними задачами. Віртуальна пам'ять є одним із способів реалізації такої можливості. Вона ділить фізичну пам'ять на блоки і розподіляє їх між різними задачами. При цьому вона передбачає також деяку схему захисту, який обмежує задачу тими блоками, які їй належать. Більшість типів віртуальної пам'яті скорочує також час початкового запуску програми на процесорі, оскільки не весь програмний код і дані потрібні їй у фізичній пам'яті, щоб почати виконання.
Інше питання, тісно пов'язане з реалізацією концепції віртуальної пам'яті, стосується організації обчислень на комп'ютері задач дуже великого об'єму. Якщо програма ставала дуже великою для фізичної пам'яті, частину її необхідно було зберігати в зовнішній пам'яті (на диску) і задача пристосувати її для вирішення на комп'ютері лягала на програміста. Програмісти ділили програми на частини і потім визначали ті з них, які можна б було виконувати незалежно, організовуючи оверлейні структури, які завантажувалися в основну пам'ять і вивантажувалися з неї під управлінням програми користувача. Програміст повинен був стежити за тим, щоб програма не зверталася поза відведеного їй простору фізичної пам'яті. Віртуальна пам'ять звільнила програмістів від цього тягаря. Вона автоматично управляє двома рівнями ієрархії пам'яті: основною пам'яттю і зовнішньою (дисковою) пам'яттю.
Крім того, віртуальна пам'ять спрощує також завантаження програм, забезпечуючи механізм автоматичного переміщення програм, що дозволяє виконувати одну і ту ж програму в довільному місці фізичної пам'яті.
Системи віртуальної пам'яті можна розділити на два класи: системи з фіксованим розміром блоків, званих сторінками, і системи зі змінним розміром блоків, званих сегментами. Нижче розглянуто обидва типи організації віртуальної пам'яті.
Сторінкова організація пам'яті
У системах зі сторінковою організацією основна і зовнішня