LinuxSir.cn,穿越时空的Linuxsir!

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

请教:896M物理内存限制问题

[复制链接]
发表于 2007-3-20 14:18:07 | 显示全部楼层 |阅读模式
小弟最近看书,看到 linux存储器寻址 这方面的内容,有点疑问,请各位大虾帮忙解释一下。
1. linux 将内核影射到0~3G的线性地址空间,而将内核以及内核进程影射到3G以上的线性地址空间。从而导致如果物理内存>896M则不能完全将物理内存影射到线性地址空间中。
2.为了实现由线性地址到物理地址的转换,linux的内核有内核页表、每个用户进程也都有自己的页表。
以上两点是我的理解,不知道是否正确?
如果正确,我有个疑问:既然内核和用户进程都有自己的页表,那就是说内核和用户进程之间的线性地址空间是相互独立的,为什么还要限制内核只能影射到3G以上的空间、用户进程只能影射到0~3G线性空间?
如果没有这个限制那么内核不就可以将4G的物理空间都影射到线性空间中了吗?这样内核可以访问的物理地址就是4G而不是896M了?

请各位大侠给解答一下吧,这个疑问我想了好几天了,谢谢了!
发表于 2007-3-20 16:58:45 | 显示全部楼层
第一个问题inux中内核栈与用户栈是分开的,不像windows那样是共用的,所以就会分为用户区和内核区,如果需要将两个区的数据进行通信的话就要调用如get_from_user()之类的函数来通信. 这是Linux提供的一种机制而已.
第二个问题,我也一直没有搞懂,呵呵. 书上说896M以上内存就不可用了.希望哪个达人解释一下!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-20 20:02:08 | 显示全部楼层
Post by scutan
第一个问题inux中内核栈与用户栈是分开的,不像windows那样是共用的,所以就会分为用户区和内核区

多谢!不过对于第一个问题能不能给解释的详细一些?
“内核栈与用户栈是分开的”与“分为用户区和内核区”两者是什么关系?两者之间有什么必然的联系吗?
windows的内核能在不使用物理地址扩展(PAE)分页机制的情况下直接对1GB以上4G以下的RAM进行寻址吗?

不好意思,小弟愚钝,实在是不明白,问的有点多,请多见谅!
回复 支持 反对

使用道具 举报

发表于 2007-3-21 09:51:52 | 显示全部楼层
2个栈和一个栈有什么关系 就是什么关系  ...........
windows内核只是读取mmu??   单元映射的虚拟地址空间 ............都是4g  无论内存大小...
对于4g无理内存    cpu32位本来就支持~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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