|
原帖由 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 编辑 ] |
|