Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OS(методичка).docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
403.88 Кб
Скачать

5.3.2. Розподіл з фіксованими розділами

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

Рис. 5‑20

Можливі два варіанти організації роботи з фіксованими розділами.

· У більш примітивних системах вже на етапі компонування програми визначається, для якого з розділів вона призначена. У цьому виборі враховується розмір програми, а також, якщо це можливо передбачити, набір інших програм, які будуть працювати одночасно з даною. В ідеалі, паралельно працюючі програми повинні бути скомпоновані для різних розділів. При запуску

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

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

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

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

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

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

5.3.3. Розподіл з динамічними розділами

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

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

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