[kernel Q1]虚拟地址空间会不会用光了
有个问题一直困扰我:
我们知道,内核的虚拟地址空间为4G(32位机)。其中内核固定占用一部分空间映射,用户程序动态占用一部分空间映射,再加上一些设备寄存器的映射。有没有一种可能,虚拟地址空间全部被占用了,此时再添加设备就无法进行端口映射了?或者高端的内存无法进行临时映射?
不知道大家有没有想过这个问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
专门注册个MJ来问问题,还给编号么。。。。。
现在已经面临着“物理地址空间大于虚拟地址空间”这种问题了,以后64位系统就好了。
进程的虚拟地址空间,顶上1G由内核占据,1G中的前896M由内核固定、连续映射到底896M物理内存(如果有那么多的物理内存的话)。剩下的128M由内核轮流、分时使用。高端内存或者端口本来就只有那么一点虚拟内存可用。
就是说高端内存很可能被用光啦。
高端内存一般是说大于896M部分的物理内存,你是说内核那高128M虚拟地址空间么?那块地方本来就很紧张吧。
不是896~1G那段空间,而是用于设备地址空间映射的虚拟空间,如果这段空间用光了,设备上的寄存器,存储块等就无法直接映射到虚拟地址空间了?
回复 5# 懂医术的厨师
你把我说迷离了,内核能自由映射的虚拟地址空间只有那128M吧。
是3G+896M到4G这一段虚拟地址空间。
写的太块了,没过脑子,你说的对,就是这128M~~~用光了就用光了是吧?
应该是这样,分出个高端内存已经有虚拟地址空间太小的迹象。我记得情景分析里讲到这里时说,反正现在没有人用那么大内存,然后括号里补充,说不定过几年又要大跌眼镜了。最后果然大跌眼镜。。。。。
恩,多谢tempname3。
p.s. 好马甲的名字