Виртуальная память в ОС: что такое, пейджинг по требованию, преимущества
⚡ Умное резюме
Виртуальная память — это механизм хранения данных, который создает у пользователя иллюзию большого объема основной памяти, рассматривая часть вторичного хранилища как оперативную память. Она позволяет запускать процессы, размер которых превышает объем физической памяти, и реализуется с помощью страничной организации памяти по требованию.

Что такое виртуальная память?
Виртуальная память Виртуальная память — это механизм хранения данных, который создает у пользователя иллюзию наличия очень большого объема основной памяти. Это достигается за счет использования части вторичной памяти в качестве основной. В виртуальной памяти пользователь может хранить процессы большего размера, чем доступная основная память.
Поэтому вместо загрузки одного длинного процесса в основную память ОС загружает различные части более чем одного процесса в основную память. Виртуальная память в основном реализуется с помощью подкачки и сегментации спроса.
Зачем нужна виртуальная память?
Вот причины использования виртуальной памяти:
- Когда в физической памяти компьютера не хватает места, он записывает необходимые данные на жесткий диск в файл подкачки, используя его в качестве виртуальной памяти.
- Если компьютер работает Windows Для работы требуется больше оперативной памяти, чем установлено в системе, поэтому для этой цели используется небольшая часть жесткого диска.
Как работает виртуальная память?
В современном мире виртуальная память стала довольно распространенным явлением. Она используется всякий раз, когда для выполнения программы необходимо загрузить в основную память несколько страниц, а память для этих многочисленных страниц недоступна.
Таким образом, в этом случае, вместо того чтобы препятствовать попаданию страниц в основную память, ОС ищет в оперативной памяти пространство, которое в последнее время используется минимально или не используется, и перемещает его во вторичную память, чтобы освободить место для новых страниц в основной памяти.
Давайте поймем управление виртуальной памятью с помощью одного примера.
Например
Предположим, что операционной системе требуется 300 МБ памяти для хранения всех запущенных программ. Однако в данный момент в оперативной памяти доступно только 50 МБ физической памяти.
- Затем операционная система выделит 250 МБ виртуальной памяти и будет использовать программу под названием «Менеджер виртуальной памяти» (VMM) для управления этими 250 МБ.
- В этом случае VMM создаст на жестком диске файл размером 250 МБ для хранения необходимой дополнительной памяти.
- Теперь операционная система будет обращаться к памяти так, как если бы она рассматривала 300 МБ реальной памяти, хранящейся в ОЗУ, даже если доступно всего 50 МБ пространства.
- Задача VMM — управлять 300 МБ памяти, даже если доступно всего 50 МБ реального пространства памяти.
Что такое пейджинг по требованию?
Механизм пейджинга по требованию очень похож на пейджинговая система с обменомpingгде процессы хранятся во вторичной памяти, а страницы загружаются только по запросу, а не заранее.
Таким образом, при переключении контекста операционная система никогда не копирует страницы старой программы с диска и не копирует страницы новой программы в основную память. Вместо этого она начинает выполнение новой программы после загрузки первой страницы и извлекает страницы программы, на которые есть ссылки.
В процессе выполнения программы, если программа обращается к странице, которая может быть недоступна в основной памяти из-за выгрузки в файл подкачки, процессор рассматривает это как недопустимое обращение к памяти. Это происходит потому, что ошибка страничного доступа передает управление от программы к операционной системе, которая требует сохранить страницу обратно в память.
Типы методов замены страниц
Вот несколько важных методов замены страниц:
- FIFO
- Оптимальный алгоритм
- Замена страницы LRU
Замена страницы FIFO
FIFO (первым пришел — первым обслужен) — это простой метод реализации. В этом методе память выбирает для замены страницу, которая находилась в виртуальном адресе памяти дольше всего.
Особенности
- При загрузке каждой новой страницы удаляется та, которая дольше всего находилась в памяти. Таким образом, легко определить, какую страницу удалить, поскольку её идентификационный номер всегда находится в начале стека FIFO.
- Для замены следует в первую очередь выбрать самую старую страницу в основной памяти.
Оптимальный алгоритм
Оптимальный метод замены страницы выбирает ту страницу для замены, для которой время до следующего обращения является самым продолжительным.
Особенности
- Оптимальный алгоритм приводит к наименьшему количеству ошибок страничного доступа. Реализация этого алгоритма сложна.
- Оптимальный алгоритм замещения страниц имеет самый низкий уровень ошибок страниц среди всех алгоритмов. Такой алгоритм существует и должен называться MIN или OPT.
- Замените страницу, которая вряд ли будет использоваться в течение длительного периода времени. Заменяется только то время, когда страница действительно необходима.
Замена страницы LRU
Полное название LRU — Least Recently Used (наименее недавно использованная страница). Этот метод помогает операционной системе отслеживать использование страниц за короткий промежуток времени. Реализация этого алгоритма должна включать присвоение счетчика каждой странице.
Как это работает?
- Для замены будет выбрана страница, которая дольше всего не использовалась в основной памяти.
- Легко реализовать, вести список, заменять страницы, оглядываясь назад во времени.
Особенности
- Метод замещения LRU имеет наибольшее значение. Этот счетчик также называется регистром старения и определяет возраст и частоту обращений к соответствующим страницам.
- Для замены следует выбрать страницу, которая дольше всего не использовалась в основной памяти.
- Он также ведет список и заменяет страницы, оглядываясь назад во времени.
Частота отказов
Частота отказов — это показатель частоты, с которой спроектированная система или компонент выходят из строя. Она выражается в количестве отказов на единицу времени. Обозначается греческой буквой λ (лямбда).
Преимущества виртуальной памяти
Вот преимущества использования виртуальной памяти:
- Виртуальная память помогает набрать скорость, когда для выполнения программы требуется только определенный сегмент программы.
- Это очень полезно при реализации мультипрограммной среды.
- Это позволяет запускать больше приложений одновременно.
- Это поможет вам объединить множество больших программ в программы меньшего размера.
- Общие данные или код могут совместно использоваться памятью.
- Объём процесса может даже превысить объём всей физической памяти.
- Данные/код следует считывать с диска по мере необходимости.
- Код можно разместить в любом месте физической памяти, не требуя перемещения.
- В основной памяти должно поддерживаться больше процессов, что повышает эффективность использования ЦП.
- Каждая страница хранится на диске до тех пор, пока она не понадобится, после чего она будет удалена.
- Это позволяет одновременно запускать больше приложений.
- Конкретного ограничения на степень мультипрограммирования не существует.
- Для написания больших программ следует использовать именно такой подход, поскольку доступное виртуальное адресное пространство больше по сравнению с физической памятью.
Недостатки виртуальной памяти
Вот недостатки/минусы использования виртуальной памяти:
- Приложения могут работать медленнее, если система использует виртуальную память.
- Переключение между приложениями, вероятно, занимает больше времени.
- Это предоставляет меньше места на жестком диске для ваших нужд.
- Это снижает стабильность системы.
- Это позволяет запускать более крупные приложения в системах, которые не располагают достаточным объемом физической оперативной памяти для их работы.
- Она не обеспечивает такой же производительности, как оперативная память.
- Это негативно влияет на общую производительность системы.
- Оно занимает место для хранения данных, которое в противном случае могло бы использоваться для долговременного хранения информации.

