Бакуменко Володимир - "Сторінковий розподіл"

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

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

Вся оперативна пам'ять машини також ділиться на частини такого ж розміру, називані фізичними сторінками (чи блоками).

Розмір сторінки звичайно вибирається рівним ступеня двійки: 512, 1024 і т.д., це дозволяє спростити механізм перетворення адрес.

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

На малюнку 1 показана схема сторінкового розподілу пам'яті.

Загруженное (1).jpg

Рис. 1. Сторінкове розподіл пам'яті

При активізації чергового процесу в спеціальний регістр процесора завантажується адреса таблиці сторінок даного процесу.

При кожному зверненні до пам'яті відбувається зчитування з таблиці сторінок інформації про віртуальну сторінці, до якої відбулося звертання. Якщо дана віртуальна сторінка знаходиться в оперативній пам'яті, то виконується перетворення ВА у фізичну. Якщо ж потрібна віртуальна сторінка в даний момент вивантажена на диск, то відбувається так зване сторінкове переривання. Процес, що переводиться в стан очікування, і активізується інший процес з черги готових. Паралельно програма обробки сторінкового переривання знаходить на диску необхідну віртуальну сторінку і намагається завантажити її в оперативну пам'ять. Якщо в пам'яті є вільна фізична сторінка, то завантаження виконується негайно, якщо ж вільних сторінок немає, то вирішується питання, яку сторінку слід вивантажити з оперативної пам'яті.

У даній ситуації може бути використано багато різних критеріїв вибору, найбільш популярні з них наступні:

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

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

Розглянемо механізм перетворення ВА у фізичний при сторінковій організації пам'яті (рисунок 2).

Віртуальний адресу при сторінковому розподілі може бути представлений у вигляді пари (p, s), де p - номер віртуальної сторінки процесу (нумерація сторінок починається з 0), а s - зсув у межах віртуальної сторінки. Враховуючи, що розмір сторінки дорівнює 2 в ступені до, зсув s може бути отримано простим відділенням k молодших розрядів у двійковій запису віртуального адреси. Решта старші розряди представляють собою двійковий запис номера сторінки p.

Загруженное (2).jpg

Рис. 2. Механізм перетворення віртуальної адреси у фізичний при сторінковій організації пам'яті