Що таке управління пам’яттю?
Керування пам'яттю - це процес управління та координації пам’яті комп’ютера, присвоєння частин, відомих як блоки, різним запущеним програмам для оптимізації загальної продуктивності системи.
Це найважливіша функція операційної системи, яка управляє первинною пам'яттю. Це допомагає процесам рухатися назад і вперед між основною пам’яттю та диском виконання. Це допомагає ОС відстежувати кожне місце в пам'яті, незалежно від того, виділено воно в якийсь процес чи воно залишається вільним.
У цьому посібнику з операційної системи ви дізнаєтесь:
- Що таке управління пам’яттю?
- Навіщо використовувати управління пам’яттю?
- Методи управління пам’яттю
- Що таке обмін?
- Що таке виділення пам'яті?
- Що таке пейджинг?
- Що таке метод фрагментації?
- Що таке сегментація?
- Що таке динамічне завантаження?
- Що таке динамічне зв’язування?
- Різниця між статичним та динамічним навантаженням
- Різниця між статичним та динамічним зв’язком
Навіщо використовувати управління пам’яттю?
Ось причини використання управління пам’яттю:
- Це дозволяє перевірити, скільки пам'яті потрібно виділити процесам, які вирішують, який процесор повинен отримувати пам'ять і в який час.
- Відстежує щоразу, коли інвентар звільняється або не розподіляється. Згідно з ним оновиться статус.
- Він виділяє простір підпрограми програми.
- Крім того, переконайтеся, що ці програми не заважають один одному.
- Допомагає захистити різні процеси один від одного
- Він поміщає програми в пам'ять так, щоб пам'ять використовувалася в повній мірі.
Методи управління пам’яттю
Ось декілька найважливіших методів управління пам’яттю:
Одномісний суміжний розподіл
Це найпростіша техніка управління пам’яттю. У цьому методі всі типи пам’яті комп’ютера, окрім невеликої частини, зарезервованої для ОС, доступні для однієї програми. Наприклад, операційна система MS-DOS виділяє пам’ять таким чином. Вбудована система також працює на одному додатку.
Розділений розподіл
Він ділить первинну пам'ять на різні розділи пам'яті, що в основному є суміжними областями пам'яті. Кожен розділ зберігає всю інформацію для конкретного завдання або завдання. Цей метод полягає у віднесенні розділу до завдання під час його запуску та нерозподілу після закінчення.
Керування сторінковою пам’яттю
Цей метод розділяє основну пам’ять комп’ютера на одиниці фіксованого розміру, відомі як фрейми сторінок. Цей апарат управління апаратною пам’яттю відображає сторінки у кадри, які слід розподіляти на основі сторінок.
Сегментоване управління пам’яттю
Сегментована пам’ять - єдиний метод управління пам’яттю, який не надає програмі користувача лінійний та суміжний адресний простір.
Сегменти потребують апаратної підтримки у вигляді таблиці сегментів. Він містить фізичну адресу розділу в пам'яті, розмір та інші дані, такі як біти захисту та статус.
Що таке обмін?
Заміна - це метод, при якому процес слід тимчасово замінювати з основної пам'яті на резервне сховище. Пізніше його буде повернено в пам’ять для подальшого виконання.
Магазин резервних копій - це жорсткий диск або інший додатковий запам'ятовуючий пристрій, який повинен бути достатньо великим, щоб вмістити копії всіх зображень пам'яті для всіх користувачів. Він також може запропонувати прямий доступ до цих зображень пам'яті.
Переваги обміну
Ось основні переваги / плюси обміну:
- Він пропонує вищий ступінь мультипрограмування.
- Дозволяє динамічне переміщення. Наприклад, якщо використовується прив'язка адреси під час виконання, то процеси можна міняти місцями в різних місцях. В іншому випадку, у разі прив'язки часу компіляції та завантаження, процеси слід переміщати туди ж.
- Це допомагає краще використовувати пам’ять.
- Мінімальна втрата часу процесора на завершення, тому його можна легко застосувати до методу планування на основі пріоритетів для покращення його продуктивності.
Що таке виділення пам'яті?
Виділення пам’яті - це процес, за допомогою якого комп’ютерним програмам призначається пам’ять або простір.
Тут основна пам’ять розділена на два типи розділів
- Мало пам'яті - операційна система знаходиться в цьому типі пам'яті.
- Висока пам’ять - користувацькі процеси зберігаються у великій пам’яті.
Виділення розділів
Пам'ять поділена на різні блоки або розділи. Кожен процес розподіляється відповідно до вимог. Розподіл розділів - ідеальний метод для уникнення внутрішньої фрагментації.
Нижче наведені різні схеми розподілу розділів:
- Перша відповідність : У цьому типі відповідає виділений розділ, який є першим достатнім блоком з початку основної пам'яті.
- Найкраще підходить: він розподіляє процес до розділу, який є першим найменшим розділом серед вільних розділів.
- Найгірше підходить: він розподіляє процес за розділом, який є найбільшим достатньо вільним розділом в основній пам’яті.
- Next Fit: Він здебільшого схожий на перший Fit, але цей Fit шукає перший достатній розділ з останньої точки розподілу.
Що таке пейджинг?
Підкачка - це механізм зберігання, який дозволяє ОС отримувати процеси із вторинного сховища в основну пам’ять у вигляді сторінок. У методі підкачки основна пам’ять ділиться на невеликі блоки фізичної пам’яті фіксованого розміру, які називаються кадрами. Розмір кадру повинен залишатися таким самим, як розмір сторінки, щоб максимально використовувати основну пам'ять та уникати зовнішньої фрагментації. Підкачка використовується для швидшого доступу до даних, і це логічне поняття.
Що таке фрагментація?
Процеси зберігаються та видаляються з пам'яті, що створює вільний простір у пам'яті, який занадто малий для використання іншими процесами.
Після того, як процеси, які не можуть виділити в блоки пам'яті, оскільки їх невеликий розмір і блоки пам'яті завжди залишаються невикористаними, називається фрагментацією. Цей тип проблем трапляється під час динамічної системи розподілу пам’яті, коли вільних блоків досить мало, тому вона не може виконати жодного запиту.
Два типи методів фрагментації:
- Зовнішня фрагментація
- Внутрішня фрагментація
- Зовнішню фрагментацію можна зменшити, переставляючи вміст пам'яті, щоб розмістити всю вільну пам'ять разом в одному блоці.
- Внутрішню фрагментацію можна зменшити, призначивши найменший розділ, який все ще достатньо хороший для проведення всього процесу.
Що таке сегментація?
Метод сегментації працює майже так само, як пейджинговий. Єдина відмінність між ними полягає в тому, що сегменти мають змінну довжину, тоді як у методі підкачки сторінки завжди мають фіксований розмір.
Сегмент програми включає основну функцію програми, структури даних, функції утиліти тощо. В ОС ведеться таблиця карт сегментів для всіх процесів. Він також включає перелік вільних блоків пам'яті, а також їх розмір, номери сегментів та розташування пам'яті в основній або віртуальній пам'яті.
Що таке динамічне завантаження?
Динамічне завантаження - це процедура програми, яка не завантажується, поки програма не викликає її. Усі підпрограми повинні міститися на диску у переміщуваному форматі завантаження. Основна програма буде завантажена в пам'ять і буде виконана. Динамічне завантаження також забезпечує краще використання пам'яті.
Що таке динамічне зв’язування?
Зв’язування - це метод, який допомагає ОС збирати та об’єднувати різні модулі коду та даних в один виконуваний файл. Файл можна завантажити в пам'ять і виконати. ОС може зв’язати бібліотеки системного рівня в програму, яка поєднує бібліотеки під час завантаження. У методі динамічного зв'язування бібліотеки пов'язані під час виконання, тому розмір програмного коду може залишатися невеликим.
Різниця між статичним та динамічним навантаженням
Статичне завантаження | Динамічне завантаження |
Статичне завантаження використовується, коли ви хочете завантажити програму статично. Тоді під час компіляції вся програма буде зв’язана та скомпільована без необхідності будь-якого зовнішнього модуля чи програми. | У програмі, що динамічно завантажується, посилання будуть надані, а завантаження буде здійснено під час виконання. |
Під час завантаження вся програма завантажується в пам’ять і починає її виконання. | Процедури бібліотеки завантажуються в пам'ять лише тоді, коли вони потрібні в програмі. |
Різниця між статичним та динамічним зв’язком
Ось основна відмінність між статичним та динамічним зв’язками:
Статичне зв’язування | Динамічне зв’язування |
Статичне зв’язування використовується для об’єднання всіх інших модулів, які потрібні програмі, в єдиний виконуваний код. Це допомагає ОС запобігти будь-якій залежності від середовища виконання. | Коли використовується динамічне зв’язування, йому не потрібно пов’язувати фактичний модуль або бібліотеку з програмою. Замість нього використовуйте посилання на динамічний модуль, наданий під час компіляції та посилання. |
Короткий зміст:
- Управління пам'яттю - це процес управління та координації пам’яті комп’ютера, присвоєння частин, званих блоками, різним запущеним програмам для оптимізації загальної продуктивності системи.
- Це дозволяє перевірити, скільки пам'яті потрібно виділити процесам, які вирішують, який процесор повинен отримувати пам'ять і в який час.
- У системі Single Contiguous Allocation всі типи пам’яті комп’ютера, крім невеликої частини, зарезервованої для ОС, доступні для однієї програми
- Метод розподіленого розподілу розділяє первинну пам'ять на різні розділи пам'яті, що в основному є суміжними областями пам'яті
- Метод пейджингової пам'яті ділить основну пам’ять комп’ютера на одиниці фіксованого розміру, відомі як кадри сторінок
- Сегментована пам’ять - єдиний метод управління пам’яттю, який не надає програмі користувача лінійний та суміжний адресний простір.
- Заміна - це метод, при якому процес слід тимчасово замінювати з основної пам'яті на резервне сховище. Пізніше його буде повернено в пам’ять для подальшого виконання.
- Виділення пам’яті - це процес, за допомогою якого комп’ютерним програмам призначається пам’ять або простір.
- Підкачка - це механізм зберігання, який дозволяє ОС отримувати процеси із вторинного сховища в основну пам’ять у вигляді сторінок.
- Фрагментація відноситься до стану диска, при якому файли поділяються на частини, розкидані навколо диска.
- Метод сегментації працює майже так само, як пейджинговий. Єдина відмінність між ними полягає в тому, що сегменти мають змінну довжину, тоді як у методі підкачки сторінки завжди мають фіксований розмір.
- Динамічне завантаження - це процедура програми, яка не завантажується, поки програма не викликає її.
- Зв’язування - це метод, який допомагає ОС збирати та об’єднувати різні модулі коду та даних в один виконуваний файл.