不知道linux x86分页设计者的意图是什么?
时间:2010-08-26
来源:互联网
本帖最后由 zhangsuozhu 于 2010-08-26 12:38 编辑
为什么内核要分配3G以上的线性地址空间。为什么不用1G以下的线性地址空间呢。
造成的后果就是内核的32位线性地址只能使用3G以上的1个G。准确的说是896M。而再想多访问,就得做麻烦的高端内存映射到未端的128M内。
如果内核直接用1G以下的线性地址并直接对应到1G以下的物理地址,那么想访问1G以上线性地址,就再分配页表对应1G以上的物理地址就行了。
为什么搞的那么麻烦呢?不理解?
为什么内核要分配3G以上的线性地址空间。为什么不用1G以下的线性地址空间呢。
造成的后果就是内核的32位线性地址只能使用3G以上的1个G。准确的说是896M。而再想多访问,就得做麻烦的高端内存映射到未端的128M内。
如果内核直接用1G以下的线性地址并直接对应到1G以下的物理地址,那么想访问1G以上线性地址,就再分配页表对应1G以上的物理地址就行了。
为什么搞的那么麻烦呢?不理解?
作者: zhangsuozhu 发布时间: 2010-08-26
这跟映射到哪里无关,而跟内核有多大虚拟地址空间有关。因为所有的访问都是经过分页的,如果内核的虚拟地址空间定的,页表数也定了,映射到哪里都只能使用1G内存。
高端内存的产生是,一是因为内核的虚拟地址空间不够,一是因为内核要把自己严格映射到底端。如果内核也像进程那样随意映射,哪个地方的物理内存都能为之所用,但使用总量还只有1G。因为它的虚拟地址空间大小是固定的。
3:1这个比例好像是可以配置的。
高端内存的产生是,一是因为内核的虚拟地址空间不够,一是因为内核要把自己严格映射到底端。如果内核也像进程那样随意映射,哪个地方的物理内存都能为之所用,但使用总量还只有1G。因为它的虚拟地址空间大小是固定的。
3:1这个比例好像是可以配置的。
作者: tempname2 发布时间: 2010-08-26
回复 tempname2
您的意思是内核只能使用1个G的线性地址空间(逻辑地址空间)。而物理地址空间的低端1G内可能无法满足给内核1G线性的空间(即有可能这1G的物理地址空间可能被用户进程占用了一部分,内核占用一部分就用完了),为此引入高端内存的映射,让内核可以访问高于1个G的物理地址。是吗?
您的意思是内核只能使用1个G的线性地址空间(逻辑地址空间)。而物理地址空间的低端1G内可能无法满足给内核1G线性的空间(即有可能这1G的物理地址空间可能被用户进程占用了一部分,内核占用一部分就用完了),为此引入高端内存的映射,让内核可以访问高于1个G的物理地址。是吗?
作者: zhangsuozhu 发布时间: 2010-08-26
可能的原因是内核有时需要访问特定位置的物理内存。然而内核前896M虚拟空间已经钉死在物理内存底端,不可能改变映射。所以留出了一段高端虚拟地址,可供任意映射。
作者: tempname2 发布时间: 2010-08-26
回复 tempname2
嗯。我也这么认为的。
嗯。我也这么认为的。
作者: zhangsuozhu 发布时间: 2010-08-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28