Прежде всего существует 2 типа привязок:
1) Динамическая / Аппаратная / Связывание во время выполнения: Здесь MMU (модуль управления памятью) отвечает за преобразование логическойадреса.Предполагается, что каждая программа загружается с нулевого логического адреса.Когда программа запускается, ОС решает, где она должна находиться в фактической физической памяти, и устанавливает специальный регистр, называемый базовым регистром, для смещения в физической памяти.Затем каждый логический адрес переводится следующим образом:
Физический адрес = Логический адрес + Базовое значение регистра.
* Обратите внимание, что если вы посмотрите на код сборки дляЗапрограммируйте адреса логически, поэтому они не изменятся, если вы перекомпилируете.
2) Статическое / программное связывание: Во время компиляции ОС знает, где процесс будет находиться в физической памяти.Таким образом, адреса в скомпилированном / ассемблерном коде будут фактическими физическими адресами, и обратите внимание, что эти адреса могут измениться, если мы перекомпилируем.
ЗАКЛЮЧИТЕЛЬНОЕ ПРИМЕЧАНИЕ: Я думаю, что статическое связывание в настоящее время не используется.. таким образом, логические адреса на 100% отличаются от физических адресов (динамическое связывание).