Предыдущий раздел РАБОТА С ОПЕРАТИВНОЙ ПАМЯТЬЮ В ЗАЩИЩЕННОМ РЕЖИМЕ Следующий раздел

23.3.1. Линейная виртуальная память - преобразование адресов

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

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

Допустим пока, что свопинг не требуется, так как каждой логической странице соответствует своя физическая страница. В этом случае каждый линейный виртуальный адрес, выдаваемый аппаратурой управления сегментами, преобразуется в реальный адрес по схеме на рис.41.  Так как длина линейного виртуального адреса 32 бита, то общий объем линейного виртуального адресного пространства составляет 232 = 4Г (байт).

 

 

Рис. 80. Преобразование линейного виртуального адреса в реальный

 

Как видно из рис.41, 32 бита линейного адреса аппаратно разделяются на три части. Старшие 10 бит используются как индекс поиска (здесь индекс – номер строки) в таблице, называемой каталогом таблиц страниц. Каждая строка этой таблицы содержит дескриптор одной из таблиц страниц. Максимальное число строк (дескрипторов) в таблице-каталоге – 1024 (210). Причем количество самих каталогов не ограничено. В любой момент времени существует каталог, называемый текущим каталогом (не путатьс текущим каталогом файлов). Начальный реальный адрес этого каталога содержится в регистре CR3. Смена содержимого этого регистра приводит к смене текущего каталога. 

На рис.42 приведена структура дескриптора таблицы страниц. Поясним содержание полей этого дескриптора:

1) в битах 12-31 находятся старшие 20 битов реального адреса в ОП таблицы страниц, соответствующей дескриптору. Младшие 12 битов этого адреса таблицы страниц всегда равны нулю. Поэтому в ОП таблица страниц может находиться только по адресу, кратному числу 4096 (212), то есть на границе физической страницы;

2) AVL – биты, используемые ОС по своему усмотрению;

3) D – бит устанавливается в 1, если была выполнена запись в таблицу страниц;

4) A – бит доступа, он устанавливается в 1 ЦП перед выполнением операции чтения (записи) из таблицы (в таблицу) страниц;

5) U -  бит принадлежности таблицы страниц (0 – таблица страниц ядра, 1 – таблица страниц прикладной программы);

6) W – бит разрешения записи (1 – запись в таблицу страниц разрешена, 0 – запись не разрешена);

7) P – бит присутствия в памяти (1 – таблица страниц находится в ОП, 0 – нет).

 

 

Рис. 81. Структура дескриптора таблицы страниц

 

Следующие 10 бит линейного адреса являются индексом в таблице страниц, выбранной с помощью старших десяти битов адреса. Таблица страниц состоит из 1024 дескрипторов страниц, каждый из которыхописывает одну логическую страницу. Дескриптор страницы имеет тот же состав полей, что и дескриптор таблицы страниц (см. рис.42). Единственное уточнение: старшие 20 битов дескриптора страницы содержат 20 старших битов (из 32-х) начального реального адреса соответствующей физической страницы.

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

 


Предыдущий раздел В начало Следующий раздел