POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 3614|回复: 3
打印 上一主题 下一主题

页面文件不等于虚拟内存?

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-17 23:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一直以为页面文件就等于虚拟内存,但今天偶然的发现,让我对此有了怀疑3g内存,用ramdisk虚拟了一个512m的驱动器,并把pagefile.sys设置到了虚拟驱动器上。刚才玩游戏,切换出来用everest看温度,无意中发现everest中显示页面文件使用110m,我觉得不对,打开任务管理器,发现仅仅游戏就使用了600多m虚拟内存(而我的pagefile.sys只有480m大小),截图如下同时也查看了硬盘上没有其他pagefile.sys文件,所以排除xp自动在其他分区增加页面文件的可能。糊涂了,哪位懂的朋友来解下疑吧,谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
2#
发表于 2008-6-18 11:03 | 只看该作者
win那个任务管理器太不直观,给人造成好多误解。
vm是一套系统+处理器提供的机制
任务管理器那个vm size 是所谓的已提交的虚拟内存(就是告诉系统我要用,你先给我分配出来,但是在你实际读写那块虚拟内存页之前,那页是不分配的,不占物理内存,准确的说是那个进程的工作集并不因此扩张,所以也不给所在的页实际分配空间,啥时候用到了啥时候分配),所以任务管理器那个的虚拟内存大小没啥参考价值。

类似的还有那个pf usage那一项,实际上它的意思是当前系统所有提交的页面在某一时间完全换出来需要占用多少空间,即使那块内存从来没被分配过,只要你提交了,就在那项上占数量,这个东西我不认为有什么参考价值,因为很多页面是共享的,所以那个pf usage看起来相当大。


至于那个页面文件放到ramdisk上到底有没有用,至少我肯定在系统能把所有内存认出来的情况下是只会削弱性能的,因为win2k之后的系统,在没指定页面文件的情况下,是绝不会自己创建页面文件的(2k会自己创建一个20M的),ms的官方文档上都是说当可用内存不足时才会把物理页page到页面文件中,可现实是物理内存相当充足的时候,只要你设置了页面文件,系统就会在向里面写东西(具体是不是真用了,我不清楚,但是确实对页面文件大小有需求,但这种需求是否是换页,很难说,如果没设置,理论上是绝不会操作页面文件的,不过据说有些软件无页面文件时会崩溃,这个我没遇到过,所以不太好说)

当系统无法认出全部的物理内存时,把pagefile放到ramdisk上,也许是有用的,但前提是OS从来就不知道有那块多出来的内存。

PS0:我只遇到过没页面文件不让运行的程序,没遇到过物理内存充足时因为没页面文件崩溃了的程序。

PS1:我也没看见过官方有提供强制写入页面文件的API,谁知到的话请提供下。

[ 本帖最后由 jiliaoke 于 2008-6-18 11:19 编辑 ]
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2008-6-18 13:51 | 只看该作者
谢谢楼上朋友的解答:)很详细很专业,寒,被它俩给误导 这么多年-_-
PS:页面错误应该是hard page fault吧?指程序向系统请求页面文件的次数
花了一晚看了2篇相关的文章,也给大家参考下
http://support.microsoft.com/kb/555223/en-us/
http://en.wikipedia.org/wiki/Paging

[ 本帖最后由 vc2136 于 2008-6-18 14:04 编辑 ]
回复 支持 反对

使用道具 举报

4#
发表于 2008-6-18 15:09 | 只看该作者
原帖由 vc2136 于 2008-6-18 13:51 发表
谢谢楼上朋友的解答:)很详细很专业,寒,被它俩给误导 这么多年-_-
PS:页面错误应该是hard page fault吧?指程序向系统请求页面文件的次数
花了一晚看了2篇相关的文章,也给大家参考下
http://support.microso ...


不客气,其实也没啥,就是一般当coder时间长了算是或多或少了解点,有错误的话还请大家指正~


任务管理器记录的那个缺页错误,应该是记录的当这个进程请求一个其进程地址空间的某个内存页时候,其内存页不再物理内存中,但这并不意味着一定要得向页面文件读取,你考虑下我上面说的那个什么时候读写什么是分配的问题,实际上那个的实现方法就是靠这个缺页错误,一开始请求操作系统提交内存时,将请求的此段页表记录全都设置为不在,所以才不占用内存,之后第一次读写的时候自然引发缺页错误,所以之后系统根据情况处理,比如说是该分配给它一个物理页(就是设置页表记录,将其指向新分配的物理内存页), 还是这个进程的这页真的在页面文件中(简单的说是从硬盘读出来,过程可能有点复杂),或者这个根本就是一个非法地址,直接把进程挂掉。

所以你会看到就算没有分页文件和物理内存足够大的时候,缺页错误数量还是不少,原因就是这个。因此我猜测这个page faults应该记录的是硬缺页+软缺页


PS:其实归根到底还是这个自带的任务管理器有点面向coder了,数值虽然没错,但是很误导人,类似那个可用物理内存数量等等, 何其字面意义都有差距,因此也衍生出了一大批的只能让系统更慢的内存碎片整理的程序,字面意义太误导人。

[ 本帖最后由 jiliaoke 于 2008-6-18 15:16 编辑 ]
回复 支持 反对

使用道具 举报

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

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-2-11 20:50

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

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