linux 查看内存映射,Linux内存管理--地址映射

在Linux系统内内存是通过分页机制进行管理的。CPU的页式内存管理单元负责把一个线性地址最终翻译为一个物理地址。线性地址被分为固定长度的单位,成为页。

物理内存也被划分为固定长度的管理单位,称为物理页或页框

Linux系统采用4级分页机制,即

页全局目录(PGD)

页上级目录(PUD)

页中间目录(PMD)

页表(PT)

页全局目录包含若干页上级目录的地址

页上级目录包含若干页中级目录地址

页中级目录包含若干页表地址

每一个页表指向一个页框

06852f64521c

对于没有启用PAE的32位系统,2级页表就已经足够了。Linux通过使“页上级目录”位和“页中级目录”位全为0,取消了页上级目录和页中级目录字段。

进程切换时,kernel把CR3控制寄存器的内容保存到当前执行的进程描述符中,把下一个进程描述符的值装入CR3。CR3保存着进程页目录的PGD基地址,不同的进程有不同的页目录地址,切换时,内核负责把页目录地址装入CR3控制寄存器。

06852f64521c

32位地址翻译过程如下:

1 从CR3中读取PGD基地址,根据线性地址的22-31位作为页目录项索引值,由PGD基地址和页目录项索引值确定PTE基址。

2 由PTE基址找到页表,根据线性地址的12-22位作为页表项索引值,在页表中找到一个页表项

3 找到的页表项中包含着一个页面的地址,线性地址的0-11位作为页内偏移值和找到的页确定线性地址对应的物理地址。

页表的每一个表项分为2部分,第一部分记录此页表是否在物理内存上,第二部分记录物理内存的地址,进程访问某个虚拟地址去查看页表,如果对应的数据不在物理内存上,则发生缺页异常。由缺页异常处理程序分配物理页。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值