内存寻址(二)

内存寻址(二)

一、硬件中的分页

分页单元(paging unit)把线性地址转换成物理地址。其中的一个关键任务是把所请求的访问类型与线性地址的访问权限相比较,若此次内存访问无效,则产生一个缺页异常。

为了高效工作,线性地址被分成以固定长度的页(page)。页内部连续的线性地址被映射到连续的物理地址中。“页”指的是一组线性地址,或者指的是这组线性地址中包含的数据。分页单元将所有的物理内存分成固定长度的页框或叫物理页(page frame)。每一个页框包含一个页(page)。页框长度=页长度,页框是主存的一部分,是物理内存,页指的是一个数据块,可以存放在任何页框和磁盘中。

将线性地址映射到物理地址的数据结构称为页表(page table)。页表存放在内存(DRAM)中,并在启用分页单元之前必须由内核对页表进行适当的初始化。

1.1 常规分页

80386开始,Intel处理器的分页单元处理4KB页。

32位线性地址被划分为三个区域:

  • Directory(目录) [22:31]
  • Table(页表) [12:21]
  • Offset(偏移量) [0:11]

线性地址的转换分为两步,每一步基于一种转换表,第一步的转换表称为页目录表,第二部的转换表称为页表

常规分页

正在使用的页目录存放在控制寄存器cr3中。线性地址中的Directory字段决定页目录中的目录项,而目录项指向适当的页表。线性地址中Table字段决定页表中的表项,表项含有页所在页框的物理地址,线性地址中Offset字段决定在页框中的偏移。

由于线性地址中Directory字段与Table字段都是10位,因此页目录与页表都可多达 2 10 2^{10} 210

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值