Post by freesky64 0~1G的物理空间直接与内核空间的3~4G线性地址空间映射,用户程序内存映射到哪儿去了? 如果小于1G范围内的物理内存有600MB被映射给了用户程序,那么小于1G的物理内存实际映射给内核的最多也只有424MB,内核还有600M的线性空间可以被映射啊,这一部分难道不能被映射到大于1G的物理内存上去? 还有896MB的限制是只针对内核吗?用户程序的线性空间可以直接映射到〉896MB范围的物理内存吗?
使用道具 举报
Post by freesky64 谢谢,各位的帮助,我想我搞清楚这个问题了。 896MB以上的物理内存不能被内核直接访问,是因为0~896MB的物理内存是与内核的3G~3G+896MB顺序映射的,而内核剩下的虚拟地址空间还要为比如vmalloc区预留,所以不能再直接映射了,因此不能直接访问。而大于896MB的物理内存若需访问必须动态映射到内核空间里高端内存区。 这个896MB以上的只是不能直接访问,而不是说硬件不支持4G的物理空间,需要的时候还有动态映射的访问高端物理内存。 我理解得对吗?
Post by freesky64 在看讲Linux内核的书,但是遇到个问题,想不通,问问大家。谢谢。 书上说,高于896MB的物理存储器被划分为Zone_Highmem区,其中包含的存储器页不能由内核直接访问。但是32的机器能够访问的物理内存不是应该是4G吗? 哪位大哥能解释一下吗?谢谢!
本版积分规则 发表回复 回帖后跳转到最后一页