内核虚拟空间是可用物理内存的限制因素的原因是,内核需要访问所有物理内存,而访问物理内存的方式是通过内核虚拟地址。内核不使用允许直接访问物理内存位置的特殊指令-
它必须为它要与之交谈的任何物理范围设置页表条目。
在“旧样式”方案中,内核进行了设置,以便每个进程的页表将虚拟地址从映射
0xC0000000到
0xFFFFFFFF直接映射到物理地址从映射
0x00000000到
0x3FFFFFFF(这些页已标记为只能在环0-内核模式下访问)。这些是“内核虚拟地址”。在这种方案下,内核可以直接读取和写入任何物理内存位置,而无需费心MMU来更改映射。
在HIGHMEM方案下,从内核虚拟地址到物理地址的映射不是固定的-
物理内存的某些部分在内核需要访问该内存的情况下映射到内核虚拟地址空间中或从内核虚拟地址空间中映射出来。这允许使用更多的物理内存,但是以必须不断更改虚拟到物理的映射为代价,这是相当昂贵的操作。



