找回密码
 注册
快捷导航
查看: 2008|回复: 8

【请教】再问虚拟内存和页面文件

[复制链接] |自动提醒
阅读字号:

9

回帖

0

积分

97

资产值

入门会员 Rank: 1

注册时间
2014-9-3
发表于 2014-9-5 21:57:12| 字数 312| - 中国–广东–东莞 电信 | 显示全部楼层 |阅读模式
在网上翻了很久也没有找到答案,所以在这里请教各位大牛:
所谓的虚拟内存指的是页面文件,当物理内存不够时在硬盘划分虚拟内存,而事实是不管物理内存有没有用完,系统都要划分虚拟内存的。
我用32G内存,做了RAMDISK存放临时文件,并且禁用了页面文件,但是在AIDA64中看到系统仍然存在65804MB的虚拟内存,最多时候用到8G而同时物理内存用到6G。
我分别在SSD和RAMDISK中设置页面文件1G-15G,而系统始终默认了65804MB的虚拟内存,页面文件当前使用和峰值使用都是0MB。

所以有些搞不清楚 到底虚拟内存和页面文件什么关系。为什么禁用了页面文件 系统仍然存在65G的虚拟内存
即使设置了页面文件,为什么使用情况是0MB?
T40 T61 X201 T410 W530X2

9

回帖

0

积分

97

资产值

入门会员 Rank: 1

注册时间
2014-9-3
 楼主| 发表于 2014-9-5 23:17:18| 字数 104| - 中国–广东–东莞 电信 | 显示全部楼层
刚才恶补了一下才知道
页面文件和虚拟内存两码事,开不开页面文件系统都是有虚拟内存的。
如果所有盘不设置页面文件,虚拟内存默认最大空间似乎比C盘剩余容量小一点点,应该是默认C盘了。
看来要想跑的快 非得RAMOS才行。
T40 T61 X201 T410 W530X2
回复 支持 反对

使用道具 举报

1221

回帖

40

积分

4385

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-5-30
发表于 2014-9-6 13:39:48| 字数 575| - 中国–四川–绵阳 电信 | 显示全部楼层
Windows系统中运行的每个进程理论上都能访问所有地址空间。

以下以32位系统为例,也就是0x00000000-0xffffffff的范围(当然其中有些部分是无效的地址,还跟进程的访问权限有关)。

简单地说就是每个进程都需要一个大小为4G的内存范围,那么如果运行50个进程,完全不用虚拟内存技术的话就意味着需要200G的物理内存,而且系统同时运行的进程数也是不固定的,所以虚拟内存是必要的。

那到底什么是虚拟内存呢?简单的说,让有限的物理内存,比如2G吧,在每个进程“看起来”似乎都有4G的地址空间,这就是虚拟内存技术。当然你会问这是怎么做到的呢?奥妙就在于虽然每个进程都能“看到”0x00000000-0xffffffff的范围,但是并不是所有这4G的内存同时都用到了。

于是对于那些当前那些未被用到的内存页面,系统的内存管理器就会将它们按照某种对应的方式从物理内存中存入硬盘,这就产生了所谓的页面文件pagefile.sys,当某个进程需要用到被存入pagefile.sys的内存页面时,CPU会产生所谓的page fault中断,进程会被挂起,而内存管理器此时会从pagefile.sys中读取该页面并放入物理内存中,然后resume该进程的运行,所以这个进程一直蒙在鼓里,以为4G的地址空间都为我独享一般。

希望能clarify something...
http://chris.wu.yale.googlepages.com/home
回复 支持 反对

使用道具 举报

9

回帖

0

积分

97

资产值

入门会员 Rank: 1

注册时间
2014-9-3
 楼主| 发表于 2014-9-6 19:19:31| 字数 88| - 中国–广东–东莞 电信 | 显示全部楼层
楼上朋友解释的很清楚
我原本的用意是尽量使用物理内存,我有32G的物理内存,但实际只用到6G 而同时虚拟内存用到8G,
如果让更多的虚拟内存在剩余物理内存中运行是不是能提高系统速度?
T40 T61 X201 T410 W530X2
回复 支持 反对

使用道具 举报

4312

回帖

43

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2006-1-17
铜牌荣誉勋章(注册8年以上会员)
发表于 2014-9-9 07:36:31| 字数 5| - 中国–江苏–常州 移动 | 显示全部楼层
长知识了!
舒服从别人那里开始...(1版)
舒服、先人后己。(2版)
舒人、悦己。(3版)
Share Rose Get Fun
回复 支持 反对

使用道具 举报

1万

回帖

237

积分

8万

资产值

至尊会员II Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2005-9-26
银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)月全勤勋章年全勤勋章2023年全勤勋章2024
发表于 2014-9-9 10:12:35| 字数 305| - 中国–湖南–长沙 联通 | 显示全部楼层
QUOTE:
Posted by _1234 on 2014-9-6 13:39
Windows系统中运行的每个进程理论上都能访问所有地址空间。

以下以32位系统为例,也就是0x00000000-0xffffffff的范围(当然其中有些部分是无效的地址,还跟进程的访问权限有关)。

简单地说就是每个进程都 ...

还是不十分明白,但关了页面文件时是如何处理的?
有一点是肯定的,当内存足够,关掉页面文件会快很多。当然,内存8G又用的32位系统,又不能开readfor4G(某些集显机器),把页面文件设到内存盘也是一样快的。来回从机械硬盘上的页面文件读写数据就会慢,在用了大量内存的情况下,切换程序或是甚至调下输入法硬盘都会狂转卡半天。
回复 支持 反对

使用道具 举报

1万

回帖

237

积分

8万

资产值

至尊会员II Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2005-9-26
银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)月全勤勋章年全勤勋章2023年全勤勋章2024
发表于 2014-9-9 10:26:00| 字数 214| - 中国–湖南–长沙 联通 | 显示全部楼层
QUOTE:
Posted by 两轮之翼 on 2014-9-5 21:57
在网上翻了很久也没有找到答案,所以在这里请教各位大牛:
所谓的虚拟内存指的是页面文件,当物理内存不够时在硬盘划分虚拟内存,而事实是不管物理内存有没有用完,系统都要划分虚拟内存的。
我用32G内存,做 ...

度娘说AIDA64里的虚拟内存=物理内存+交换分区
你的32G内存,所以虚拟内存是64G,我的8G内存,虚拟内存是16G。
你可以拆一根内存试试,看是不是按这个变化。
回复 支持 反对

使用道具 举报

1万

回帖

237

积分

8万

资产值

至尊会员II Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2005-9-26
银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)月全勤勋章年全勤勋章2023年全勤勋章2024
发表于 2014-9-9 10:35:08| 字数 91| - 中国–湖南–长沙 联通 | 显示全部楼层
这么说吧
物理内存就是物理内存
交换分区=物理内存+页面文件
虚拟内存=交换分区+物理内存=物理内存+页面文件+物理内存
算法是这样,但完全不明白为什么要这样,一个虚拟内存把物理内存加两次。
回复 支持 反对

使用道具 举报

9

回帖

0

积分

97

资产值

入门会员 Rank: 1

注册时间
2014-9-3
 楼主| 发表于 2014-9-15 02:50:57| 字数 71| - 中国–广东–东莞 电信 | 显示全部楼层
不是加两次
其实就是物理内存+硬盘上的页面文件+硬盘上的一部分空间
用户似乎只能管理到页面文件的大小,不管你设不设他,系统都会在硬盘上虚拟一块的。
T40 T61 X201 T410 W530X2
回复 支持 反对

使用道具 举报

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

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2025-1-18 00:37 , Processed in 0.125829 second(s), 38 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|在线留言|专门网

返回顶部