- 论坛徽章:
- 0
|
原帖由 menp9999 于 2005-12-7 21:10 发表
同交换不交换无关,主要是线性地址4G的限制,和内核的线性地址只有一1G有关系,在64位下没有896M的哪个概念.
这个我赞同。
我的意思是,NORMAL和HIMEM可以合并,然后统一用一种共同的方法把这个区域物理内存映射入1G的线性地址空间,这样完全是可以的。但这样LINUX必须放弃 pa宏的计算方法:
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
我怀疑windows和solaris就不存在这样的划分。
linux这样的划分很可能和linux是从低端系统发展起来的有关,也许是个遗留问题?
CR3中的是物理地址的算法决定了页表项只能放在zone_NORMAL区。
schudule->context_switch->switch_mm->load_cr3(next->pgd)->write_cr3(__pa(pgdir)):
目前的这种划分,在大内存的时候,可能会对系统造成很大限制。
我在想这种方案的优劣在哪里?
说不定未来,很有可能会改掉。
当然,可能性不大,毕竟64位系统的普及会使这样的需求越来越没必要 |
|