Сторінково-сегментне розподіл
Як видно з назви, даний метод є комбінацією сторінкового і сегментного розподілу пам'яті і, внаслідок цього, поєднує в собі достоїнства обох підходів. Віртуальний простір процесу ділиться на сегменти, а кожен сегмент у свою чергу ділиться на віртуальні сторінки, які нумеруються в межах сегменту. Оперативна пам'ять ділиться на фізичні сторінки. Завантаження процесу виконується операційною системою посторінковий, при цьому частка сторінок розміщується в оперативній пам'яті, а частка на диску. Для кожного сегменту створюється своя таблиця сторінок, структура якої повністю збігається із структурою таблиці сторінок, використовуваної при сторінковому розподілі. Для кожного процесу створюється таблиця сегментів, в якій указуються адреси таблиць сторінок для всіх сегментів даного процесу. Адреса таблиці сегментів завантажується в спеціальний регістр процесора, коли активізується відповідний процес.
Свопінг
Різновидом віртуальної пам'яті є свопінг.
На малюнку 2.16 показаний графік залежності коефіцієнта завантаження процесора залежно від числа одночасно виконуваних процесів і частки часу, що проводиться цими процесами в стані очікування введення-виводу.
Мал. 2.16. Залежність завантаження процесора від числа завдань і інтенсивності введення-виводу
З малюнка видно, що для завантаження процесора на 90% вистачає всього трьох рахункових завдань. Проте для того, щоб забезпечити таке ж завантаження інтерактивними завданнями, що виконують інтенсивне уведення-виведення, буде потрібно десятки таких завдань. Необхідною умовою для виконання завдання є завантаження її в оперативну пам'ять, об'єм якої обмежений. У цих умовах був запропонований метод організації обчислювального процесу, званий свопінгом. Відповідно до цього методу деякі процеси (що зазвичай знаходяться в стані очікування) тимчасово вивантажуються на диск. Планувальник операційної системи не виключає їх зі свого розгляду, і при настанні умов активізації деякого процесу, що знаходиться в області свопінгу на диску, цей процес переміщається в оперативну пам'ять. Якщо вільного місця в оперативній пам'яті не вистачає, то вивантажується інший процес.
При свопінгу, на відміну від методів реалізації віртуальної пам'яті, що розгледіли раніше, процес переміщається між пам'яттю і диском цілком, тобто протягом деякого часу процес може бути повністю відсутнім в оперативній пам'яті. Існують різні алгоритми вибору процесів на завантаження і вивантаження, а також різні способи виділення оперативній і дисковій пам'яті завантажуваному процесу.
Ієрархія пристроїв, що запам'ятовують. Принцип кешування даних
Пам'ять обчислювальної машини є ієрархією пристроїв (внутрішні регістри процесора, різні типи надоперативної і оперативної пам'яті, диски, стрічки), що запам'ятовують, відрізняються середнім часом доступу і вартістю зберігання даних з розрахунку на один біт (малюнок 2.17). Користувачеві хотілося б мати і недорогу і швидку пам'ять. Кеш-пам'ять представляє деяке компромісне вирішення цієї проблеми.
Мал. 2.17. Ієрархія ЗУ
Кеш-пам'ять - це спосіб організації спільного функціонування двох типів пристроїв, що запам'ятовують, відрізняються часом доступу і вартістю зберігання даних, який дозволяє зменшити середній час доступу до даних за рахунок динамічного копіювання в "швидке" ЗУ найбільш часто використовуваній інформації з "повільного" ЗУ.
Кеш-пам'яттю часто називають не лише спосіб організації роботи двох типів пристроїв, що запам'ятовують, але і один з пристроїв - "швидке" ЗУ. Воно стоїть дорожче і, як правило, має порівняно невеликий об'єм. Поважно, що механізм кеш-пам'яті є прозорим для користувача, який не повинен повідомляти ніякої інформації про інтенсивність використання даних і не повинен ніяк брати участь в переміщенні даних із ЗУ одного типа в ЗУ іншого типа, все це робиться автоматично системними засобами.
Розгледимо окремий випадок використання кеш-пам'яті для зменшення середнього часу доступу до даних, що зберігаються в оперативній пам'яті. Для цього між процесором і оперативною пам'яттю поміщається швидке ЗУ, зване просто кеш-пам'яттю (малюнок 2.18). Як таке може бути використана, наприклад, асоціативна пам'ять. Вмістом кеш-пам'яті є сукупність записів про всі завантажені в неї елементи даних. Кожен запис про елемент даних включає адресу, яку цей елемент даних має в оперативній пам'яті, і інформацію, що управляє: ознака модифікації і ознака звернення до даних за деякий останній період часу.
Мал. 2.18. Кеш-пам'ять
У системах, оснащених кеш-пам'яттю, кожен запит до оперативної пам'яті виконується відповідно до наступного алгоритму:
Є видимим вміст кеш-пам'яті з метою визначення, чи не знаходяться потрібні дані в кеш-пам'яті; кеш-пам'ять не є такою, що адресується, тому пошук потрібних даних здійснюється по вмісту - значенню поля "адреса в оперативній пам'яті", узятому із запиту.
Якщо дані виявляються в кеш-пам'яті, то вони прочитуються з неї, і результат передається в процесор.
Якщо потрібних даних немає, то вони разом зі своєю адресою копіюються з оперативної пам'яті в кеш-пам'ять, і результат виконання запиту передається в процесор. При копіюванні даних може опинитися, що в кеш-пам'яті немає вільного місця, тоді вибираються дані, до яких в останній період було менше всього звернень, для витіснення з кеш-пам'яті. Якщо дані, що витісняються, були модифіковані за час знаходження в кеш-пам'яті, то вони переписуються в оперативну пам'ять. Якщо ж ці дані не були модифіковані, то їх місце в кеш-пам'яті оголошується вільним.
На практиці в кеш-пам'ять прочитується не один елемент даних, до якого сталося звернення, а цілий блок даних, це збільшує вірогідність так званого "попадання в кеш", тобто знаходження потрібних даних в кеш-пам'яті.
Покажемо, як середній час доступу до даних залежить від вірогідності попадання в кеш. Хай є основне що запам'ятовують пристрій з середнім часом доступу до даних t1 і кеш-пам'ять, що має час доступу t2, очевидно, що t2<t1. Позначимо через t середній час доступу до даних в системі з кеш-пам'яттю, а через p -вероятность попадання в кеш. По формулі повної вірогідності маємо:
t = t1((1 - p) + t2(p
З неї видно, що середній час доступу до даних в системі з кеш-пам'яттю лінійно залежить від вірогідності попадання в кеш і змінюється від середнього часу доступу в основне ЗУ (при р=0) до середнього часу доступу безпосередньо в кеш-пам'ять (при р=1).
У реальних системах вірогідність попадання в кеш складає приблизно 0,9. Високе значення вірогідності знаходження даних в кеш-пам'яті пов'язане з наявністю біля даних об'єктивних властивостей: просторовій і тимчасовій локальності.
Просторова локальність. Якщо сталося звернення за деякою адресою, то з високим ступенем вірогідності найближчим часом станеться звернення до сусідніх адрес.
Тимчасова локальність. Якщо сталося звернення за деякою адресою, то наступне звернення за цією ж адресою з великою вірогідністю станеться найближчим часом.
Всі попередні міркування справедливі і для інших пар пристроїв, що запам'ятовують, наприклад, для оперативної пам'яті і зовнішньої пам'яті. В цьому випадку зменшується середній час доступу до даних, розташованих на диску, і роль кеш-пам'яті виконує буфер в оперативній пам'яті.
