Керування пам'яттю

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Розподіл пам'яті)
Перейти до навігації Перейти до пошуку

Керування пам'яттю — різновид керування ресурсами[en], застосований щодо комп'ютерної пам'яті. Основним завданням керування пам'яттю є надання методів динамічного виділення ділянок пам'яті для програм на за їх запитом, та її звільнення для повторного використання, коли вона вже не потрібна. Це є важливим для будь-якої складної комп'ютерної системи, де може бути більше одного активного процесу, що працюють одночасно[1][2].

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

Динамічне виділення пам'яті

[ред. | ред. код]

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

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

Ручне керування пам'яттю

[ред. | ред. код]

Автоматичне керування пам'яттю

[ред. | ред. код]

Джерела

[ред. | ред. код]
  1. Detlefs, D.; Dosser, A.; Zorn, B. (June 1994). Memory allocation costs in large C and C++ programs (PDF). Software: Practice and Experience (англ.). 24 (6): 527—542. CiteSeerX 10.1.1.30.3073. doi:10.1002/spe.4380240602. S2CID 14214110.
  2. Gibson, Steve (15 серпня 1988). Tech Talk: Placing the IBM/Microsoft XMS Spec Into Perspective. InfoWorld (англ.). Архів оригіналу за 1 січня 2014. Процитовано 20 листопада 2014.

Посилання

[ред. | ред. код]