Chinaunix首页 | 论坛 | 博客
  • 博客访问: 251940
  • 博文数量: 75
  • 博客积分: 1447
  • 博客等级: 中尉
  • 技术积分: 865
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-21 21:48
文章分类

全部博文(75)

文章存档

2020年(2)

2016年(3)

2015年(1)

2014年(4)

2013年(1)

2012年(23)

2011年(15)

2010年(26)

分类:

2010-05-13 17:48:46

在/arch/x86/include/asm/page_64_types.h下有如下两行:
#define __START_KERNEL_map _AC(0xffffffff80000000, UL)
#define KERNEL_IMAGE_START _AC(0xffffffff80000000, UL)

这就是对空间大小的划分,在0xffffffff80000000之前的是给用户空间,在0xffffffff80000000之后的给内核空间,如果你现在手里有大约12G的内存想让内核态下可以使用大小10G的空间可以修改此值,将上面两句改为如下:

#define __START_KERNEL_map _AC(0xfffffffc00000000, UL)
#define KERNEL_IMAGE_START _AC(0xfffffffc00000000, UL)

然后,再将你的内核加载到连续的物理内存起始地址即可,这样内核就可以有16G寻址空间
物理地址分布情况可以查看e820的信息取得。
阅读(5708) | 评论(1) | 转发(0) |
0

上一篇:ls

下一篇:objdump

给主人留下些什么吧!~~

lofeng4102010-11-10 01:30:13

如果我的系统上有16G物理内存,我这样修改,使得内核有16G的空间,这个时候,这个16G物理内存具体都是怎么分配的呢?
内核有使用到多少?用户空间使用的又是多少呢?