28) Виртуальная память в ОС
Виртуальная память – это механизм хранения, который предлагает пользователю иллюзию наличия очень большой основной памяти. Это делается путем обработки части вторичной памяти в качестве основной памяти. В виртуальной памяти пользователь может хранить процессы большего размера, чем доступная основная память.
Поэтому вместо загрузки одного длинного процесса в основную память ОС загружает различные части более чем одного процесса в основную память. Виртуальная память в основном реализована с разбивкой по страницам и сегментации.
Из этого руководства по операционной системе вы узнаете:
- Что такое виртуальная память?
- Как работает виртуальная память?
- Что такое пейджинг по требованию?
- Типы методов замены страниц
- Замена страницы FIFO
- Оптимальный алгоритм
- Замена страницы LRU
- Преимущества виртуальной памяти
- Недостатки виртуальной памяти
Зачем нужна виртуальная память?
Вот причины использования виртуальной памяти:
- Всякий раз, когда у вашего компьютера нет места в физической памяти, он записывает то, что ему нужно запомнить, на жесткий диск в файле подкачки в качестве виртуальной памяти.
- Если компьютеру под управлением Windows требуется больше памяти / оперативной памяти, а затем установленному в системе, он использует для этой цели небольшую часть жесткого диска.
Как работает виртуальная память?
В современном мире виртуальная память стала довольно распространенной в наши дни. Он используется всякий раз, когда некоторые страницы требуют загрузки в основную память для выполнения, и память не доступна для этих многих страниц.
Таким образом, в этом случае вместо предотвращения входа страниц в основную память, ОС ищет пространство ОЗУ, минимально используемое в последнее время или на которое не ссылаются во вторичной памяти, чтобы освободить место для новых страниц в основная память.
Давайте разберемся с управлением виртуальной памятью с помощью одного примера.
Например:
Давайте предположим, что ОС требуется 300 МБ памяти для хранения всех запущенных программ. Однако в настоящее время в оперативной памяти хранится только 50 МБ доступной физической памяти.
- Затем ОС установит 250 МБ виртуальной памяти и будет использовать программу, называемую Virtual Memory Manager (VMM), для управления этими 250 МБ.
- Таким образом, в этом случае VMM создаст на жестком диске файл размером 250 МБ для хранения дополнительной необходимой памяти.
- Теперь ОС перейдет к адресной памяти, поскольку она считает 300 МБ реальной памяти, хранящейся в ОЗУ, даже если доступно только 50 МБ.
- Работа VMM заключается в управлении 300 МБ памяти, даже если доступно только 50 МБ реальной памяти.
Что такое пейджинг по требованию?
Механизм подкачки по требованию очень похож на систему подкачки с подкачкой, где процессы, хранящиеся во вторичной памяти и страницах, загружаются только по требованию, а не заранее.
Таким образом, когда происходит переключение контекста, ОС никогда не копирует ни одной из страниц старой программы с диска или страниц новой программы в основную память. Вместо этого он начнет выполнение новой программы после загрузки первой страницы и извлечет страницы программы, на которые имеются ссылки.
Во время выполнения программы, если программа ссылается на страницу, которая может быть недоступна в основной памяти, поскольку она была заменена, то процессор считает ее недопустимой ссылкой на память. Это происходит из-за сбоя страницы и передачи управления обратно из программы в ОС, что требует сохранения страницы обратно в память.
Типы методов замены страниц
Вот несколько важных методов замены страниц
- ФИФО
- Оптимальный алгоритм
- Замена страницы LRU
Замена страницы FIFO
FIFO («первым пришел – первым вышел») – это простой метод реализации. В этом методе память выбирает страницу для замены, которая долгое время находилась в виртуальном адресе памяти.
Особенности:
- Всякий раз, когда загружается новая страница, страница, которая недавно появилась в памяти, удаляется. Таким образом, легко решить, какую страницу необходимо удалить, поскольку ее идентификационный номер всегда находится в стеке FIFO.
- Самая старая страница в основной памяти – та, которая должна быть выбрана для замены первой.
Оптимальный алгоритм
Оптимальный метод замены страницы выбирает эту страницу для замены, для которой время до следующей ссылки самое большое.
Особенности:
- Оптимальный алгоритм приводит к наименьшему количеству ошибок страниц. Этот алгоритм сложно реализовать.
- Оптимальный метод алгоритма замены страниц имеет наименьшую частоту ошибок страниц среди всех алгоритмов. Этот алгоритм существует и который должен называться MIN или OPT.
- Замените страницу, которую не хотите использовать в течение более длительного периода времени. Используется только время, когда страница должна быть использована.
Замена страницы LRU
Полной формой LRU является страница «Наименее недавно использованные». Этот метод помогает ОС найти страницу за короткий промежуток времени. Этот алгоритм должен быть реализован путем связывания счетчика с четной страницей.
Как это работает?
- Страница, которая долгое время не использовалась в основной памяти, будет выбрана для замены.
- Легко реализовать, вести список, заменять страницы, оглядываясь в прошлое.
Особенности:
- Метод замены LRU имеет наибольшее количество. Этот счетчик также называется регистрами старения, которые указывают их возраст и количество ссылок на связанные страницы.
- Страница, которая долгое время не использовалась в основной памяти, должна быть выбрана для замены.
- Он также ведет список и заменяет страницы, оглядываясь назад во времени.
Частота отказов
Частота отказов – это частота, с которой отказывает разработанная система или компонент. Это выражается в сбоях за единицу времени. Обозначается греческой буквой λ (лямбда).
Преимущества виртуальной памяти
Вот преимущества / преимущества использования виртуальной памяти:
- Виртуальная память помогает набирать скорость, когда для выполнения программы требуется только определенный сегмент программы.
- Это очень полезно при реализации многопрограммной среды.
- Это позволяет вам запускать больше приложений одновременно.
- Это поможет вам встроить множество больших программ в небольшие.
- Общие данные или код могут совместно использоваться памятью.
- Процесс может стать даже больше, чем вся физическая память.
- Данные / код следует читать с диска всякий раз, когда это необходимо.
- Код может быть размещен в любом месте физической памяти, не требуя перемещения.
- В основной памяти должно поддерживаться больше процессов, что увеличивает эффективное использование процессора.
- Каждая страница хранится на диске до тех пор, пока она не потребуется, после чего она будет удалена.
- Это позволяет одновременно запускать больше приложений.
- Нет конкретного ограничения на степень мультипрограммирования.
- Большие программы должны быть написаны, так как доступное виртуальное адресное пространство больше по сравнению с физической памятью.
Недостатки виртуальной памяти
Вот недостатки / недостатки использования виртуальной памяти:
- Приложения могут работать медленнее, если система использует виртуальную память.
- Вероятно, требуется больше времени для переключения между приложениями.
- Предлагает меньше места на жестком диске для вашего использования.
- Это снижает стабильность системы.
- Это позволяет более крупным приложениям работать в системах, которые не предлагают достаточно физической оперативной памяти для их запуска.
- Он не предлагает такую же производительность, как ОЗУ.
- Это негативно влияет на общую производительность системы.
- Занимайте место для хранения, которое в противном случае может использоваться для долгосрочного хранения данных.
Резюме:
- Виртуальная память – это механизм хранения, который предлагает пользователю иллюзию наличия очень большой основной памяти.
- Виртуальная память необходима, когда на вашем компьютере нет места в физической памяти.
- Механизм подкачки по требованию очень похож на систему подкачки с подкачкой, где процессы, хранящиеся во вторичной памяти и страницах, загружаются только по требованию, а не заранее.
- Важные методы замены страницы: 1) FIFO 2) Оптимальный алгоритм 3) Замена страницы LRU.
- В методе FIFO (первым пришел-первым обслужен) память выбирает страницу для замены, которая долгое время находилась в виртуальном адресе памяти.
- Оптимальный метод замены страницы выбирает эту страницу для замены, для которой время до следующей ссылки самое большое.
- Метод LRU помогает ОС находить использование страницы за короткий промежуток времени.
- Виртуальная память помогает набирать скорость, когда для выполнения программы требуется только определенный сегмент программы.
- Приложения могут работать медленнее, если система использует виртуальную память.
Виртуальная память компьютера: что такое, как устроена, как увеличить
Виртуальная память компьютера выступает в качестве дополнения к оперативной памяти и является частью оперативной памяти, расположенной на жестком диске. Пользователю компьютера это дает ощущение, что он имеет ОЗУ с неограниченным объемом.
Виртуальная память встречается практически во всех операционных системах, предназначенных для настольных компьютеров. Системные требования многих прикладных программ растут очень быстрыми темпами от версии к версии. И несмотря на то, что объем оперативной памяти, устанавливаемый на современные модели настольных компьютеров значительно вырос, все равно довольно часто возникает ситуация, когда его оказывается недостаточно.
Особенно в случаях, когда пользователь одновременно запускает несколько ресурсоемких программ. Отсюда возникает необходимость в наличии виртуальной памяти.
Что такое виртуальная память?
Скажем так, это технология, позволяющая прикладной программе «считать», что она имеет неограниченный объем и непрерывное адресное пространство памяти. Хотя на деле память физически фрагментирована и ее объем искусственно увеличен на жестком диске.
Системы, использующие виртуальную память, способны выполнять приложения превышающие возможности оперативной памяти с высокой скоростью и использовать физическую память более эффективно, чем без нее. Виртуальная память отличается от технологии виртуализации.
Как работает виртуальная память?
Это очень полезная и нужная технология, которая использует фактическое пространство винчестера, манипулируя данными с помощью операционной системы и перемещая их в случае необходимости из оперативной памяти на жесткий диск. Часть пространства на жестком диске действует как временный носитель. Операционная система определяет, какие данные и в каком месте сохранены и обеспечивает к ним быстрый доступ, позволяя работать системе максимально быстро.
Виртуальная память работает в координации с оперативной памятью, операционная система определяет, какие данные, находящиеся в оперативной памяти, сравнительно долго не используются системой и сбрасывают их в виртуальную память. В случае необходимости они могут быть перемешены обратно в оперативную память. Вторичные устройства хранения данных, такие как жесткий диск, имеет большую емкость хранения, но предоставляют очень медленный доступ к данным.
Как организована виртуальная память?
Виртуальная память использует технологию файла подкачки, либо сегментации. Большинство систем используют таблицы страниц, для перевода виртуальных адресов в физические адреса, используемые процессором для выполнения инструкций. Таблица страниц сохраняет записи для отображения виртуальных адресов в физические адреса. Системы могут иметь одну таблицу страниц для всей системы или отдельные таблицы страниц для каждой прикладной программы.
Таким образом, файл подкачки может быть определен, как процесс перемещения неактивных страниц виртуальной памяти на диск и восстановление их в оперативной памяти по запросу. Существуют различные алгоритмы, чтобы выбирать, какие страницы должны быть перенесены на жесткий диск и которые должны быть сохранены.
Очень немногие системы используют концепцию сегментации для реализации виртуальной памяти. В сегментации память делится на сегменты переменного размера. Номер сегмента и смещение внутри сегмента вместе образуют виртуальный адрес.
Если процессор хочет получить конкретный элемент данных, он сначала ищет для своего сегмента номер в сегменте таблицы, чтобы найти дескриптор (описание) сегмента. Дескриптор сегмента дает информацию, является ли смещение внутри сегмента меньше, чем длина отрезка, и если не генерируется прерывание, уведомляет о том, что сегмент найден.
Если процессор не может найти сегмент в основной памяти, он генерирует аппаратное прерывание запроса операционной системы, чтобы поменять сегмент. Затем операционная система ищет сегменты, которые не были в эксплуатации в течение длительного времени и меняет их, перемещая из оперативной памяти на жесткий диск, чтобы освободить место для новых сегментов для чтения.
Как увеличить виртуальную память?
Если вы хотите увеличить объем виртуальной памяти на своей системе, то ознакомьтесь с пошаговой инструкцией. (Для Windows XP):
-
Откройте меню «Пуск», выберите команду «Панель управления» Выберите пункт «Производительность и обслуживание» Далее выберите «Система» Выбираем вкладку «Дополнительно» Выбираем секцию «Быстродействие» и нажимаем кнопку Параметры Выбираем вкладку «Дополнительно» В секции «Виртуальная память» нажимаем на кнопку «Изменить» В списке Диск [метка тома] выберите диск, содержащий файл подкачки, если вы хотите изменить размер его виртуальной памяти. Вы можете выбрать объем памяти, который хотите зарезервировать для виртуальной памяти, введя начальный и максимальный размер. Нажмите кнопку «Задать» Перезагрузите компьютер
Если вам кажется, что ваш компьютер работает слишком медленно, то увеличение виртуальной памяти не поможет, это может быть только результатом «пробуксовки». Слишком частая перетасовка блоков виртуальной памяти между реальной памяти и дисков потребляет большую часть времени работы компьютера, тем самым вызывая пробуксовку. Хотя и существует некоторые меры, оптимизирующие работу виртуальной памяти, все же лучшим решением будет увеличение объема оперативной памяти.
9.1 Виртуальная память. Понятие
Обычно программист обращается к памяти с помощью некоторого набора логических имен, которые чаще всего являются символьными. В общем случае множество переменных неупорядочено. Имена переменных и входных точек программных модулей составляют пространство имен.
Физическая память представляет собой упорядоченное множество ячеек, и все они пронумерованы, то есть к каждой из них можно обратиться, указав ее порядковый номер (адрес). Количество ячеек физической памяти ограничено и фиксировано.
Рис. 9.1 Отображения памяти
Системное программное обеспечение должно связать каждое указанное пользователем имя с физической ячейкой памяти, то есть осуществить отображение пространства имен на физическую память компьютера. В общем случае это отображение осуществляется в два этапа (рис. 9.1): сначала системой программирования, а затем операционной системой.
Между этими этапами обращения к памяти имеют форму виртуального или логического адреса. При этом можно сказать, что множество всех допустимых значений виртуального адреса для некоторой программы определяет ее виртуальное адресное пространство или виртуальную память.
Термин виртуальная память обычно ассоциируется с возможностью адресовать пространство памяти, гораздо большее, чем емкость первичной (реальной, физической) памяти конкретной вычислительной машины. Впервые она была реализована в вычислительной машине Atlas, созданной в Манчестерском университете в Англии в 1960 г.
Все системы виртуальной памяти характеризуются тем отличительным свойством, что адреса, формируемые выполняемыми программами, не обязательно совпадают с существующими адресами первичной памяти. В действительности виртуальные адреса, как правило, представляют гораздо большее множество адресов, чем имеется в первичной памяти.
9.2 Виртуальная память. Основные концепции
Суть концепции виртуальной памяти заключается в том, что адреса, к которым обращается выполняющийся процесс, отделяются от адресов, реально существующих в первичной памяти.
Те адреса, на которые делает ссылки выполняющийся процесс, называются виртуальными адресами, а те адреса, которые существуют в первичной памяти, называются реальными (или физическими) адресами (см. рис. 9.1). Диапазон виртуальных адресов, к которым может обращаться выполняющийся процесс, называется пространством виртуальных адресов V этого процесса. Диапазон реальных адресов, существующих в конкретной вычислительной машине, называется пространством реальных адресов R этого компьютера.
Несмотря на то, что процессы обращаются только к виртуальным адресам, в действительности они должны работать с реальной памятью. Таким образом, во время выполнения процесса виртуальные
Рис. 9.2 Отображение элементов виртуального адресного пространства на реальное адресное пространство.
адреса необходимо преобразовывать в реальные, причем это нужно делать быстро, ибо в противном случае производительность вычислительной машины будет снижаться до неприемлемых уровней и тем самым практически сведутся на нет те преимущества, которые и призвана обеспечить прежде всего концепция виртуальной памяти (рис. 9.2). Механизмы преобразования адресов обладают общим свойством: смежные адреса виртуального адресного пространства процесса не обязательно будут смежными в реальной памяти, это свойство называют «искусственной смежностью» (рис. 9.3). Таким образом, пользователь освобождается от необходимости учитывать размещение своих процедур и данных в реальной памяти. Он получает возможность писать программы наиболее естественным образом, прорабатывая только детали алгоритма и структуры программы и игнорируя конкретные особенности структуры аппаратных средств, служащих для выполнения программы. При этом компьютер рассматривается (или может рассматриваться) только как логическое средство, обеспечивающее реализацию необходимых алгоритмов, а не как физическая машина с уникальными характеристиками, часть которых может лишь затруднить процесс проектирования программы.
Рис. 9.3 Искусственная смежность. Элементы, которые являются смежными в виртуальной памяти, отображаются не обязательно на смежные элементы реальной памяти.
Существуют два наиболее общепринятых способа реализации виртуальной памяти — страничная и сегментная организации памяти. В некоторых системах виртуальной памяти применяется либо тот, либо другой из этих способов, а в некоторых — их комбинация.
При подготовке материала использовались источники:
https://coderlessons.com/tutorials/akademicheskii/osnovy-operatsionnykh-sistem/28-virtualnaia-pamiat-v-os
https://hardwareguide.ru/raznoe-2/virtualnaya-pamyat-kompyutera-chto-takoe-kak-ustroena-kak-uvelichit/
https://studfile.net/preview/3639/