Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lektsiya_10.docx
Скачиваний:
5
Добавлен:
05.09.2019
Размер:
2 Mб
Скачать

10.3.4. Сторінково-сегментний розподіл

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

Як видно з назви, даний метод являє собою комбінацію сторінкового і сегментного розподілу пам'яті і, внаслідок цього, поєднує в собі переваги обох підходів. Так само як і при сегментної організації пам'яті, віртуальний адресний простір процесу розділено на сегменти. Це дозволяє визначати різні права доступу до різних частин кодів і даних програми.

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

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

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

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

Рис. 10.9. Два способи сегментації

У поле базової адреси вказується не початковий фізичну адресу сегмента, відведений йому в результаті завантаження в оперативну пам'ять, а початковий лінійний віртуальну адресу сегмента в просторі віртуальних адрес (на рис. 10.9 базові фізичні адреси позначені S1, S2, S3, а базові віртуальні адреси - fl, f2, f3).

Наявність базового віртуального адреси сегмента в дескриптор дозволяє однозначно перетворити адресу, заданий у вигляді пари (номер сегмента, зміщення в сегменті), в лінійний віртуальну адресу байта, який потім перетворюється у фізичну адресу сторінковим механізмом.

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

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

Перетворення віртуальної адреси у фізичний відбувається в два етапи (рис. 10.10):

1. На першому етапі працює механізм сегментації. Оригінальний віртуальний адресу, заданий у вигляді пари (номер сегмента, зміщення), перетворюється в лінійний віртуальну адресу. Для цього на підставі базового адреси таблиці сегментів і номера сегмента обчислюється адреса дескриптора сегмента. Аналізуються поля дескриптора і виконується перевірка можливості виконання заданої операції. Якщо доступ до сегмента дозволений, то обчислюється лінійний віртуальну адресу шляхом складання базової адреси сегмента, вилученого з дескриптора, і зсуву, заданого у вихідному віртуальному адресі.

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

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

Як видно, механізм сегментації і сторінковий механізм діють досить незалежно один від одного. Тому неважко уявити собі реалізацію сегментно-сторінкового управління пам'яттю, в якій механізм сегментації працює за вищеописаною схемою, а сторінковий механізм змінений. Він реалізує дворівневу схему, в якій віртуальний адресний простір ділиться спочатку на розділи, а вже потім на сторінки. У такому випадку перетворення віртуальної адреси у фізичний відбувається в кілька етапів. Спочатку механізм сегментації звичайним чином, використовуючи таблицю сегментів, обчислює лінійний віртуальну адресу. Потім з даного віртуального адреси вичленяються номер розділу, номер сторінки і зсув. І далі за номером розділу з таблиці розділів визначається адреса таблиці сторінок, а потім за номером віртуальної сторінки з таблиці сторінок визначається номер фізичної сторінки, до якого пристиковується смещеніе.Іменно такий підхід реалізований компанією Intel у процесорах 1386, i486 і Pentium.

Розглянемо ще одну можливу схему управління пам'яттю, засновану на комбінуванні сегментного і сторінкового механізмів. Так само як і в попередніх випадках, віртуальний простір процесу поділяється на сегменти, а кожен сегмент, в свою чергу, ділиться на віртуальні сторінки. Перша відмінність полягає в тому, що віртуальні сторінки нумеруються не в межах всього адресного простору процесу, а в межах сегмента. Віртуальний адреса в цьому випадку виражається трійкою (номер сегмента, номер сторінки, зміщення у сторінці). Завантаження процесу виконується операційною системою посторінково, при цьому частина сторінок розміщується в оперативній пам'яті, а частина - на диску. Для кожного процесу створюється власна таблиця сегментів, а для кожного сегмента - своя таблиця сторінок. Адреса таблиці сегментів завантажується в спеціальний регістр процесора активного процесу.

Таблиця сторінок містить дескриптори сторінок, вміст яких повністю аналогічно вмісту раніше описаних дескрипторів сторінок. А ось таблиця сегментів складається з дескрипторів сегментів, які замість інформації про розташування сегментів у віртуальному адресному просторі містять опис розташування таблиць сторінок у фізичній пам'яті. Це є другим істотною відмінністю даного підходу від раніше розглянутої схеми сегментно-сторінкової організації. На рис. 10.11 показана схема перетворення ВА у фізичну для даного методу.

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

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

3. До номера фізичної сторінки пристиковується молодша частина віртуального адреси - зсув.

Рис. 10.11. Ще одна схема перетворення ВА у фізичну для сегментно-сторінкової організації пам'яті

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]