Механизм преобразования виртуального адреса в физический адрес при работе процессора в сегментном режиме

 

Виртуальный адрес представлен селектором и смещением. Селектор находится в одном из сегментном регистре, смещение определяется в машинной команде.

Рассмотрим случай, когда виртуальный адрес относится к одному из сегментов, дескриптор которого содержится в глобальной таблице, то есть это системный или общий сегмент.

1. Виртуальный адрес показывает, что сегмент описан в глобальной таблице. Адрес глобальной таблицы содержится в системном регистре GDTR. Процессор складывает базовый адрес таблицы, взятый из регистра GDTR и значением поля индекса в селекторе (с номером сегмента). В результате определяется физический адрес дескриптора сегмента, к которому относится виртуальный адрес.

2. По этому адресу считывается дескриптор нужного сегмента;

3. Выполняется проверка возможности выполнения заданной операции:

- Проверяется правильность адреса, сравнивается смещение и размер сегмента, в случае выхода за границы сегмента происходит прерывание;

- Проверяются права доступа к данному сегменту ( чтение или запись);

- Проверяется наличие сегмента в физической памяти по биту Р, если сегмента нет – то прерывание (страничный отказ);

4. Если все три условия выполнены, то доступ по данному виртуальному адресу разрешен. Складывается базовый адрес сегмента, определенный по дескриптору, и смещение, определяемое по машинной команде. В результате получается физический адрес, по которому выполняется запрос.

 

Если селектор сегмента указывает на локальную таблицу, то есть это пользовательский процесс, то необходимо определить базовый адрес локальной таблицы.

Регистр LDTR содержит не адрес локальной таблицы, а ее смещение в глобальной таблице. Для определения базового адреса локальной таблицы складывается базовый адрес глобальной таблицы и смещение локальной таблицы. Далее все происходит аналогично.

 

Виртуальное адресное пространство           Физическое адресное пространство
Селектор 13 бит Смещение 32 бита

 

 

FFFFFFFF     Сегмент N   селектор   GDT    
      GDTR   База размер    
FFFFFFFF     Сегмент M       Дескриптор LDT   Сегмент M
LDTR
 
          База размер    
FFFFFFFF     Сегмент 1   отображение        
          LDT   База размер   Сегмент N