本文主要是参考Linux0.11内核的32位地址区分,不过于现阶段的64位地址区分差别不太大,理解Linux0.11,有助于理解现阶段的64位体系下地址的概念。
(注意x86体系是小端存放数据)
1,虚拟地址:是由程序产生的**段选择符**和**段内偏移地址**两个部分组成。
因为这两部分都不能直接访问物理内存,要经过分段处理后才可以可能对应到物
理地址上(如果打开分页机制,还需要经过分页才能对应上物理地址),虚拟地
址由选择符(16位):偏移值(32位)组成48位地址。选择符的前13位加上在区
分GDT和LDT1位,因此,共有16384个选择符。则最大的虚拟地址空间为:16384×4G=64T的虚拟地址空间。
2,逻辑地址:是指程序产生的和段偏移相关的偏移地址部分。
在x86体系下是程序执行段限长内的偏移地址,就是虚拟地址去掉选择符的16位
地址所剩下的地址就是逻辑地址。应用程序员一般打交道的地址就是
逻辑地址,比如你打印变量的地址,指针的地址,malloc申请内存地址等。
3,线性地址:是虚拟地址到物理地址的中间层,是处理器可寻址空间的地址。
程序代码会产生逻辑地址,或者
关于虚拟地址,线性地址,逻辑地址还有物理地址的区分
最新推荐文章于 2023-08-14 09:48:13 发布