Linux的内存寻址——浅谈分段和分页机制

本文会以80x86架构,linux2.6为例,简单介绍内存的分段和分页机制。

1. 三种内存地址

关于内存地址,首先要了解它有三种,分别是

逻辑地址、线性地址和物理地址。

把逻辑地址转换为线性地址是由一个叫做分段单元的硬件电路完成的。

同样地,还有一个叫做分页单元的硬件电路负责把线性地址转换为物理地址。

那现在很明确地,当我们讨论分段的时候,就是讨论逻辑地址是如何转换成线性地址的。当我们讨论分页的时候,就是在讨论线性地址如何转换成了物理地址

下面分开讨论分段和分页功能是如何实现。

2. 逻辑地址

介绍分段之前,先明确逻辑地址的构成分两部分:一个16位的段选择符,一个32位的偏移量。

其中段选择符由高到低是:13位index,1位TI,2位RPL。它们的作用在下文介绍。

3. 段选择符、段寄存器、段描述符

现在我们知道,段选择符是逻辑地址的一部分,为了方便找到段选择符,处理器提供了6个段寄存器,段寄存器的唯一目的就是存放段选择符。

段描述符有8个字节,负责描述段的特征,包括段的首字节的线性地址、段的最大长度、段的特权级、区分段是数据段还是代码段的标志位……一共9个字段。

段选择符和段描述符具有对应关系,那应该如何通过段选择符得到段描述符呢?答案是查找全局描述符表(

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值