Виртуальная память

При использовании виртуальной памяти упрощается программирование, так как программисту больше не нужно учитывать ограниченность памяти, или согласовывать использование памяти с другими приложениями. Для программы выглядит доступным и непрерывным все допустимое адресное пространство, вне зависимости от наличия в ЭВМ соответствующего объёма ОЗУ.

Применение механизма виртуальной памяти позволяет:

  • упростить адресацию памяти клиентским программным обеспечением;
  • рационально управлять оперативной памятью компьютера (хранить в ней только активно используемые области памяти);
  • изолировать процессы друг от друга (процесс полагает, что монопольно владеет всей памятью).

В настоящее время эта технология имеет аппаратную поддержку на всех современных бытовых процессорах. В то же время во встраиваемых системах и в системах специального назначения, где требуется либо очень быстрая работа, либо есть ограничения на длительность отклика (системы реального времени) виртуальная память используется относительно редко. Также в таких системах реже встречается многозадачность и сложные иерархии памяти .

История


Wikimedia Foundation . 2010 .

Смотреть что такое "Виртуальная память" в других словарях:

    Ресурсы оперативной или внешней памяти, выделяемые прикладной программе операционной системой. Физическое расположение виртуальной памяти на реальных носителях может не совпадать с логической адресацией данных в прикладной программе.… … Финансовый словарь

    - (кажущаяся память ЭВМ) система запоминающих устройств, организованных таким образом, что программист может рассматривать их как одну большую оперативную память, что существенно упрощает процедуру составления программ для мультипрограммных ЭВМ … Большой Энциклопедический словарь

    виртуальная память - Техника, с помощью которой операционная система, например VM, может сделать так, чтобы ограниченный объем памяти выглядел гораздо большим. Операционная система делит каждую программу на "страницы", то есть на разделы одинакового размера … Справочник технического переводчика

    Ресурсы оперативной или внешней памяти, выделяемые прикладной программе операционной системой. Физическое расположение виртуальной памяти на реальных носителях может не совпадать с логической адресацией данных в прикладной программе.… … Словарь бизнес-терминов

    - (кажущаяся память ЭВМ), система запоминающих устройств, организованных таким образом, что программист может рассматривать их как одну большую оперативную память, что существенно упрощает процедуру составления программ для мультипрограммных ЭВМ. * … Энциклопедический словарь

    виртуальная память - virtualioji atmintis statusas T sritis automatika atitikmenys: angl. virtual memory; virtual storage vok. virtueller Speicher, m rus. виртуальная память, f pranc. mémoire virtuelle, f … Automatikos terminų žodynas

    Кажущаяся память Э В М, система запоминающих устройств, организованных т. о., что программист может рассматривать их как одну большую оперативную память, что существенно упрощает процедуру составления программ для мультипрограммных ЭВМ … Большой энциклопедический политехнический словарь

Виртуальная память – это часть объема жесткого диска, выделяемая системой при нехватке оперативной памяти для повышения быстродействия. При этом данные, которые на данный момент не используются компьютером, перемещаются в так называемый файл подкачки. Размер этого файла совпадает с объемом виртуальной памяти. Как правило, для нормального функционирования системы размер файла подкачки должен в 1,5 раза превышать объем оперативной памяти. Но если пользователь часто играет в компьютерные игры со сложной графикой или 3D-анимацией, или сам создает сложные программы, то размер файла должен быть увеличен вдвое, а то и втрое относительно оперативной памяти.Подключение виртуальной памяти позволяет более рационально использовать ресурсы оперативной памяти, перемещая второстепенные данные во вторичное хранилище. При этом процессы, идущие одновременно, работают изолированно, «не зная» друг о друге.Различают два способа реализации виртуальной памяти: страничная и сегментная. При страничной реализации память делится на области одинакового объема (страницы), которые принимаются за единицу памяти. Работающий процесс отправляет запрос к памяти по адресу, содержащемуся в виртуальной памяти. Адрес представляет собой номер страницы и смещение в ней. Система может сбросить на жесткий диск страницу, которая давно не использовалась.При сегментной организации виртуальная память делится на сегменты произвольного размера. При обращении процесса к памяти часть сегментов перемещается в оперативную память , а часть остается на жестком диске. Для каждого сегмента может быть назначен определенный уровень прав доступа. Работа сегментной памяти аналогична страничной, но обладает меньшей скоростью доступа.В большинстве случае увеличение виртуальной памяти происходит автоматически, но бывают ситуации, когда пользователю необходимо сделать это вручную. Однако в этом случае нужно иметь в виду, что быстродействие системы может превысить допустимые и компьютер, наоборот, станет работать гораздо медленнее.Ручное увеличение виртуальной памяти производится на Панели управления в разделе «Система» или «Система и ее обслуживание». По команде «Изменить параметры» появляется окно «Свойства системы», в котором нужно выбрать вкладку «Дополнительные». В разделе «Быстродействие» - кнопку «Параметры». В окне «Параметры быстродействия» - вкладка «Дополнительно», «Виртуальная память » -> «Изменить». Чтобы увеличить объем файла подкачки, необходимо снять галочку с команды «Автоматически выбирать объем файла подкачки» и задать необходимое значение.

Виртуальная память - технология, разработанная ради увеличения общего объема памяти, организации множества адресных пространств памяти, их защиты и автоматизации процесса перемещения машинного кода и данных между основной памятью компьютера и вторичным хранилищем.

В настоящее время технология виртуальной памяти имеет аппаратную поддержку на всех современных процессорах.

В случае расположения данных на внешних запоминающих устройствах память может быть представлена отдельным файлом или специальным разделом на жёстком диске.

Также существует термин swap, означающий виртуальную память (точнее способ её представления) или файл подкачки.

    Использование технологии виртуальной памяти позволяет:
  • упростить адресацию памяти клиентским программным обеспечением;
  • рационально управлять оперативной памятью компьютера (хранить в ней только активно используемые области памяти);
  • изолировать процессы друг от друга (процесс полагает, что монопольно владеет всей памятью).

Существует несколько способов реализации виртуальной памяти: свопинг, а также страничная и сегментная организации виртуальной памяти.

Свопинг - один из методов реализации виртуальной памяти, при котором отдельные, как правило, неактивные процессы перемещаются из оперативной памяти на жёсткий диск, тем самым освобождая оперативную память для загрузки других процессов. Процессы целиком перемещаются между ОЗУ и жестким диском, поэтому иногда некоторые процессы могут полностью отсутствовать в оперативной памяти. Если процесс снова нужен для работы, то он возвращается диспетчером памяти в ОЗУ. Существуют различные алгоритмы выбора процессов на загрузку и выгрузку, а также различные способы выделения оперативной и дисковой памяти загружаемому процессу.

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

Одним из недостатков механизма свопинга может стать фрагментация файла подкачки (своп-файла). При считывании и записи данных страниц из фрагментированного файла подкачки много времени будет уходить на перепозиционирование головок жёсткого диска на начало очередной области, что может привести к снижению производительности системы.

    Для наиболее эффективной организации свопинга и повышения производительности используют следующие методики:
  • 1. Под swap-файл выделяется место, объем которого равно объёму оперативной памяти, умноженному на 1, на 2 или на 3.
  • 2. Если в компьютере или ноутбуке несколько жестких дисков, то располагать файл подкачки нужно на менее нагруженном из них.
  • 3. Располагать файл подкачки следует на диске с наибольшими скоростями чтения/записи и как можно ближе к началу диска.
  • 4. При работе в Windows swap-файл лучше размещать на разделе с файловой системой FAT32, при этом не забывать, что она менее надежна, чем NTFS.
  • 5. При наличии достаточно большого объема оперативной памяти (более 2Гб) на малонагруженной системе можно вообще отказаться от файла подкачки.

Страничная организация виртуальной памяти

При страничной организации виртуальной памяти оперативная память делится на области памяти фиксированной длины, называемые страницами памяти. Страница является минимальное единицей выделяемой памяти.

Процесс обращается к памяти с помощью адреса виртуальной памяти, который содержит в себе номер страницы и смещение внутри страницы. Операционная система преобразует виртуальный адрес в физический, при необходимости подгружая страницу с жёсткого диска в оперативную память.

В семействе операционных систем Microsoft Windows используется файл pagefile.sys для хранения вытесненных из оперативной памяти страниц. Место под файл должно быть выделено заранее, размер можно указать самостоятельно или же доверить выбор операционной системе.

Сегментная организация виртуальной памяти

Еще один механизм реализации виртуальной памяти, при котором виртуальное пространство делится на части произвольного размера - сегменты, что позволяет, например, разбить данные процесса на логические блоки.

При загрузке процесса часть сегментов помещается в оперативную память, а часть размещается на диске. Сегменты одной программы могут занимать в оперативной памяти несмежные участки. Во время загрузки система создает таблицу сегментов процесса (аналогичную таблице страниц), в которой для каждого сегмента указывается начальный физический адрес сегмента в оперативной памяти, размер сегмента, правила доступа, признак модификации, признак обращения к данному сегменту за последний интервал времени и некоторая другая информация.

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

Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g - номер сегмента, а s - смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.

Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.

связь между аппаратным и программным обеспечением. В начале будут рассмотрены аппаратные аспекты виртуальной памяти , а затем вопросы, возникающие при ее программной реализации.

Понятие виртуальной памяти

Разработчикам программного обеспечения часто приходится решать проблему размещения в памяти больших программ, размер которых превышает объем доступной оперативной памяти. Один из вариантов решения данной проблемы – организация структур с перекрытием – рассмотрен в предыдущей лекции. При этом предполагалось активное участие программиста в процессе формирования перекрывающихся частей программы. Развитие архитектуры компьютеров и расширение возможностей операционной системы по управлению памятью позволило переложить решение этой задачи на компьютер . Одним из главных достижений стало появление виртуальной памяти ( virtual memory ). Впервые она была реализована в 1959 г. на компьютере "Атлас", разработанном в Манчестерском университете.

Суть концепции виртуальной памяти заключается в следующем. Информация, с которой работает активный процесс, должна располагаться в оперативной памяти. В схемах виртуальной памяти у процесса создается иллюзия того, что вся необходимая ему информация имеется в основной памяти. Для этого, во-первых, занимаемая процессом память разбивается на несколько частей, например страниц. Во-вторых, логический адрес (логическая страница), к которому обращается процесс, динамически транслируется в физический адрес (физическую страницу). И, наконец, в тех случаях, когда страница, к которой обращается процесс, не находится в физической памяти, нужно организовать ее подкачку с диска. Для контроля наличия страницы в памяти вводится специальный бит присутствия , входящий в состав атрибутов страницы в таблице страниц .

Таким образом, в наличии всех компонентов процесса в основной памяти необходимости нет. Важным следствием такой организации является то, что размер памяти, занимаемой процессом, может быть больше, чем размер оперативной памяти. Принцип локальности обеспечивает этой схеме нужную эффективность.

Возможность выполнения программы, находящейся в памяти лишь частично, имеет ряд вполне очевидных преимуществ.

  • Программа не ограничена объемом физической памяти. Упрощается разработка программ, поскольку можно задействовать большие виртуальные пространства, не заботясь о размере используемой памяти.
  • Поскольку появляется возможность частичного помещения программы (процесса) в память и гибкого перераспределения памяти между программами, можно разместить в памяти больше программ, что увеличивает загрузку процессора и пропускную способность системы.
  • Объем ввода-вывода для выгрузки части программы на диск может быть меньше, чем в варианте классического свопинга, в итоге каждая программа будет работать быстрее.

Таким образом, возможность обеспечения (при поддержке операционной системы) для программы "видимости" практически неограниченной (характерный размер для 32-разрядных архитектур 2 32 = 4 Гбайт) адресуемой пользовательской памяти (логическое адресное пространство ) при наличии основной памяти существенно меньших размеров (физическое адресное пространство ) – очень важный аспект.

Но введение виртуальной памяти позволяет решать другую, не менее важную задачу – обеспечение контроля доступа к отдельным сегментам памяти и, в частности, защиту пользовательских программ друг от друга и защиту ОС от пользовательских программ. Каждый процесс работает со своими виртуальными адресами , трансляцию которых в физические выполняет аппаратура компьютера. Таким образом, пользовательский процесс лишен возможности напрямую обратиться к страницам основной памяти, занятым информацией, относящейся к другим процессам.

Например, 16-разрядный компьютер PDP-11/70 с 64 Кбайт логической памяти мог иметь до 2 Мбайт оперативной памяти. Операционная система этого компьютера тем не менее поддерживала виртуальную память , которая обеспечивала защиту и перераспределение основной памяти между пользовательскими процессами.

Напомним, что в системах с виртуальной памятью те адреса, которые генерирует программа (логические адреса), называются виртуальными, и они формируют виртуальное адресное пространство . Термин " виртуальная память " означает, что программист имеет дело с памятью, отличной от реальной, размер которой потенциально больше, чем размер оперативной памяти.

При выполнении некоторых программ размер виртуальной памяти оказывается недостаточным. Виртуальная память компьютера складывается из оперативной памяти плюс файл подкачки. Все манипуляции с виртуальной памятью, создание файла подкачки ОЗУ выполняет автоматически. Пользователь может повлиять на этот процесс, изменив его местоположение и размер.

Заменяя размер виртуальной памяти (файла подкачки), надо соблюдать следующие правила:
  • не размещать его на разделе диска, где стоит операционная система, использовать другой, менее загруженный раздел;
  • отводить под файл подкачки место, в полтора раза превышающее ОЗУ. Например, память объемом 2 Гб, значит, файл подкачки задайте 3000 Мб.
Нажмите кнопку «Пуск» – откроется «Главное меню». В нем кликните на строке «Компьютер» правой кнопкой мыши. Откроется новое меню, выберите в нем «Свойства».


Откройте в окне «Система» подпункт «Дополнительные параметры системы». Выполнить это можно по-другому: «Пуск» – «Панель управления» – «Система».


Открыто окно «Свойства системы». Теперь на вкладке «Дополнительно» откройте «Параметры» в разделе «Быстродействие».


В открытом окне «Параметры быстродействия» перейдите на вкладку «Дополнительно». Кликните кнопку «Изменить» в разделе «Виртуальная память».


В открывшемся окошке вносим все необходимые изменения. С пункта «Автоматически выбирать объем файла подкачки» снимите галочку. Выбирайте диск, наименее загруженный. На пункт «Указать размер» поставьте переключатель, измените для файла подкачки его максимальный и исходный размер. Задавать вы можете такие параметры, которые вам нужны, не забывая, что исходный размер файла должен быть больше оперативки в полтора-два раза. Кликните кнопку «Задать».


На всех остальных дисках теперь можно отключить возможность создания файла подкачки. Зайдите на каждый том жесткого диска поочередно и поставьте переключатель на пункт «Без файла подкачки», затем щелкните кнопку «Задать». Чтобы внесенные изменения заработали – перезагрузите ваш компьютер.


В случае появившихся предупреждений о недостатке виртуальной памяти следует добавить объем файлу подкачки, заданный системой по умолчанию. Максимальный и минимальный размеры файла подкачки могут быть одинаковыми или минимальный размер – больше ОЗУ в полтора раза, максимальный – в два. Никогда не следует удалять или отключать файл подкачки.