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

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

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

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

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

Мал. 2.14. Розподіл пам'яті сегментами

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

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

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

Сегментація віртуальної пам'яті

i

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

нерезидентні сегменти автоматично завантажуються в пам'ять

Немає внутрішньої

фрагментації; вищий ступінь мно-

гозадачности; великий віртуальний адресний простір;

підтримка захисту і

спільного використання

Накладні витрати із-за слож-

ности системи

управління пам'яттю

1

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