Виртуална памет в OS: какво е, пейджинг при поискване, предимства
⚡ Умно обобщение
Виртуалната памет е механизъм за съхранение, който дава на потребителя илюзията за голяма основна памет, като третира част от вторичната памет като RAM. Той позволява изпълнението на процеси, по-големи от физическата памет, и се реализира с пейджинг по заявка.

Какво е виртуална памет?
Виртуална памет е механизъм за съхранение, който предлага на потребителя илюзията, че разполага с много голяма основна памет. Това се постига чрез третиране на част от вторичната памет като основна памет. Във виртуалната памет потребителят може да съхранява процеси с по-голям размер от наличната основна памет.
Следователно, вместо да зарежда един дълъг процес в основната памет, ОС зарежда различните части на повече от един процес в основната памет. Виртуалната памет се реализира най-вече с страниране при поискване и сегментиране при търсене.
Защо се нуждаем от виртуална памет?
Ето са причините за използване на виртуална памет:
- Винаги, когато компютърът ви няма място във физическата памет, той записва това, което трябва да запомни, на твърдия диск в swap файл като виртуална памет.
- Ако работещ компютър Windows изисква повече памет/RAM, отколкото е инсталирана в системата, за тази цел се използва малка част от твърдия диск.
Как работи виртуалната памет?
В съвременния свят виртуалната памет е станала доста разпространена в наши дни. Тя се използва винаги, когато е необходимо да се заредят някои страници в основната памет за изпълнение, а паметта не е налична за този брой страници.
Така че, в този случай, вместо да предотвратява навлизането на страници в основната памет, операционната система търси RAM пространството, което е минимално използвано напоследък или което не е препращано, и го премества във вторичната памет, за да освободи място за новите страници в основната памет.
Нека разберем управление на виртуална памет с помощта на един пример.
Например
Да предположим, че една операционна система изисква 300 MB памет, за да съхранява всички работещи програми. В момента обаче има само 50 MB налична физическа памет, съхранена в RAM паметта.
- След това операционната система ще настрои 250 MB виртуална памет и ще използва програма, наречена Virtual Memory Manager (VMM), за да управлява тези 250 MB.
- Така че, в този случай, VMM ще създаде файл на твърдия диск с размер 250 MB, за да съхранява необходимата допълнителна памет.
- Операционната система вече ще адресира паметта, сякаш разглежда 300 MB реална памет, съхранена в RAM, дори ако е налично само 50 MB пространство.
- Задачата на VMM е да управлява 300 MB памет, дори ако е налично само 50 MB реално пространство в паметта.
Какво е пейджинг при поискване?
Механизмът за пейджинг при поискване е много подобен на a система за пейджинг със суапping, където процесите се съхраняват във вторичната памет, а страниците се зареждат само при поискване, а не предварително.
Така че, когато се случи превключване на контекста, операционната система никога не копира нито една от страниците на старата програма от диска, нито която и да е от страниците на новата програма в основната памет. Вместо това, тя ще започне да изпълнява новата програма след зареждане на първата страница и ще извлече страниците на програмата, към които е насочена.
По време на изпълнението на програмата, ако тя се обърне към страница, която може да не е налична в основната памет, защото е била разменена, процесорът я счита за невалидна препратка към паметта. Това е така, защото грешката на страницата прехвърля контрола обратно от програмата към операционната система, която изисква да съхрани страницата обратно в паметта.
Видове методи за подмяна на страници
Ето някои важни методи за подмяна на страници:
- FIFO
- Оптимален алгоритъм
- Замяна на LRU страница
Подмяна на FIFO страница
FIFO (First-in-first-out) е прост метод за внедряване. При този метод паметта избира страницата за замяна, която е била във виртуалния адрес на паметта най-дълго време.
Характеристики:
- Всеки път, когато се зареди нова страница, страницата, която е била в паметта най-дълго, се премахва. Така че е лесно да се реши коя страница да се премахне, тъй като нейният идентификационен номер винаги е в началото на FIFO стека.
- Най-старата страница в основната памет е тази, която трябва да бъде избрана първа за замяна.
Оптимален алгоритъм
Оптималният метод за подмяна на страница избира тази страница за подмяна, за която времето до следващото препращане е най-дълго.
Характеристики:
- Оптималният алгоритъм води до най-малък брой грешки в страниците. Този алгоритъм е труден за изпълнение.
- Оптималният алгоритъм за заместване на страници има най-ниския процент на грешки при прекратяване на търсенето от всички алгоритми. Този алгоритъм съществува и би трябвало да се нарича MIN или OPT.
- Заменете страницата, която е малко вероятно да бъде използвана за по-дълъг период от време. Използва се само времето, когато е необходимо да се използва страницата.
Замяна на LRU страница
Пълната форма на LRU е „Най-малко използвана страница“. Този метод помага на операционната система да открие използването на страницата за кратък период от време. Този алгоритъм трябва да се реализира чрез свързване на брояч с всяка страница.
Как работи?
- Страницата, която не е била използвана най-дълго време в основната памет, е тази, която ще бъде избрана за заместване.
- Лесен за изпълнение, поддържайте списък, заменяйте страници, като гледате назад във времето.
Характеристики:
- Методът за заместване на LRU има най-висок брой. Този брояч се нарича още регистър за стареене, който определя възрастта и колко често трябва да се правят референции към свързаните с тях страници.
- Страницата, която не е била използвана най-дълго време в основната памет, е тази, която трябва да бъде избрана за заместване.
- Той също така поддържа списък и замества страници, като гледа назад във времето.
Честота на грешките
Честотата на отказите е честотата, с която проектирана система или компонент се поврежда. Тя се изразява в откази за единица време. Означава се с гръцката буква λ (ламбда).
Предимства на виртуалната памет
Ето плюсовете/ползите от използването на виртуална памет:
- Виртуалната памет помага да се увеличи скоростта, когато само определен сегмент от програмата е необходим за изпълнението на програмата.
- Това е много полезно при внедряването на мултипрограмна среда.
- Позволява ви да стартирате повече приложения наведнъж.
- Помага ви да вместите много големи програми в по-малки програми.
- Общите данни или код може да се споделят между паметта.
- Един процес може да стане дори по-голям от цялата физическа памет.
- Данните/кодът трябва да се четат от диска, когато е необходимо.
- Кодът може да бъде поставен навсякъде във физическата памет, без да е необходимо преместване.
- Повече процеси трябва да се поддържат в основната памет, което увеличава ефективното използване на процесора.
- Всяка страница се съхранява на диск, докато не стане необходима, след което се премахва.
- Позволява едновременното изпълнение на повече приложения.
- Няма конкретно ограничение за степента на мултипрограмиране.
- Трябва да се пишат големи програми, тъй като наличното виртуално адресно пространство е по-голямо в сравнение с физическата памет.
Недостатъци на виртуалната памет
Ето недостатъците/минусите на използването на виртуална памет:
- Приложенията може да работят по-бавно, ако системата използва виртуална памет.
- Вероятно ще отнеме повече време за превключване между приложенията.
- Предлага по-малко място на твърдия диск за ваша употреба.
- Намалява стабилността на системата.
- Това позволява на по-големи приложения да работят в системи, които не предлагат достатъчно физическа RAM памет, за да ги стартират.
- Не предлага същата производителност като RAM паметта.
- Това се отразява негативно на цялостната производителност на системата.
- Заема място за съхранение, което може да се използва за дългосрочно съхранение на данни.

