- •Лабораторна робота № 4 Організація і управління пам’яттю
- •Теоретичні відомості
- •Алгоритми розподілу пам'яті
- •Розподіл пам'яті фіксованими розділами
- •Розподіл пам'яті динамічними розділами
- •Переміщувані розділи
- •Сторінковий розподіл
- •Віртуальна адреса
- •Фізична адреса
- •Сегментний розподіл
- •Логічна адреса
- •Фізична адреса Сегментно-сторінковий розподіл
- •Дескриптор сторінки
- •Варіанти завдань (алгоритмів):
Сегментний розподіл
Віртуальний адресний простір процесу ділиться на частині — сегменти.
Їхній розмір визначається вмістом. Ділення віртуального адресного простору на сегменти здійснюється компілятором на основі вказівок програміста або за замовчуванням, на основі прийнятих у системі угод. Максимальний розмір сегмента визначається розрядністю віртуальної адреси, наприклад при 32-розрядній організації процесора він дорівнює 4 Гбайт. При цьому максимально можливий віртуальний адресний простір процесу являє собою набір з N віртуальних сегментів, кожен розміром по 4 Гбайт. У кожному сегменті віртуальні адреси перебувають у діапазоні від 0000000016 до FFFFFFFF16.
Віртуальна адреса задається парою чисел: номером сегмента й лінійною віртуальною адресою у сегменті.
При завантаженні процесу в оперативну пам’ять записується тільки частина його сегментів, повна копія віртуального адресного простору перебуває в дисковій пам’яті. Для кожного сегмента ОС підшукує безперервну ділянку вільної пам’яті достатнього розміру. Суміжні у віртуальній пам’яті сегменти одного процесу можуть займати в оперативній пам’яті несуміжні ділянки. Якщо потрібний сегмент під час звертання відсутній у пам’яті, то відбувається переривання. ОС припиняє активний процес, запускає на виконання наступний процес із черги, а паралельно організує завантаження потрібного сегмента. При відсутності в пам’яті місця ОС вибирає сегмент на вивантаження.
Система створює таблицю сегментів процесу (аналогічну таблиці сторінок), у якій для кожного сегмента вказується:
базова фізична адреса сегмента в оперативній пам'яті;
розмір сегмента;
правила доступу до сегмента;
ознаки модифікації, присутності й звертання до даного сегмента, а також деяка інша інформація
Сегмент може в загальному випадку розташовуватися у фізичній пам’яті, починаючи з будь-якої адреси. Отже, для визначення місця розташування в пам'яті необхідно задавати його повну початкову фізичну адресу.
Звідси випливає схема перетворення віртуальних адрес у фізичні.
Логічна адреса
Номер
сегменту s
Зміщення
всередині сегменту d
Таблиця
дескрипторів
-
А
трибутиА
дреса
початку сегмента
Фізична адреса Сегментно-сторінковий розподіл
Тут, як і при сегментній організації пам’яті, віртуальний адресний простір процесу розділений на сегменти. Це дозволяє визначати різні права доступу до різних даних. Переміщення даних між пам’яттю й диском здійснюється не сегментами, а сторінками. Для цього кожен сегмент і фізична пам'ять діляться на сторінки однакового розміру, що дозволяє мінімізувати фрагментацію.
Можлива наступна схема перетворення віртуальної адреси у фізичну.
Для кожного процесу ОС створює окрему таблицю сегментів, де утримуються описувачі всіх сегментів процесу. Опис сегмента включає призначені йому права доступу й інші характеристики, подібні тим, які містяться в описувачах сегментів при сегментній організації пам’яті. Однак є відмінності. У поле базової адреси вказується не початкова фізична адреса сегмента, а початкова лінійна віртуальна адреса сегмента в просторі віртуальних адрес. Його наявність дозволяє однозначно перетворити адресу, задану парою (g, s) у лінійну віртуальну адресу байта, що потім перетвориться у фізичну адресу сторінковим механізмом. Розподіл загального лінійного віртуального адресного простору процесу й фізичної пам’яті на сторінки здійснюється так само, як це робиться при сторінковій організації пам’яті.
Вхідна віртуальна адреса
Номер
сегменту g
Зміщення
в сегменті s
Таблиця сегментів
процесу
Дескриптор сегменту
віртуальна етап
адреса сегмента
Лінійна
віртуальна
адреса
Номер віртуальної
сторінки
Зміщення в сторінці
Регістр процесора
Адреса таблиці
сегментів
Таблиця сторінок
процесу
