Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб4.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
269 Кб
Скачать
☆

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

Віртуальний адресний простір процесу ділиться на частині — сегменти.

Їхній розмір визначається вмістом. Ділення віртуального адресного простору на сегменти здійснюється компілятором на основі вказівок програміста або за замовчуванням, на основі прийнятих у системі угод. Максимальний розмір сегмента визначається розрядністю віртуальної адреси, наприклад при 32-розрядній організації процесора він дорівнює 4 Гбайт. При цьому максимально можливий віртуальний адресний простір процесу являє собою набір з N віртуальних сегментів, кожен розміром по 4 Гбайт. У кожному сегменті віртуальні адреси перебувають у діапазоні від 0000000016 до FFFFFFFF16.

Віртуальна адреса задається парою чисел: номером сегмента й лінійною віртуальною адресою у сегменті.

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

Система створює таблицю сегментів процесу (аналогічну таблиці сторінок), у якій для кожного сегмента вказується:

  • базова фізична адреса сегмента в оперативній пам'яті;

  • розмір сегмента;

  • правила доступу до сегмента;

  • ознаки модифікації, присутності й звертання до даного сегмента, а також деяка інша інформація

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

Звідси випливає схема перетворення віртуальних адрес у фізичні.

Логічна адреса

Номер сегменту s

Зміщення всередині сегменту d

Таблиця дескрипторів

А трибути

А дреса початку сегмента

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

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

Можлива наступна схема перетворення віртуальної адреси у фізичну.

Для кожного процесу ОС створює окрему таблицю сегментів, де утримуються описувачі всіх сегментів процесу. Опис сегмента включає призначені йому права доступу й інші характеристики, подібні тим, які містяться в описувачах сегментів при сегментній організації пам’яті. Однак є відмінності. У поле базової адреси вказується не початкова фізична адреса сегмента, а початкова лінійна віртуальна адреса сегмента в просторі віртуальних адрес. Його наявність дозволяє однозначно перетворити адресу, задану парою (g, s) у лінійну віртуальну адресу байта, що потім перетвориться у фізичну адресу сторінковим механізмом. Розподіл загального лінійного віртуального адресного простору процесу й фізичної пам’яті на сторінки здійснюється так само, як це робиться при сторінковій організації пам’яті.

Вхідна віртуальна адреса

Номер сегменту g

Зміщення в сегменті s

Таблиця сегментів

процесу

Дескриптор сегменту

Базова Перший

віртуальна етап

адреса сегмента

Лінійна

віртуальна

адреса

Номер віртуальної сторінки

Зміщення в сторінці

Регістр процесора

Адреса таблиці сегментів

Таблиця сторінок

процесу

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