本文主要是介绍内存地址空间的概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先要厘清三种地址(即程序或进程的虚拟和逻辑地址;CPU的线性地址;实际物理地址)
a. 虚拟地址:是指同程序产生的,由段选择符和段内偏移地址两个部分组成的地址(对于X86系列就16位的段标识符;32位段内偏移)
因为这两部分组成的地址并没有直接用来访问物理内存,而是需要通过分段地址变换机制处理或映射后才对应到物理内存地址上,因此
称此地址为虚拟地址。
逻辑地址: 是指由程序产生的与段相关的偏移地址部分;应用程序员公需与逻辑地址打交道,而分页和分段机制对其是完全透明,仅由系统编程人员涉及。
不过有些资料不区分逻辑与虚拟地址
b. 线性地址: 是虚拟地址到物理学地址变换之间的中间层,是处理器可寻址的内存空间(称为线性地址空间)中地址。程序代码会产生逻辑地址,或者说是段中的偏移地址,加上相应段的基地址就生成一个线性地址。
c. 物理地址: 是指出现在CPU处部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。如果启用了分页机制,那线性地址就会使用页目录和页表中的项变换成物理地址。如果没启用分页机制,则线性地址即是物理地址。
这篇关于内存地址空间的概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!