Linux 虚拟地址,逻辑地址,物理地址

逻辑地址(Logical Address):

包含在机器语言指令中用来指定一个操作数或一条指令的地址,每个逻辑地址都由一个段和偏移量组成,偏移量指明了从段开始的地方到实际地址之间的距离。
由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干;
应用编程中,变量a,结构体st的地址都可以理解为逻辑地址;
应用编程的时候并不知道某个具体变量的具体地址,只能相对程序入口的首地址的偏移量来定位,由此产生逻辑地址,这个也是段式内存管理的由来,可以简单理解为便于程序员编程而产生的;


线性地址(linear address)(也称虚拟地址 virtual address)

是一个32位无符号整数,可以用来表示高达4GB的地址,线性地址通常用十六进制数字表示,值的范围从0x00000000到0xffffffff

是逻辑地址到物理地址变换之间的中间层;
程序代码编译后产生逻辑地址,或者说是段中的偏移地址,加上相应段的基地址就生成了一个线性地址,也可以称为CPU的可寻址范围,比如32bitCPU可寻址4G bytes空间;
对linux而言,CPU将4GB划分为两个部分,0-3GB为用户空间(也可以叫核外空间),3-4GB为内核空间(也可以叫核内空间)。操系统相关的代码,即内核部分的代码数据都会映射到内核空间,而用户进程则会映射到用户空间。
 

物理地址(physical address)

用于内存芯片级内存单元寻址。它们与从微处理器的地址引脚按发送到内存总线上的电信号相对应。物理地址由32位或64位无符号整数表示

linux关于内存寻址可以分为几个阶段,首先由分段机制,然后有分页机制。
分页机制在段机制之后进行,以完成线性—物理地址的转换过程。段机制把逻辑地址转换为线性址页机制进一步把该线性地址再转换为物理地址


逻辑地址 ----(段表)---> 线性地址 — (页表)—> 物理地址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值