关于 linux内存4G分成3G+1G的问题

发布于 2022-10-15 08:43:54 字数 335 浏览 26 评论 0

差的很多资料都拿主存为160M举例子,但是还有许多不明白啊?
原帖的意思是内核逻辑地址为3G~3G+160M 虚拟地址是3G+160M多一点(vmstart)~vmend

问题1:这160M都给内核了,用户空间怎么办?不能是混着用吧?
问题2:如果我的内存是4G的,3G给用户1G给内核,虚拟地址就应该在4G+了,这也超出unsigned long的长度了,也就是说即使用vmalloc()申请出来内存也没法表示了,
由此推理如果就算你有4G内存操作系统用不了那么多,4G内存完全是浪费,那么操作系统最大能支持多少呢?win7貌似是只有2.96G可用。

求高手!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

喜你已久 2022-10-22 08:43:54

LINUX将虚拟地址空间定为0到4G,该系统将4G的空间分成两个部分,高1G供内核使用,称为内核空间,低3G供用户使用,称为用户空间。

注意了,这个是逻辑地址,逻辑地址到物理地址的转变通过一定的算法来实现,哥们不要弄混了!

厌味 2022-10-22 08:43:54

坛子里有相关的帖子谈论过,搜索下

风苍溪 2022-10-22 08:43:54

回复 3# amarant

    = =! 大概叫什么名字?可以简略的说一下吗我的问题吗?

执手闯天涯 2022-10-22 08:43:54

回复 2# 2007robot

    我没有弄混啊,前面不有个160M的问题么,确实有很多帖子是那么说的,很有值得探讨啊

捂风挽笑 2022-10-22 08:43:54

差的很多资料都拿主存为160M举例子,但是还有许多不明白啊?
原帖的意思是内核逻辑地址为3G~3G+160M 虚拟地址是3G+160M多一点(vmstart)~vmend

问题1:这160M都给内核了,用户空间怎么办?不能是混着用吧?
内核只是有这个映射,并没有拥有这些页框。
问题2:如果我的内存是4G的,3G给用户1G给内核,虚拟地址就应该在4G+了,这也超出unsigned long的长度了,也就是说即使用vmalloc()申请出来内存也没法表示了,
  没搞清楚你这个算法,每个进程都有自己的3G空间,内核的1G大家公用。内核的1G还区分为低端和高端。高端可以非线性映射。
由此推理如果就算你有4G内存操作系统用不了那么多,4G内存完全是浪费,那么操作系统最大能支持多少呢?win7貌似是只有2.96G可用。
  4G是正常情况下可以支持的。但是物理内存要超过了4G,那就要启动PAE支持,也可支持多达64G的空间。

第一个问题你还可以参见这个帖子:
http://bbs.chinaunix.net/thread-1925077-1-3.html

童话里做英雄 2022-10-22 08:43:54

32位操作系统支持4G物理内存,但很多CPU把外设寄存器也映射到物理地址空间里了,所以实际上能使用的物理内存肯定是小于4G的。

至于第一个问题,我以前也纠结了很久,看6楼的链接。

眼藏柔 2022-10-22 08:43:54

从程序员的观点来讲,应该是接触不到物理内存这一级的,一般的内存概念,都是面向操作系统的,这些地址都是假的,要怎么用,要怎么分,都由操作系统来决定。这就是整个游戏规则,至于操作系统如何把这个内存映射到物理内存上去。那一般是OS的开发人员的事情了。

紫罗兰の梦幻 2022-10-22 08:43:54

= =7楼跟9楼 是什么关系??太巧了 大家点一下7楼的帖子就知道了,猿粪啊

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文