Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+страничная память.doc
Скачиваний:
3
Добавлен:
11.12.2018
Размер:
437.76 Кб
Скачать

Сегментний розподіл

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

Наприклад:

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

Віртуальний адресний простір процесу поділяється на сегменти (рис.16), розмір яких визначається програмістом.

Рис. 16. Сегментний розподіл пам'яті

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

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

Недоліком даного методу розподілу пам'яті є фрагментація на рівні сегментів і більш повільне в порівнянні зі сторінковою організацією визначення фізичної адреси.

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

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