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

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

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