<<
>>

Замещение страниц

Большинство систем виртуальной памяти опираются на прием, называемый замещение страниц (paging). На любом компьютере существует множество адресов в памяти, к которым может обратиться программа.
Когда программа использует следующую инструкцию, она делает это для того, чтобы скопировать содержимое памяти по адресу 1000 в регистр REG (или наоборот, в зависимости от компьютера):

MOVE REG,1000

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

Эти программно формируемые адреса, называемые виртуальными, образуют виртуальное адресное пространство. На компьютерах без виртуальной памяти виртуальные адреса подаются непосредственно на шину памяти и при чтении или записи читается или записывается слово в физической памяти с тем же самым адресом. При применении виртуальной памяти виртуальные адреса не передаются напрямую шиной памяти. Вместо этого они направляются в блок управления памятью (Memory Management Unit, MMU), который отображает виртуальные адреса на физические адреса (рис.

4.7).

Рис. 4.7. Расположение и функции блока управления памятью (MMU)

Очень простой пример того, как выполняется такого рода отображение, приведен на рис. 4.8. Мы рассматриваем компьютер, который может формировать 16-разрядные адреса, от 0 до 64 К. Это — виртуальные адреса. У данного компьютера есть только 32 Кбайт физической памяти, поэтому, хотя программы размером 64 Кбайт писать можно, их нельзя целиком загрузить в память и запустить на выполнение.

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

Пространство виртуальных адресов разделено на единичные блоки, называемые страницами. Соответствующие блоки в физической памяти называются страничными блоками (page frame). Размер страниц и их блоков всегда одинаков. В этом примере они равны 4 Кбайт, но в реальных системах использовались размеры от 512 байт до 64 Кбайт. Имея 64 Кбайт виртуального адресного пространства и 32 Кбайт физической памяти, мы получаем 16 виртуальных страниц и 8 страничных блоков. Передача данных между ОЗУ и диском всегда происходит постранично.

Пусть программа пытается получить доступ к адресу 0, например, с помощью следующей команды:

MOVE REG,О

Тогда виртуальный адрес 0 передается в блок управления памятью (MMU). Блок управления памятью видит, что этот виртуальный адрес попадает на страницу О

(от 0 до 4095), а та отображается на страничный блок 2 (адреса от 8192 до 12287). MMU преобразует виртуальный адрес 0 в физический адрес 8192 и выставляет последний на шину. Память ничего не знает о блоке управления памятью, а видит просто запрос на чтение или запись слова по адресу 8192 и выполняет запрос. Таким образом, блок управления памятью эффективно отображает все виртуальные адреса между 0 и 4095 на физические адреса от 8192 до 12287.

Еще пример:

MOVE REG,8192

Поскольку виртуальный адрес 8192 находится на виртуальной странице 2, а эта страница отображается на физический страничный блок 6 (физические адреса от 24576 до 28671), эта инструкция точно так же преобразуется в команду

MOVE REG,24576

В качестве третьего примера рассмотрим виртуальный адрес 20500, который адресует байт 20 от начала виртуальной страницы 5 (виртуальные адреса от 20480 до 24575) и отображается на физический адрес 12288 + 20 = 12308.

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

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

Что произойдет, если программа попытается воспользоваться неотображаемой страницей? Например:

MOVE REG,32780

Эта инструкции обращается к байту 12 на виртуальной странице 8 (откладываемой с адреса 32768). Блок управления памятью замечает, что страница не отображается (обозначена крестиком на рисунке), и инициирует прерывание центрального процессора, передающее управление операционной системе. Такое прерывание называется ошибкой отсутствия страницы (page fault). Операционная система выбирает редко используемый страничный блок и записывает его содержимое на диск. Затем она считывает с диска страницу, вызвавшую прерывание, в только что освободившийся блок, изменяет карту отображения и запускает прерванную команду заново.

Например, если операционная система решает удалить из оперативной памяти страничный блок 1, она загружает виртуальную страницу 8 по физическому адресу 4 К и производит два изменения в карте блока управления памятью. Во-первых, содержимое виртуальной страницы 1 отмечается как неотображае- мое, чтобы перехватывать в будущем любые попытки обращения к виртуальным адресам между 4 К и 8 К. Затем заменяется крест в записи для виртуальной страницы 8 номером 1, следовательно, когда прерванная команда будет выполняться заново, она отобразит виртуальный адрес 32 780 на физический адрес 4108.

Теперь рассмотрим блок управления памятью изнутри, чтобы увидеть, как он работает, и понять, почему мы выбрали размер страницы, являющийся степенью числа 2. На рис. 4.9 представлен пример отображения виртуального адреса 8196 (0010000000000100 в двоичном виде) согласно карте на рис. 4.8. Входной 16-раз- рядный виртуальный адрес разделяется на 4-разрядный номер страницы и 12-разрядное смещение.

При выделении 4 бит под номер страницы в нашей системе может существовать 16 страниц, а 12 бит смещения позволяют адресовать все 4096 байт внутри страницы.

Рис. 4.9. Внутренняя операция блока управления памятью в системе из 16 страниц по 4 Кбайт

Номер страницы используется в качестве индекса в таблице страниц, позволяющей получить номер страничного блока, соответствующего виртуальной странице. Если бит присутствия/отсутствия равен 0, управление переходит к операционной системе. Если этот бит равен 1, номер страничного блока, найденный в таблице страниц, записывается в 3 старших бита выходного регистра, а 12 бит смещения копируются без изменения из входного виртуального адреса. Все вместе они составляют 15-разрядный физический адрес. Затем содержимое выходного регистра выставляется на шину памяти как адрес физической памяти.

4.3.2.

<< | >>
Источник: Э. ТАНЕНБАУМ, А. ВУДХАЛЛ. ОПЕРАЦИОННЫЕ СИСТЕМЫ Разработка и реализация 3-е издание. 2007

Еще по теме Замещение страниц:

  1. Первая страница
  2. ЗАМЕЩЕНИЕ
  3. ЗАМЕЩЕНИЕ
  4. Порядок замещения поста главы государства
  5. «Суррогатные» («замещающие») иновещательные радиостанции
  6. СИМВОЛИКА
  7. ВУАЙЕРИЗМ
  8. СНОВИДЕНИЕ: ЗАВИСИМОСТЬ ПРИЧИННАЯ
  9. ЗАБОЛЕВАНИЕ НЕВРОТИЧЕСКОЕ
  10. СЕКСУАЛЬНОЕ
  11. Уровень психотехнический (средств деятельности)
  12. РАБОТА СНОВИДЕНИЯ
  13. 9.7.5. Шаг пятый: установите фотофокус