首页UC › 内核空间简单介绍

内核空间简单介绍

进程空间总共有4G,其中最高1G的空间(从0xC0000000开始)便是内核空间,剩下是用户空间。虽然内核空间占据了每个虚拟空间中的最高 1G 字节,但映射到物理内存却总是从最低地址(0×00000000)开始,所以内核空间的线性地址与物理地址之间存在一个偏移量0xC0000000,也叫 PAGE_OFFSET。

相关定义如下:在http://lxr.linux.no/#linux-bk+v2.6.11.5/include/asm-i386/page.h#L131

其中__pa宏把内核空间的线性地址转换为物理地址,__va宏相反。注意这两个宏只适用于内核空间。。。
内核虚拟地址空间只有1GB大小,因此超出1GB大小的物理内存(即高端内存)就不能映射到内核空间。为此,内核地址空间的后128MB被腾出来,专门用于映射高端内存,否则,没有线性地址的高端内存不能被内核所访问。
因此,除去为映射高端内存而腾出的128MB,直接能够映射的物理内存大小只有896MB,在源码中叫high_memory。如下图所示:
20130830115647
我们内核新手之旅的下一站是:内核空间页表的建立

发表评论