Концепция виртуализации памяти

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

Максимальный размер памяти, который может использовать ЭВМ, определяется системой адресации. Если регистр MAR содержит k-битов, то память содержит адресуемых единиц хранения. Обычно, вычислительная система разрабатывается таким образом, что данные извлекаются и считываются словами. Следовательно, максимально возможный объем основной памяти слов. Современные 64-разрядные процессоры даже при побайтной организации памяти могут поддерживать обращение к 16ЕБайт при реальном размере оперативной памяти 2–8ГБайт.

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

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

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

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

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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: