Почему адрес, сгенерированный процессором, называется «логическим» адресом? - PullRequest
0 голосов
/ 22 июня 2019

Во время компиляции и загрузки время логический адрес привязки совпадает с физическим адресом. Мой вопрос заключается в том, что если логический и физический адрес идентичны во время компиляции и привязки адреса времени загрузки, то почему мы называем это логическим адресом? Не следует ли использовать термин «логический адрес» только при привязке времени выполнения

1 Ответ

0 голосов
/ 12 июля 2019

Прежде всего существует 2 типа привязок:

1) Динамическая / Аппаратная / Связывание во время выполнения: Здесь MMU (модуль управления памятью) отвечает за преобразование логическойадреса.Предполагается, что каждая программа загружается с нулевого логического адреса.Когда программа запускается, ОС решает, где она должна находиться в фактической физической памяти, и устанавливает специальный регистр, называемый базовым регистром, для смещения в физической памяти.Затем каждый логический адрес переводится следующим образом:

Физический адрес = Логический адрес + Базовое значение регистра.

* Обратите внимание, что если вы посмотрите на код сборки дляЗапрограммируйте адреса логически, поэтому они не изменятся, если вы перекомпилируете.

2) Статическое / программное связывание: Во время компиляции ОС знает, где процесс будет находиться в физической памяти.Таким образом, адреса в скомпилированном / ассемблерном коде будут фактическими физическими адресами, и обратите внимание, что эти адреса могут измениться, если мы перекомпилируем.

ЗАКЛЮЧИТЕЛЬНОЕ ПРИМЕЧАНИЕ: Я думаю, что статическое связывание в настоящее время не используется.. таким образом, логические адреса на 100% отличаются от физических адресов (динамическое связывание).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...