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

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

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

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

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

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

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

При заметном числе страниц, используемых задачей, недоиспользование объема последней страницы (“внутренняя фрагментация”) не является существенным.

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


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



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