Нет, это не правильно.Например, в x86 для сегментации используются «дальние» указатели, состоящие из двух частей: селектора сегмента (загруженного в регистр сегмента, например, DS) и смещения в сегменте.Смещения сегмента всегда начинаются с 0. CPU использует селектор сегмента, чтобы найти дескриптор сегмента, который содержит базовый адрес, длину и права доступа сегмента.Все доступы проверены по длине;если вы попытаетесь получить доступ к памяти вне предела сегмента или с недопустимым доступом (например, запись в сегмент только для чтения), ЦП сгенерирует общую ошибку защиты.
Поскольку адреса сегментов всегда начинаются с нуляи база сегментов неявна в селекторе сегментов, ОС может перемещать сегменты и дефрагментировать память, не влияя на программы, использующие эти данные.(Сравните это с «плоской» моделью памяти, в которой, если вы перемещаете некоторые данные, вам также необходимо обновить все указатели, указывающие на них.)
Теперь, когда разбиение на страницы отключено, базовый адрес сегмента LINEAR является его физическимадрес памяти.Когда подкачка включена, все обращения к сегментным данным транслируются MMU как обычно.