пам'ять (головним чином дисковий простір) діляться на блоки або сторінки фіксованої довжини. Кожному користувачу надається деяка частина адресного простору, яка може перевищувати основну пам'ять комп'ютера і яка обмежена тільки можливостями адресації, закладеними в системі команд. Ця частина адресного простору називається віртуальною пам'яттю користувача. Кожне слово у віртуальній пам'яті користувача визначається віртуальною адресою, що складається з двох частин: старші розряди адреси розглядаються як номер сторінки, а молодші – як номер слова (або байта) усередині сторінки.
Управління різними рівнями пам'яті здійснюється програмами ядра операційної системи, які стежать за розподілом сторінок і оптимізують обміни між цими рівнями. При сторінковій організації пам'яті суміжні віртуальні сторінки не обов'язково повинні розміщуватися на суміжних сторінках основної фізичної пам'яті. Для вказівки відповідності між віртуальними сторінками і сторінками основної пам'яті операційна система повинна сформувати таблицю сторінок для кожної програми і розмістити її в основній пам'яті машини. При цьому кожній сторінці програми, незалежно від того чи перебуває вона в основній пам'яті чи ні, ставиться у відповідність деякий елемент таблиці сторінок. Кожний елемент таблиці сторінок містить номер фізичної сторінки основної пам'яті і спеціальний індикатор. Одиничний стан цього індикатора свідчить про наявність цієї сторінки в основній пам'яті. Нульовий стан індикатора означає відсутність сторінки в оперативній пам'яті.
Для збільшення ефективності такого типу схем в процесорах використовується спеціальна повністю асоціативна кеш-пам'ять, яка також називається буфером перетворення адрес (TLB traнсlation-lookaside buffer). Хоча наявність TLB не міняє принципу побудови схеми сторінкової організації, з погляду захисту пам'яті, необхідно передбачити можливість очищення його при перемиканні з однієї програми на іншу.
Пошук в таблицях сторінок, розташованих в основній пам'яті, і завантаження TLB може здійснюватися або програмним способом, або спеціальними апаратними засобами. В останньому випадку для того, щоб запобігти можливості звертань призначеної для користувача програми до таблиць сторінок, з якими вона не пов'язана, передбачені спеціальні заходи. З цією метою в процесорі передбачається додатковий регістр захисту, описувач (дескриптор), що містить таблиці сторінок або базово-граничну пару. База визначає адресу початку таблиці сторінок в основній пам'яті, а межа – довжину таблиці сторінок відповідної програми. Завантаження цього регістра захисту дозволене тільки в привілейованому режимі. Для кожної програми операційна система зберігає дескриптор таблиці сторінок і встановлює його в регістр захисту процесора перед запуском відповідної програми.
Наголосимо на деяких особливостях, властивих простим схемам зі сторінковою організацією пам'яті. Найважливішої з них є те, що всі програми, які повинні безпосередньо зв'язуватися одна з одною без втручання операційної системи, повинні використовувати спільний простір віртуальних адрес. Це відноситься і до самої операційної системи, яка, взагалі кажучи, повинна працювати в режимі динамічного розподілу пам'яті. Тому в деяких системах простір віртуальних адрес користувача коротшає на розмір загальних процедур, до яких програми користувачів бажають мати доступ. Загальним процедурам повинен бути відведений певний об'єм простору віртуальних адрес всіх користувачів, щоб вони мали постійне місце в таблицях сторінок всіх користувачів. В цьому випадку для забезпечення цілісності, секретності і взаємній ізоляції програм, що виконуються, повинні бути передбачені різні режими доступу до сторінок, які реалізуються за допомогою спеціальних індикаторів доступу в елементах таблиць сторінок.
Наслідком такого використовування є значне зростання таблиць сторінок кожного користувача. Одне з рішень проблеми скорочення довжини таблиць засноване на введенні багаторівневої організації таблиць. Окремим випадком багаторівневої організації таблиць є сегментація при сторінковій організації пам'яті. Необхідність збільшення адресного простору користувача пояснюється бажанням уникнути необхідності переміщення частин програм і даних в межах адресного простору, які звичайно приводять до проблем перейменування і серйозних утруднень в розділенні загальної інформації між багатьма задачами.
Сегментація пам'яті
Інший підхід до організації пам'яті спирається на той факт, що програми звичайно розділяються на окремі області-сегменти. Кожний сегмент є окремою логічною одиницею інформації, що містить сукупність даних або програм і розташовану в адресному просторі користувача. Сегменти створюються користувачами, які можуть звертатися до них по символічному імені. В кожному сегменті встановлюється своя власна нумерація слів, починаючи з нуля.
Звичайно в подібних системах обмін інформацією між користувачами будується на базі сегментів. Тому сегменти є окремими логічними одиницями інформації, які необхідно захищати, і саме на цьому рівні вводяться різні режими доступу до сегментів. Можна виділити два основні типи сегментів: програмні сегменти і сегменти даних (сегменти стека є окремим випадком сегментів даних). Оскільки загальні програми повинні володіти властивістю повторної входимості, то з програмних сегментів допускається тільки вибірка команд і читання констант. Запис в програмні сегменти може розглядатися як незаконна і заборонятися системою. Вибірка команд з сегментів даних також може вважатися незаконною і будь-який сегмент даних може бути захищений від звертань по запису або по читанню.
Для реалізації сегментації було запропоновано декілька схем, які відрізняються деталями реалізації, але засновані на одних і тих же принципах.
У системах з сегментацією пам'яті кожне слово в адресному просторі користувача визначається віртуальною адресою, що складається з двох частин: старші розряди адреси розглядаються як номер сегменту, а молодші – як номер слова усередині сегменту. Разом із сегментацією може також використовуватися сторінкова організація пам'яті. В цьому випадку віртуальна адреса слова складається з трьох частин: старші розряди адреси визначають номер сегменту, середні – номер сторінки усередині сегменту, а молодші – номер слова всередині сторінки.
Як і в разі сторінкової організації, необхідно забезпечити перетворення віртуальної адреси на реальну фізичну адресу основної пам'яті. З цією метою для кожного