免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1648 | 回复: 2
打印 上一主题 下一主题

[内核入门] 关于虚拟内存的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-13 11:19 |显示全部楼层 |倒序浏览
可能很傻的问题,请大家指点一下。

我的理解是,在程序运行过程中,只有当用到相应的数据,比如引用或是赋值某个数组元素时,才发生缺页中断调页,数组元素才真正在物理内存上分配空间。

如果这个理解是对的,我的问题是,没放在物理内存中的数据,放在何处呢?

比如,我开了一个1G的数组,并将所有元素设为1,程序运行时发现驻留集大小远没有1G。可是这"1G个1"的信息总要1G的空间到存放吧?如果没放在物理内存中,那是放在什么地方呢? (我的系统上没有swap)

论坛徽章:
0
2 [报告]
发表于 2012-05-13 11:56 |显示全部楼层
本帖最后由 morfast 于 2012-05-13 11:56 编辑

回复 2# 瀚海书香


    谢谢版主。:wink:

    你说的这两点我明白。但我不解的是,假如是在应用程序中申请空间,比如,申请了1G,然后把这1G设置为1。那么,这“1G数据都是1"这一信息,总共需要1G的空间来存放的吧?如果不是放在物理内存中,(即用ps或top看到的RES大小远没有1G),是放在何处呢?

   磁盘文件的map好理解,就存放在硬盘上的文件上,需要调页时才发生IO操作读取。但应用程序中申请空间的情况我就想不明白了。

论坛徽章:
0
3 [报告]
发表于 2012-05-13 17:12 |显示全部楼层
回复 5# 瀚海书香


    非常感谢!

    我刚刚也试了一下,的确如此。我的机器上没设置swap,RSS就等于数组的大小了。
    之前我也这么试过,可能是读错了ps的输出吧,所以误会了。现在明白了

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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP