我所理解的high memory

本文介绍了Linux系统中High Memory的概念,解释了32位系统中由于地址空间限制,如何通过固定映射和动态映射来处理大于1GB的物理内存。内容涵盖了High Memory与Low Memory的区别,以及在64位系统下的不同。此外,还讨论了vmalloc区在内存管理中的作用,并对比了i386和ARM架构下的内存分布特点。
摘要由CSDN通过智能技术生成

关于Linux 中high memory,网上已经有好多人讲解,在这里把我收集到的资料归纳总结一下,同时加入一些自己的理解,如有不正确之处欢迎指正。

一: 为什么需要high memory

32位的CPU,最大寻址范围2^32-1, 也就是虚拟内存空间的范围为0~4G。 Linux一般吧0~3G划分为用户地址空间,3G到4G为内核地址空间。


图1: 用户和内核地址空间分布

最高的1GB虚拟空间由所有进程和内核共享,因此内核最多寻址1G的虚拟地址空间。如果物理内存超过1G,内核该如何映射呢? 

Linux采取的策略内核空间的前“896M”(注:896M是一个笼统的概念,详细参照第二节)采用固定映射(也可以称为静态映射,直接映射),这部分页表是固定的,虚拟地址 - PAGE_OFFSET = 物理地址(PAGE_OFFSET 一般为3G,0xC0000000),这部分的映射是系统刚刚初始化的时候就建立的,这段物理内存被称为Low Memory。而虚拟地址空间的后“128M”,也就是3G+“896M” ~ 4G-1部分采用动态映射。这样如果物理内存

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值