几种地址的理解

本文介绍了逻辑地址、线性地址(虚拟地址)和物理地址的区别,以及在16位和32位机器上的地址转换过程。在32位Linux系统中,由于寄存器已经是32位,段式管理不再需要,逻辑地址和线性地址相同。通过页式管理,实现虚拟内存技术,每个进程拥有4GB的虚拟地址空间,其中3GB属于用户空间,1GB属于内核空间。虚拟内存机制确保进程间的地址隔离,只有在访问时才会分配实际物理内存,避免了内存溢出的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑地址是指汇编后的地址,线性地址(虚拟地址)是指C代码中(汇编前的地址),物理地址是指实际的地址空间。

               

               段式管理                   页式管理

   逻辑地址----------->线性地址------------>物理地址

 

在16位的机器中,逻辑地址(偏移量)+基地址=物理地址 (寄存器为16位的,而地址总线为20根,所以16位地址<<4后得到一个基地址,再加上逻辑地址,得到最终的物理地址)。

 

在32位的机器中,段寄存器存放的是段地址的选择器,用该选择器从内存中得到一个32位的段地址,存储单元的物理地址就是该段地址加上段内偏移量。如下图所示:

 

 

 

 

如果32位的机器用上面的段式管理得到的是线性地址后,则再通过页式管理可以得到实际的物理地址了。页式管理如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值