Нет такой вещи как постраничная сегментация , по крайней мере, в официальной документации.Существуют два разных механизма, работающих вместе и более или менее независимо друг от друга:
- Перевод логического адреса вида
16-bit segment selector value:16/32/64-bit segment offset value
, то есть пары из 2 чисел в 32/64-bit virtual address
. - Перевод
virtual address
в 32/64-bit physical address
.
Логические адреса - это то, с чем ваши приложения работают напрямую.Затем следует приведенный выше двухэтапный перевод их в физические адреса, которые понимает ОЗУ.
На первом шаге GDT (или это может быть LDT, зависит от значения селектора) индексируется селекторомнайти базовый адрес и размер соответствующего сегмента.Виртуальный адрес будет суммой базового адреса сегмента и смещения.Размер сегмента и другие элементы в дескрипторах сегмента необходимы для обеспечения защиты.
На втором шаге таблицы страниц индексируются различными частями виртуального адреса, а последняя индексированная таблица в иерархии дает окончательный, физическийадрес, который выходит на адресную шину, чтобы увидеть оперативную памятьКак и в случае с дескрипторами сегментов, записи таблицы страниц содержат не только адреса, но и биты управления защитой.
Это касается механизмов.
Теперь во многих ОС x86 используются селекторы сегментов, которые используютсяпоскольку приложения являются фиксированными, они одинаковы во всех них, они никогда не изменяются и указывают на дескрипторы сегментов, у которых базовые адреса равны 0 и размеры равны возможному максимуму (например, 4 ГБ в не 64-битных режимах).Такая установка GDT фактически означает, что первый шаг не выполняет полезной работы, а смещенная часть логического адреса преобразуется в виртуально равный виртуальный адрес.
Это делает значения селектора сегмента практически бесполезными.Они все еще должны быть загружены в регистры сегментов ЦП (в не 64-битных режимах, по крайней мере, в CS, SS, DS и ES), но после этого момента их можно забыть.
Это все (кроме деталей, связанных с Linux и формата ELF), поясняется или непосредственно следует из руководств по процессорам Intel и x86 для процессоров AMD.Там вы найдете еще много деталей.