Ілюстрований самовчитель з теорії операційних систем › Сегментна та сторінкова віртуальна

Однорівнева пам'ять

І кожен уже десять років вчить ролі, про які років десять як варто забути.

Б. Гребінників

Ефективне керування робочими наборами програм користувача і, з іншого боку, ефективне кешування запитів до дисків дозволяють якщо і не приховати повністю, то значною мірою згладити відмінність у продуктивності оперативної та зовнішньої пам'яті комп'ютера. Тому відразу ж після виникнення перших машин з віртуальною пам'яттю почалися спроби сховати всі інші відмінності між цими двома типами пам'яті від програміста, реалізувавши так звану однорівневу пам'ять.

Інтерес до цієї ідеї зберігається досі. Наприклад, на сайті [dz.yandex.ru] наприкінці 2000 року була серія публікацій і досить бурхлива дискусія про переваги та недоліки "персистентних об'єктів" - об'єктів у термінах об'єктно-орієнтованого програмування, які переживають перезавантаження та вимикання живлення системи. Для зберігання таких об'єктів може використовуватися як флеш-пам'ять, так і інші форми енергонезалежної пам'яті, такі ж жорсткі диски. Власник сайту та ініціатор дискусії, Дмитро Завалішин, відстоював тезу про те, що такі об'єкти є потаємною мрією та свого роду Священним Граалом всього програмування та розвитку обчислювальної техніки.

Однорівнева пам'ять у Multix

Піонером у реалізації однорівневої пам'яті була ОС Multix фірми Honeywell. Ця система була розроблена в кінці 60-х років і зробила величезний вплив на розвиток обчислювальної техніки як прямо, так і за допомогою свого нащадка Unix. Декілька машин з цією ОС експлуатувалися і були доступні через Internet (принаймні відповідали на запитping ) ще 1997 року.

Втім, як зазначалося вище, що надається сучасними Unix-системамиmmap скоріше є документованим внутрішнім інтерфейсом завантажувача, ніж повноцінним засобом організації однорівневого доступу: робота з відображеним файлом не повністю прозора для користувача. Наприклад, зміни вмісту відображеної ОЗП та навпаки, зміни, внесені до файлу з моменту відображення, необхідно синхронізувати один з одним вручну, використовуючи системний виклик msynch. Кошти, що надаються для цієї мети Windows NT/2000/XP, прозоріші і простіші у використанні, але теж застосовуються відносно рідко.

Для того щоб зрозуміти, чи можлива повністю однорівнева пам'ять, і якщо так, то якою мірою, давайте спочатку встановимо відмінності між ОЗП і найбільш поширеним типом зовнішньої пам'яті, жорстким магнітним диском.