首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么CPU产生的地址被称为“逻辑”地址?

为什么CPU产生的地址被称为“逻辑”地址?
EN

Stack Overflow用户
提问于 2019-06-22 14:47:05
回答 1查看 154关注 0票数 0

在编译时间和加载时间期间,地址绑定逻辑地址与物理地址相同。我的问题是,如果逻辑地址和物理地址在编译时和加载时地址绑定中是相同的,那么为什么我们称它为逻辑地址?术语“逻辑地址”不应该仅用于执行时绑定吗

EN

回答 1

Stack Overflow用户

发布于 2019-07-12 13:51:15

首先,有两种类型的绑定:

MMU1)动态/基于硬件/运行时绑定:这里MMU (内存管理单元)负责转换逻辑地址。假设每个程序在逻辑地址0处被加载。当程序开始运行时,操作系统决定它应该驻留在实际物理内存中的什么位置,并将一个称为基址寄存器的特殊寄存器设置为物理内存中的偏移量。然后,以这种方式转换每个逻辑地址:

物理Address=逻辑地址+基址寄存器值。

*请注意,如果你查看程序的汇编代码,地址是逻辑的,因此如果你重新编译,它们不会改变。

2)静态/基于软件的绑定:在编译时,OS知道进程将驻留在物理内存中的什么位置。因此,编译/汇编代码中的地址将是实际的物理地址,请注意,如果我们重新编译,这些地址可能会更改。

最后注意:我认为现在不再使用静态绑定..因此,逻辑地址与物理地址(动态绑定) 100%不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56713252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档