您的位置:首页 > 运维架构 > Linux

Linux High Memory 笔记

2011-10-27 20:51 447 查看
Linux 内核占据线性空间的3G~4G(32位)(/include/asm-i386/page.h中,由__PAGE_OFFSET指定,#define
__PAGE_OFFSET (0xC0000000)),所以能直接映射到Linux内核空间的物理内存不可能大于 1G,Linux设置这个值为 896M,保存在high_memory变量中,因此,物理内存中高于896M的被称为 high memory;那么Linux内核如何定位high memory?这就是Linux为什么不用1G线性空间来直接映射物理内存,而只用了896M,剩下的128M线性空间就是动态映射
high memory 的,当然这些映射都是暂时的,需要映射另外一部分 High Memory 时,需要替换这些映射,具体参看Understanding Linux Kernel。

基于以上的解释,64位Linux 下,内核线性空间不局限于1G,不会有这个问题。

看到 Linux Kernel Development 3rd,High Memory Mappings 这一节,上来就讲high memory是怎么映射,用什么函数,结果连什么是highmemory都没讲清楚,搞得一头雾水,还好Understanding Linux Kernel 上有很好的解释。

参看:Understanding Linux Kernel,Kernel Mappings of High-Memory Page Frames 一节
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: