Chinaunix首页 | 论坛 | 博客
  • 博客访问: 492207
  • 博文数量: 263
  • 博客积分: 9025
  • 博客等级: 中将
  • 技术积分: 2557
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-01 17:42
文章分类

全部博文(263)

文章存档

2012年(4)

2011年(64)

2010年(47)

2009年(44)

2008年(99)

2007年(5)

我的朋友

分类:

2010-07-01 09:50:09

linux内核规定,只映射0-896M真实的物理内存(如果有的话,称为low memory)到内核空间,也就是0xc0000000+0到0xc0000000+896M,而且是线性映射,有物理地址0<=x& lt;=896M,就有内核地址0xc0000000+x.


如果物理内存y<896M,则high_memory=0xc0000000+y(是虚拟地址);否则 high_memory=0xc0000000+896M
或者说high_memory不能超过0xc0000000+896M
//high_memory = (void *) __va(max_low_pfn * PAGE_SIZE);

那么 high_memory是“具体物理内存的上限对应的虚拟地址”就比较好理解了.

“如果内核空间需要虚拟空间,就在high_memory+8m分配”,同样不难理解.

>>对某个进程而言,它怎么知道系统的物理内存的上限?除非它碰巧分配到物理内存的最上限。
进程是不需要知道这个,只有内核知道
阅读(875) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~