Реалізація сегментації в архітектурі IA-32



В архітектурі IA-32 логічні адреси в програмі формуються із використанням сегментації й мають такий вигляд: «селектор-зсув». Значення селектора завантажують у спеціальний регістр процесора (сегментний регістр) і використовують як індекс у таблиці дескрипторів сегментів, що перебуває в пам’яті та є аналогом таблиці сегментів, описаної раніше. В архітектурі IA-32 підтримуються шість сегментних регістрів. Це означає, що виконуваний код в один і той самий час може адресувати шість незалежних сегментів.

Селектор містить індекс дескриптора в таблиці, біт індикатора локальної або глобальної таблиці та необхідний рівень привілеїв.

Для системи задають спільну глобальну таблицю дескрипторів (Global Description Table, GDT), а для кожної задачі – локальну таблицю дескрипторів (Local Description Table, LDT).

Дескриптори в IA-32 мають довжину 64 біти. Вони визначають властивості програмних об’єктів (наприклад, сегментів пам’яті або таблиць дескрипторів).

Дескриптор містить значення бази (base), яке відповідає адресі об’єкта (наприклад, початок сегмента); значення межі (limit); тип об’єкта (сегмент, таблиця дескрипторів тощо); характеристики захисту.

Звертання до таблиць дескрипторів підтримується апаратно. Якщо задані в дескрипторі характеристики захисту не відповідають рівню привілеїв, визначеному селектором, отримати доступ до пам’яті за його допомогою буде неможливо. Так забезпечують захист пам’яті.

Проте жодного разу не було згадано, що в дескрипторі зберігають фізичну адресу. Річ у тому, що для архітектури IA-32 внаслідок перетворення логічної адреси отримують не фізичну адресу, а ще один вид адреси, який називають лінійною адресою.

Сторінкова організація пам’яті

До основних технологій віртуальної пам’яті крім сегментації належить сторінкова організація пам’яті (paging). Її головна ідея – розподіл пам’яті блоками фіксованої довжини. Такі блоки називають сторінками.

Ця технологія є найпоширенішим підходом до реалізації віртуальної пам’яті в сучасних операційних системах.

Базові принципи сторінкової організації пам’яті

У разі сторінкової організації пам’яті логічну адресу називають також лінійною, або віртуальною, адресою. Такі адреси належать одній множині (наприклад, лінійною адресою може бути невід’ємне ціле число довжиною 32 біти).

Фізичну пам’ять розбивають на блоки фіксованої довжини – фрейми, або сторінкові блоки (frames). Логічну пам’ять, у свою чергу ,розбивають на блоки такої самої довжини – сторінки (pages). Коли процес починає виконуватися, його сторінки завантажуються в доступні фрейми фізичної пам’яті з диска або іншого носія.

Сторінкова організація пам’яті повинна мати апаратну підтримку. Кожна адреса, яку генерує процесор, ділиться на дві частини: номер сторінки і зсув сторінки. Номер сторінки використовують як індекс у таблиці сторінок.

Таблиця сторінок – це структура даних, що містить набір елементів (page-table entries, PTE), кожен із яких містить інформацію про номер сторінки, номер відповідного їй фрейму фізичної пам’яті (або безпосередньо його базову адресу) та права доступу. Номер сторінки використовують як для пошуку елемента в таблиці. Після його знаходження до базової адреси відповідного фрейму додають зсув сторінки, чим і визначають фізичну адресу (рис. 8.7).

Розмір сторінки є ступенем числа 2, у сучасних ОС використовують сторінки розміром від 2 до 8 Кбайт. У спеціальних режимах адресації можна працювати зі сторінками більшого розміру.

Для кожного процесу створюють його власну таблицю сторінок. Коли процес починає своє виконання, ОС розраховує його розмір у сторінках і кількість фреймів у фізичній пам’яті. Кожну сторінку завантажують у відповідний фрейм, після чого його номер записують у таблицю сторінок процесу.

Рис. 8.7. Перетворення адреси у разі сторінкової організації пам’яті

Відображення логічної пам’яті для процесу відрізняється від реального стану фізичної пам’яті. На логічному рівні для процесу вся пам’ять зображується неперервним блоком і належить тільки цьому процесові, а фізично вона розосереджується по адресному простору мікросхеми пам’яті, чергуючись із пам’яттю інших процесів (рис. 8.8). Процес не може звернутися до пам’яті, адреса якої не вказана в його таблиці сторінок (так реалізований захист пам’яті).

Рис. 8.8. Логічний і фізичний адресний простір у разі сторінкової організації пам’яті

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


Дата добавления: 2018-04-05; просмотров: 295; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!