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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Виртуальная память — это концепция, которая позволяет уйти от использования физических адресов, используя вместо них виртуальные, и это даёт ряд преимуществ:

 

· Расширение реального адресного пространства. Часть виртуальной памяти может быть вытеснена на жёсткий диск, и это позволяет программам использовать больше оперативной памяти, чем есть на самом деле.

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

· Задание различных свойств для разных участков участков памяти. Например, может существовать неизменяемый участок памяти, видный нескольким процессам.


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

В большинстве современных операционных систем виртуальная память организуется с помощью страничной адресации. Оперативная память делится на страницы: области памяти фиксированной длины (например, 4096 байт), которые являются минимальной единицей выделяемой памяти (то есть даже запрос на 1 байт от приложения приведёт к выделению ему страницы памяти). Исполняемый процессором пользовательский поток обращается к памяти с помощью адреса виртуальной памяти, который делится на номер страницы и смещение внутри страницы. Процессор преобразует номер виртуальной страницы в адрес соответствующей ей физической страницы при помощи буфера ассоциативной трансляции (TLB).

Динамическое расследование информации и памяти ЭВМ.

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

 

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

 

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

 

Команды операционной системы. Вводятся две функции: выделение памяти и освобождения памяти. Функция, выделяющая память, резервирует необходимый объем памяти с заданными свойствами, а функция освобождения памяти освобождает память, и она может быть использована снова при выделении.


Таблица страниц виртуальной памяти и её характеристика.

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

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

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

Виртуальный адрес

Page Global Directory(далее —PGD) — таблица (здесь и далее — то же самое, что директория) самого высокого уровня, каждая запись в ней — ссылка наPage Middle Directory(PMD), записи которой, в свою очередь, ссылаются на таблицуPage Table Entry(PTE). Записи вPTEссылаются на реальные физические адреса, а также хранят флаги состояния страницы.

То есть, при трёхуровневой иерархии памяти виртуальный адрес будет выглядеть так:

Значения полей PGD, PMD и PTE — это индексы в соответствующих таблицах (то есть сдвиги от начала этих таблиц), а offset — это смещение адреса от начала страницы.

В зависимости от архитектуры и режима страничной адресации, количество битов, выделяемых для каждого из полей, может отличаться. Кроме того, сама страничная иерархия может иметь число уровней, отличное от трёх: например, на x86 нет PMD.

Размер страницы

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

Чаще всего размер страницы определяется архитектурой и является фиксированным для всей системы, например — 4 KiB.

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

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



Поделиться:


Последнее изменение этой страницы: 2016-08-26; просмотров: 545; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.61.119 (0.007 с.)