Управління пам'яттю в ОС: суміжна, свопінгping, Фрагментація
⚡ Розумний підсумок
Керування пам'яттю — це процес операційної системи, який контролює та координує пам'ять комп'ютера, призначаючи блоки запущеним програмам для оптимізації продуктивності. tracзберігає кожну комірку пам'яті, переміщує процеси між основною пам'яттю та диском і захищає процеси один від одного.

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

