LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1082|回复: 1

存储器管理

[复制链接]
发表于 2007-4-9 20:22:51 | 显示全部楼层 |阅读模式
在一个理想的计算机体系结构中,一个页框就是一个存储器存储单元,可用于任何事情:存放内核数据和用户数据、缓存磁盘数据等等。任何种类的数据页都可以存放在任何页框中,没有什么限制。

但是,实际的计算机体系结构有硬件的制约,这限制了页框可以使用的方式。尤其是,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。
上面的内容有高手可以用最通俗的话讲一下吗,谢谢!
发表于 2007-4-22 14:45:26 | 显示全部楼层
在具有大容量RAM的现代32位计算机中,CPU不能直接访问所有的物理存储器,因为线形地址空间太小。
为了应付这两种限制,Linux把物理存储器划分为三个管理区(zone):
****************************************
32位计算机中,线性地址本身就是4g
cpu可以访问所有的物理存储器啊
内核在配置了config_highmem之后,就可以寻址到4g的内核虚拟空间
分区的目的不是为了克服你说的那两种限制。而是适应某些DMA的特殊需要。
我不是高手,说的不对。大家一起研究
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表