Предыдущий раздел | РАБОТА С ОПЕРАТИВНОЙ ПАМЯТЬЮ В ЗАЩИЩЕННОМ РЕЖИМЕ | Следующий раздел |
Если включена аппаратура управления страницами (установкой в 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) содержат смещение адресуемой ячейки ОП относительно начала страницы. В результате аппаратного суммирования этого смещения с начальным реальным адресом соответствующей физической страницы получается искомый реальный адрес ячейки ОП.
Предыдущий раздел | В начало | Следующий раздел |