|
在一个理想的计算机体系结构中,一个页框就是一个存储器存储单元,可用于任何事情:存放内核数据和用户数据、缓存磁盘数据等等。任何种类的数据页都可以存放在任何页框中,没有什么限制。
但是,实际的计算机体系结构有硬件的制约,这限制了页框可以使用的方式。尤其是,Linux内核必须处理80x86体系结构的两种硬件约束:
ISA总线的直接存储器(DMA)处理器有一个严格的限制:它们只能对RAM的前16MB寻址。
在具有大容量RAM的现代32位计算机中,CPU不能直接访问所有的物理存储器,因为线形地址空间太小。
为了应付这两种限制,Linux把物理存储器划分为三个管理区(zone):
ZONE_DMA:包含低于16MB的存储器页
ZONE_NORMAL:包含高于16MB且低于896MB的存储器页
ZONE_HIGHMEM:包含高于896MB的存储器页
ZONE_DMA区包含的页可以由老式基于ISA的设备通过DMA使用。
ZONE_DMA和ZONE_NORMAL和区包含的存储器的“常规”页,通过把它们线性地映射到线性地址空间的第4个GB,内核就可以直接进行访问。相反,包含的存储器页不能由内核直接访问,但它们也线性映射到了线性地址空间的第4个GB。在64位体系结构上没有使用在64位体系结构上没有使用ZONE_NORMAL。
上面的内容有高手可以用最通俗的话讲一下吗,谢谢! |
|