Віртуальна пам'ять в ОС: що таке, сторінка за запитом, переваги
⚡ Розумний підсумок
Віртуальна пам'ять — це механізм зберігання даних, який створює ілюзію великої основної пам'яті, обробляючи частину вторинної пам'яті як оперативну пам'ять. Він дозволяє виконувати процеси, більші за фізичну пам'ять, і реалізується за допомогою сторінкового підкачування за вимогою.
Що таке віртуальна пам'ять?
Віртуальна пам'ять — це механізм зберігання, який створює у користувача ілюзію дуже великої основної пам'яті. Це досягається шляхом обробки частини вторинної пам'яті як основної. У віртуальній пам'яті користувач може зберігати процеси, розмір яких більший, ніж доступна основна пам'ять.
Тому замість того, щоб завантажувати один довгий процес в основну пам’ять, ОС завантажує різні частини більш ніж одного процесу в основну пам’ять. Віртуальна пам'ять здебільшого реалізується за допомогою сторінок за вимогою та сегментації за вимогою.
Навіщо потрібна віртуальна пам'ять?
Ось причини використання віртуальної пам'яті:
- Щоразу, коли на вашому комп'ютері немає місця у фізичній пам'яті, він записує те, що йому потрібно запам'ятати, на жорсткий диск у файлі підкачки як віртуальну пам'ять.
- Якщо комп'ютер працює Windows потрібно більше пам'яті/оперативної пам'яті, ніж встановлено в системі, для цієї мети використовується невелика частина жорсткого диска.
Як працює віртуальна пам'ять?
У сучасному світі віртуальна пам'ять стала досить поширеною. Вона використовується щоразу, коли потрібно завантажити деякі сторінки в основну пам'ять для виконання, а пам'ять для такої кількості сторінок недоступна.
Отже, в такому випадку, замість того, щоб запобігати потраплянню сторінок до основної пам'яті, ОС шукає простір оперативної пам'яті, який мінімально використовується останнім часом або на який не посилаються, і переміщує його у вторинну пам'ять, щоб звільнити місце для нових сторінок в основній пам'яті.
Давайте розберемося управління віртуальною пам'яттю за допомогою одного прикладу.
Наприклад
Припустимо, що ОС потребує 300 МБ пам'яті для зберігання всіх запущених програм. Однак наразі в оперативній пам'яті доступно лише 50 МБ фізичної пам'яті.
- Потім ОС налаштує 250 МБ віртуальної пам'яті та використовуватиме програму під назвою Virtual Memory Manager (VMM) для керування цими 250 МБ.
- Отже, у цьому випадку VMM створить на жорсткому диску файл розміром 250 МБ для зберігання необхідної додаткової пам'яті.
- Тепер ОС звертатиметься до пам'яті так, ніби вона враховує 300 МБ реальної пам'яті, що зберігається в оперативній пам'яті, навіть якщо доступно лише 50 МБ місця.
- Завдання VMM полягає в управлінні 300 МБ пам'яті, навіть якщо доступно лише 50 МБ реального простору пам'яті.
Що таке пейджинг за запитом?
Механізм пейджінгу за запитом дуже схожий на a пейджингова система з обміномping, де процеси зберігаються у вторинній пам'яті, а сторінки завантажуються лише на вимогу, а не заздалегідь.
Отже, коли відбувається перемикання контексту, ОС ніколи не копіює жодної сторінки старої програми з диска або жодної сторінки нової програми в основну пам'ять. Натомість вона почне виконувати нову програму після завантаження першої сторінки та вибере сторінки програми, на які посилається.
Під час виконання програми, якщо вона посилається на сторінку, яка може бути недоступною в основній пам'яті через її вивантаження, процесор розглядає це як недійсне посилання на пам'ять. Це відбувається тому, що помилка сторінки передає керування назад від програми до ОС, яка вимагає зберегти сторінку назад у пам'ять.
Види методів заміни сторінок
Ось деякі важливі методи заміни сторінок:
- FIFO
- Оптимальний алгоритм
- Заміна сторінки LRU
Заміна сторінки FIFO
FIFO (First-in-first-out) — простий метод реалізації. У цьому методі пам’ять вибирає сторінку для заміни, яка була у віртуальній адресі пам’яті найдовше.
Функції
- Щоразу, коли завантажується нова сторінка, видаляється та, яка найдовше перебувала в пам'яті. Тому легко вирішити, яку сторінку видалити, оскільки її ідентифікаційний номер завжди знаходиться на початку стеку FIFO.
- Найстаріша сторінка в основній пам'яті - це та, яку слід вибрати для заміни першою.
Оптимальний алгоритм
Оптимальний метод заміни сторінки вибирає ту сторінку для заміни, для якої час до наступного посилання є найбільшим.
Функції
- Оптимальний алгоритм призводить до найменшої кількості помилок сторінок. Цей алгоритм складно реалізувати.
- Оптимальний алгоритм заміни сторінок має найнижчий рівень збоїв сторінок серед усіх алгоритмів. Такий алгоритм існує і його слід називати MIN або OPT.
- Замінити сторінку, яка навряд чи використовуватиметься протягом тривалого періоду часу. Вона використовує лише той час, коли сторінку потрібно використовувати.
Заміна сторінки LRU
Повна форма LRU – це сторінка, що найменше використовувалася (Least Recently Used Page). Цей метод допомагає ОС знаходити використання сторінки протягом короткого періоду часу. Цей алгоритм слід реалізувати, пов’язавши лічильник з кожною сторінкою.
Як це працює?
- Сторінка, яка найдовше не використовувалася в основній пам'яті, буде обрана для заміни.
- Легко реалізувати, вести список, замінювати сторінки, дивлячись у минуле.
Функції
- Метод заміни LRU має найбільшу кількість. Цей лічильник також називається регістром старіння, який визначає вік та кількість посилань на пов'язані з ними сторінки.
- Сторінку, яка найдовше не використовувалася в основній пам'яті, слід вибрати для заміни.
- Він також зберігає список і замінює сторінки, дивлячись у минуле.
Частота помилок
Коефіцієнт відмов – це частота, з якою виходить з ладу спроектована система або компонент. Він виражається в кількості відмов за одиницю часу. Позначається грецькою літерою λ (лямбда).
Переваги віртуальної пам'яті
Ось переваги/плюси використання віртуальної пам'яті:
- Віртуальна пам'ять допомагає збільшити швидкість, коли для виконання програми потрібен лише певний сегмент програми.
- Це дуже корисно для реалізації мультипрограмного середовища.
- Це дозволяє запускати більше програм одночасно.
- Це допомагає вам вмістити багато великих програм у менші програми.
- Загальні дані або код можуть використовуватися між пам’яттю.
- Процес може стати навіть більшим, ніж уся фізична пам'ять.
- Дані/код слід зчитувати з диска за потреби.
- Код можна розмістити будь-де у фізичній пам'яті без необхідності переміщення.
- Більше процесів має зберігатися в основній пам’яті, що підвищує ефективність використання ЦП.
- Кожна сторінка зберігається на диску, доки вона не знадобиться, після чого її видаляють.
- Це дозволяє одночасно запускати більше програм.
- Спеціального обмеження на ступінь мультипрограмування немає.
- Слід писати великі програми, оскільки доступний віртуальний адресний простір більший порівняно з фізичною пам'яттю.
Недоліки віртуальної пам'яті
Ось недоліки/протипоказання використання віртуальної пам'яті:
- Програми можуть працювати повільніше, якщо система використовує віртуальну пам’ять.
- Ймовірно, перемикання між програмами займає більше часу.
- Він пропонує менше місця на жорсткому диску для вашого використання.
- Це знижує стабільність системи.
- Це дозволяє запускати більші програми в системах, які не пропонують достатньо фізичної оперативної пам'яті для їх запуску.
- Він не пропонує такої ж продуктивності, як оперативна пам'ять.
- Це негативно впливає на загальну продуктивність системи.
- Він займає місце для зберігання, яке можна було б використовувати для довгострокового зберігання даних.


