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

Сьогодні програми збільшуються в розмірах швидше, ніж пам'ять, тому керування пам'яттю комп'ютера є дуже важливим питанням. Все тому, що пам'ять комп'ютера має ієрархічну структуру: дуже швидка енергозалежна кеш-пам'ять, енергозалежна оперативна пам'ять ОЗУ (RAM) та енергонезалежний простір на жорсткому диску (вінчестері). Керування пам'яттю комп'ютера зводиться до координації операційною системою (ОС) використання всіх цих складових. Та частина операційної системи, яка відповідає за керування пам'яттю комп'ютера, тобто стежить за тим, яка її частина використовується в даний момент, виділяє пам'ять процесам і після їх завершення звільняє ресурси, керує обміном даних між ОЗП та диском називається менеджером пам'яті.

Сьогодні програми збільшуються у розмірах швидше, ніж пам'ять, тому керування пам'яттю комп'ютера є дуже важливим питанням

Існують два класи систем керування пам'яттю комп'ютера. Перші, за відсутності достатньої кількості оперативної пам'яті для одночасного зберігання всіх програм, переміщують процеси між оперативною пам'яттю комп'ютера та диском під час їх виконання, здійснюючи підкачування процесів цілком (swapping) або посторінково (paging). Другий клас систем управління пам'яттю комп'ютера зводиться до збільшення обсягу оперативної пам'яті. Наприклад, для мультимедійних систем накладаються великі вимоги на її розмір.

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

Найпростіший спосіб досягнення багатозадачності полягає у розбиття пам'яті на n, можливо, не рівних розділів. Коли завдання надходить в пам'ять, воно розташовується у вхідній черзі до найменшого розділу, але досить великому щоб вмістити це завдання, а простір, що не використовується цим процесом, в розділі зникає. При цьому до великого розділу черги майже не буває, а до маленьких розділів вибудовується багато завдань. Тому, керування пам'яттю комп'ютера у другому методі полягає у організації однієї спільної черги всім розділів. Як тільки розділ звільняється, завдання, яке знаходиться ближче до початку черги і підходить для виконання в цьому розділі, можна завантажити до нього. Щоразу після звільнення розділу відбувається пошук у черзі найбільшого для цього розділу завдання, і саме воно вибирається для обробки. Однак цей алгоритм усуває від обробки невеликі завдання. Тому завдання, яке має право бути обраним для обробки, можна пропустити не більше k разів. Коли завдання пропускається, до лічильника додається одиниця. Якщо значення лічильника дорівнює k, ігнорувати завдання більше не можна.

Оперативної пам'яті іноді виявляється недостатньо, щоб розмістити всі активні процеси, і тоді надлишок процесів доводиться зберігати на диску, а обробки переносити у пам'ять. Керування пам'яттю комп'ютера в цьому випадку залежить від доступного апаратного забезпечення. Найпростіша стратегія, звана свопінгом (swapping), полягає в тому, що кожен процес повністю переноситься в пам'ять, працює деякий час і потім повністю повертається на диск. Після чого може знову повертатися в пам'ять, маючи інше розміщення. Тому його адреси мають бути переналаштовані або програмно під час завантаження, або апаратно під час виконання програми.

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

Інструменти