Логическое, линейное и физическое адресные пространства


Логический адрес состоит из 16-битового селектора сегмента и 32- битового смещения в этом сегменте. Логический адрес транслируется в линейный адрес сложением смещения и базового адреса сегмента. Базовый адрес берется из дескриптора сегмента — структуры данных в памяти, которая содержит информацию о размере и расположении данного сегмента в памяти, а также информацию для управления доступа. Дескриптор сегмента берется в одной из двух таблиц, таблицы глобальных дескрипторов (GDT) или таблицы локальных дескрипторов (LDT). Для всех программ в системе существует единая таблица GDT, а также по одной таблице LDT для каждой отдельной выполняемой в текущий момент программы. Каждый логический адрес связан со своим сегментом (даже если система отображает все сегменты в одно и том же линейное адресное пространство). Имеется шесть сегментов, селекторы которых загружены в процессор. Селектор сегмента содержит информацию, используемую для транслирования логического адреса в соответствующий линейный адрес. Для каждого вида ссылки к памяти (пространству кода, пространству стека и пространствам данных) в процессоре существуют отдельные сегментные регистры. Они содержат селекторы текущих используемых сементов. Доступ к другим сегментам требует загрузки сегментного регистра с помощью разновидности команды MOV. Одновременно может быть доступно до четырех сегментов данных, что в сумме с остальными составляет шесть сегментных регистров. При загрузке селектора сегмента также происходит загрузка в сегментный регистр базового адреса, границы сегмента и информации, управляющей доступом. После этого процессор уже не обращается к таблицам дескрипторов до тех пор, пока не произойдет загрузка другого селектора сегмента. Селектор сегмента содержит 13-разрядный индекс для одной из дескрипторных таблиц. Индекс умножается на восемь (число байтов в дескрипторе сегмента) и складывается с 32-битовым базовым адресом дескрипторной таблицы. Базовый адрес берется из регистра таблицы глобальных дескрипторов (GDTR), либо из регистра таблицы локальных дескрипторов (LDTR). Эти регистры содержат линейный адрес начала дескрипторных таблиц. Бит в селекторе сегмента определяет, какая таблица должна быть использована, как показано на Рисунке. Бит TI выбирает таблицу дескрипторов

Преобразованный адрес представляет собой линейный адрес, как показано на Рисунке 5-5. Если подкачка страниц не используется, то он одновременно является и физическим адресом. Если подкачка используется, то физический адрес получается на втором уровне преобразования адреса.

Загрузка...