Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Організація памяті. .docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
254 Кб
Скачать
☆

Динамічний розподіл. Свопінг

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

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

Вивантажений процес може бути повернутий у той же самий адресний простір або в інше. Це обмеження диктується методом зв'язування. Для схеми зв'язування на етапі виконання можна завантажити процес в інше місце пам'яті.

Рис. 8.6. Динаміка розподілу пам'яті між процесами (сірим кольором показана не використовувана пам'ять)

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

Схема зі змінними розділами

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

У який розділ поміщати процес? Найпоширеніші три стратегії.

- Стратегія першого підходящі (First fit). Процес міститься в перший підходящий по розмірі розділ. •

- Стратегія найбільш підходящого (Best fit). Процес міститься в той розділ, де після його завантаження залишиться найменше вільного місця.

- Стратегія найменш підходящого (Worst fit). При приміщенні в найбільший розділ у ньому залишається досить місця для можливого розміщення ще одного процесу.

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

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

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

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

Статистичний аналіз показує, що пропадає в середньому 1/3 пам'яті! Це відоме правило 50% (дві сусідніх вільних ділянки на відміну від двох сусідніх процесів можуть бути об'єднані).

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