ЗНАЕТЕ ЛИ ВЫ?

Сегментно-сторінковий механізм



При включеній системі керування сторінками, працює, як описаний вище сегментний механізм, так і механізм керування сторінками, однак при цьому зміст роботи сегментного механізму міняється. У цьому випадку віртуальний адресний простір задачі має розмір у 4 Гбайта, де розміщаються всі сегменти (малюнок 2.22). За колишнім селектором, задачі визначає номер віртуального сегмента, а зсув у команді задачі – зсув у середині цього сегмента. Оскільки тепер усі сегменти розділяють один адресний простір, то можливе їхнє накладення, але процесор не контролює такі ситуації, залишаючи цю проблему операційній системі. Перший етап перетворення віртуальної адреси, пов'язаний із перетворенням зсуву і селектора з використанням таблиць GDT і LDT, що містять дескриптори сегментів, у точності збігається з етапом перетворення цих даних при відключеному механізмі керування сторінками. Усі структури даних цих таблиць такі ж. Однак, якщо раніше дескриптор сегмента містив його базову адресу у фізичному адресному просторі, і при додаванні його зі зсувом з команди програми одержували лінійну адресу у фізичній пам'яті, то тепер дескриптор містить базову адресу сегмента у віртуальному адресному просторі. Тому в результаті його додавання зі зсувом одержуємо лінійну віртуальну адресу, що на другому етапі (сторінковому) перетворюється в номер фізичної сторінки. Для реалізації механізму керування сторінками як фізичні, так і віртуальні адресні простори, розбиті на сторінки, розміром 4 ДО, всього в цих адресних просторах нараховується 1 М сторінок.

Лінійна віртуальна адреса містить, у своїх старших 20 розрядах, номер віртуальної сторінки, а в молодших 12 розрядах - зсув у середині сторінки. Для відображення віртуальної сторінки у фізичну досить побудувати таблицю сторінок, кожен елемент якої - дескриптор віртуальної сторінки - містив би номер відповідної їй фізичної сторінки та атрибути. У процесорі і386 так і зроблено: структура дескриптора сторінки зображена на малюнку 2.23. 20-ти розрядів номера сторінки досить для визначення фізичної адреси початку сторінки, бо при її фіксованому розмірі 4 до молодшого 12 розрядів цієї ж адреси, завжди дорівнюють нулю. Дескриптор сторінки також містить наступні поля або ж близькі за змістом до відповідних полів дескриптора сегменти:

Р - біт присутності сторінки у фізичній пам'яті,

W - біт дозволу запису на сторінці,

U - біт користувач/супервізор

А - ознака того чи був доступ до сторінки,

D - ознака модифікації вмісту сторінки,

РWТ і РСD - керують механізмом кешування сторінок (введені, починаючи з процесора і486),

АVL- резерв для нестатків операційної системи (available for use).

 

Мал. 2.23. Формат дескриптора сторінки

При невеликому розмірі сторінки процесора i386, щодо розмірів адресних просторів, таблиця сторінок повинна займати в пам'яті значне місце - 4 байти ( 1M = 4 Мбайти). Це занадто багато для сучасних моделей персональних комп'ютерів, тому в процесорі i386 використовують розподіл усієї таблиці на розділи по 1024 дескриптора. Розмір обирають так, щоб один розділ займав одну фізичну сторінку (1024 ( 4 байти = 4 Кбайта). Усього виходить 1024 сторінок розділу (1024 (1024 = 1M). Для того, щоб не зберігати всі розділи таблиці у фізичній пам'яті, використовують каталог розділів таблиці сторінок, що використовує такі ж, за структурою, дескриптори сторінок, що й у таблиці сторінок. Тому для збереження інформації про дескриптори 1024 розділів, необхідна пам'ять 4 ДО, тобто одна фізична сторінка. Сукупність дескрипторів, що описують стан і характеристики віртуальних сторінок розділів таблиці сторінок, називається каталогом чи розділом таблиць. Віртуальна сторінка, що зберігає вміст каталогу, завжди знаходиться у фізичній пам'яті і номер її фізичної сторінки зазначений у спеціальному керуючому регістрі СR3 процесора (точніше, в одному з полів цього регістра).

Перетворення лінійної віртуальної адреси у фізичну відбувається в такий спосіб (малюнок 2.24). Поле номера віртуальної сторінки (старше 20 розрядів) поділяється на дві рівні частини, по 10 розрядів – поле номера розділу і поле номера сторінки в розділі. За допомогою номера фізичної сторінки, що зберігає каталог і зсуви в цій сторінці, що задається полем номера, процесор знаходить дескриптор віртуальної сторінки. Відповідно до атрибутів цього дескриптора, визначаються права доступу до цієї сторінки, а також наявність її у фізичній пам'яті. У випадку її відсутності відбувається сторінкове переривання і операційна система повинна, в цьому випадку, перемістити її в пам'ять. Після того, як потрібна сторінка знаходиться в пам'яті, для визначення адреси елемента даних використовується зсув, обумовлений полем номера сторінки лінійної віртуальної адреси.

Таким чином, при доступі до сторінки в процесорі використовується дворівнева схема адресації сторінок, що сповільнює перетворення, але дозволяє використовувати сторінковий механізм і, для збереження самої таблиці сторінок, істотно зменшити обсяг фізичної пам'яті для її ж, збереження. Для прискорення сторінкових перетворень у блоці керування сторінками, використовується асоціативна пам'ять, у якій кеширується 32 комбінації "номер віртуальної сторінки - номер фізичної сторінки". Ця спеціальна кеш-пам'ять (додаткова стосовно 8 Кбайт кешу даних процесорів і486 і Реntium) значно прискорює перетворення адрес, тому що у випадку влучення в кеш, тривалий процес, описаний вище, виключається.

 

Мал. 2.24. Перетворення лінійної віртуальної адреси у фізичну адресу

Організація віртуальної пам'яті в процесорі і386 дозволяє захистити адресні простори різних процесів за рахунок двох механізмів:

1. Ізоляція адресних просторів у фізичній пам'яті шляхом призначення їм різних сторінок сегментів (якщо сторінковий механізм відключений).

2. Захист сегментів від несанкціонованого доступу за допомогою привілеїв чотирьох рівнів.





Последнее изменение этой страницы: 2016-08-16; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 35.153.39.7 (0.007 с.)