Стратегії розміщення інформації в пам’яті
Боротьба з фрагментацією
Фрагментація — наявність великої кількості несуміжних ділянок вільної основної пам’яті невеликого розміру (фрагментів). Фрагменти настільки малі, що жодна з програм, що надходить в систему, не може розміститись ні в одній з ділянок, хоча сумарний об’єм фрагментів досить великий.
Розділи, що переміщаються. Це один з методів боротьби з фрагментацією, коли всі заняті ділянки переміщуються або в сторону молодших адрес, або старших адрес, так, щоби вся вільна пам’ять створювала єдину вільну область.
Тобто ОС ще повинна час від часу копіювати вміст розділів з одного місця пам’яті в інше, коректуючи таблиці вільних і зайнятих областей. Це процедура „стискання”. Стискання може виконуватись або при кожному завершенні задачі, або тільки тоді, коли для нової задачі нема вільного розділу достатнього розміру.
В першому випадку треба меншої обчислювальної роботи при коректуванні таблиць, а в другому — не так часто виконується процедура стискання. Оскільки програми переміщуються по основній пам’яті під час свого виконання, то перетворення адрес повинно виконуватись динамічним способом.
Хоча процедура стискання і приводить до більш ефективного використання пам’яті, вона може вимагати значного часу, що часто в результаті не дає бажаних переваг.
1. Стратегія найбільш відповідного (підходящого). Завдання розміщається в тій вільній ділянці, в якій йому найбільш „тісно”, так що залишається мінімально можливий простір, що не використовується.
2. Стратегія першого відповідного. Завдання розміщується в першу ліпшу вільну ділянку основної пам’яті достатнього розмір. (Швидкість).
3. Стратегія найменш відповідного. Завдання розміщується у вільну ділянку, що має найбільш далекий розмір, тобто максимально вільну ділянку.
Третя стратегія має наступне обґрунтування. Після розміщення програми в найбільш вільну ділянку, вільна ділянка, що залишається теж буде великою і в ньому можна розмістити відносно велику нову програму.
Всі системи, що розглядалися, припускають, що програми користувача залишаються в основній пам’яті до моменту звернення.
Схема, що називається „стопінг”, не накладає такого обмеження.
Всю ОП в кожний біжучий момент часу займає одне завдання. Це завдання виконується доти, доки не вийде певний час, а потім звільнюється як пам’ять, так і ЦП для наступного завдання.
Така програма працює до того часу, доки не відбудеться одна з таких подій:
- видали запит на ввід/вивід;
- з’явиться сигнал таймера;
- програма закінчилась.
Область свопінгу для цієї програми копіюється в зовнішню пам’ять. Образ ОП для наступної програми завантажується в область свопінгу. Програма виконується до того часу, доки не відбудеться одна з подій.