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

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

Підхід до організації пам‘яті спирається на той факт, що програми часто ділаться на окремі частини-сегменти. Кожний сегмент представляє собою окрему логічну одиницю інформації, що містить сукупність даних або програм та розташовану у адресному просторі користувача. Сегменти створюються користувачами, які можуть звертатися до них по символічному імені. У кожному сегменті встановлюється своя власна нумерація слів, починаючи з нуля.

Для реалізації сегментації було запропоновано декілька схем, котрі відрізняються деталями реалізації, але засновані на тих самих принципах.

У системах з сегментацією пам‘яті кожне слово у адресному просторі користувача визначається віртуальною адресою, що складається з 3 частин: старші розряди розглядаються як номер сегменту, середні як номер сторінки у сегменті, молодші – номер слова у сторінці.

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

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