Стратегії розміщення інформації в пам’яті

Боротьба з фрагментацією

Фрагментація — наявність великої кількості несуміжних ділянок вільної основної пам’яті невеликого розміру (фрагментів). Фрагменти настільки малі, що жодна з програм, що надходить в систему, не може розміститись ні в одній з ділянок, хоча сумарний об’єм фрагментів досить великий.

Розділи, що переміщаються. Це один з методів боротьби з фрагментацією, коли всі заняті ділянки переміщуються або в сторону молодших адрес, або старших адрес, так, щоби вся вільна пам’ять створювала єдину вільну область.

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

В першому випадку треба меншої обчислювальної роботи при коректуванні таблиць, а в другому — не так часто виконується процедура стискання. Оскільки програми переміщуються по основній пам’яті під час свого виконання, то перетворення адрес повинно виконуватись динамічним способом.

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

1. Стратегія найбільш відповідного (підходящого). Завдання розміщається в тій вільній ділянці, в якій йому найбільш „тісно”, так що залишається мінімально можливий простір, що не використовується.

2. Стратегія першого відповідного. Завдання розміщується в першу ліпшу вільну ділянку основної пам’яті достатнього розмір. (Швидкість).

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

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

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

Схема, що називається „стопінг”, не накладає такого обмеження.

 

 

Всю ОП в кожний біжучий момент часу займає одне завдання. Це завдання виконується доти, доки не вийде певний час, а потім звільнюється як пам’ять, так і ЦП для наступного завдання.

Така програма працює до того часу, доки не відбудеться одна з таких подій:

- видали запит на ввід/вивід;

- з’явиться сигнал таймера;

- програма закінчилась.

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