Linux 内核空间地址映射 高端内存 总结


内核空间映射到物理内存是从最低地址0x00000000开始,如下图所示




假设内核地址空间的简单线性地址转换关系为:物理地址 = 虚拟地址  0xC0000000,内核虚拟地址空间对应的物理内存范围0x00000000~0x40000000,只有1G,显然不合理。

内核地址空间划分3部分:ZONE_DMA16M)、ZONE_NORMAL16~896M)和ZONE_HIGHMEM896~1024M)。

ZONE_DMAZONE_NORMAL线性映射属于线性映射区,高端内存ZONE_HIGHMEM0xF8000000~0xFFFFFFFF)动态映射属于vmalloc区,高端内存又分为几部分分别采用vmalloc、固定、临时映射(不详述了)。

内核想访问高于896M的物理地址时,从0xF8000000~0xFFFFFFFF虚拟地址空间中取一部分与想要访问的物理内存建立映射即填充内核PTE页表(内核页表),访问完成之后内核释放0xF8000000~0xFFFFFFFF中的虚拟地址空间,以便其它进程访问,如下图。(采用这128M的虚拟空间,建立临时地址映射,完成了对所有高于896M物理内存的访问



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值