查看: 2232|回复: 5
收起左侧

[分享] 虚拟内存与页面文件的关系 禁用页面文件就真的禁用了虚拟内存吗?(转载)

[复制链接]
qazxsw2
发表于 2017-4-6 10:20:08 | 显示全部楼层 |阅读模式

虚拟内存与页面文件的关系
禁用页面文件就真的禁用了虚拟内存吗?
最近跟朋友聊到大内存可以禁用页面文件的事情。
他说Windows的许多核心功能和有些程序都要使用到虚拟内存,不应禁用虚拟内存。网上搜索了下,几乎所有的人都认为禁用页面文件等于禁用虚拟内存。我查阅了微软白皮书后发现,在Windows系统中是根本不可能禁用虚拟内存的(早期的DOS除外)
举个例子说明一下:禁用页面文件不等于禁用虚拟内存。
系统属性——高级——性能——设置——高级——虚拟内存——更改——无分页文件——设置——重启 OK 页面文件文件为0了。打开任务管理器进程——查看——选择列——选上“虚拟内存大小”——确定,看进程,你运行的这些进程有没有占用虚拟内存?除了核心虚拟的系统空闲进程外,所有的进程都要使用虚拟内存。这涉及到windows的内存管理,所有程序所见到的内存,都是虚拟内存,程序是看不到物理地址的。每个进程都有自己的虚拟地址空间,32位进程这个空间的最大值是4GB。任务管理器的虚拟内存大小就是为进程保留的私有虚拟地址空间的大小。
微软官方技术白皮书上讲:页面文件和物理内存或 RAM 构成虚拟内存。
因此:系统属性——高级——性能——设置——高级——虚拟内存——更改——无分页文件只改变了虚拟内存的一部分。那么禁用磁盘页面文件后,任务管理的PF使用率又是怎么回事呢?
微软官方定义:PF使用率是正被系统使用的页面文件的量。
耶?!页面文件不是为0了吗?PF使用率到底是什么?
我从procexp里发现到内存信息与pf使用率是相同的,但这里的名称改为了commit(提交,执行)明确的表达了PF使用率是提交物理存储器的空间总合=所有进程的虚拟内存空间+核心内存空间 (我以为pf在这里的使用有些误导,也有可能微软当时的构思是不区分开物理内存和页面文件,实际使用中virtualalloc提交物理存储器的时候也是不区分这个关系的)
虚拟内存是涉及到系统内核方面一种技术。磁盘分页文件是采用硬盘上建立一个交换文件来当作内存使用。所以分页文件是可以禁止的。也就是强制不让操作系统把硬盘当作内存来进行进程程序内存上的分配调度。但是虚拟内存是禁止不了的。因为这牵涉到内核设计以及进程程序内存分配调度的方式。这是一个操作系统的基本。不可能说我不要让硬盘来做虚 拟内存,那么整个系统的进程程序内存分配调度方式就来个大的变化,完全采用另外一套分配调度方式。这是不可能的。所以尽管我们禁止了硬盘上的分页交换文件,但是其实系统内核的机制上面还是依照使用虚拟内存这个概念来调度进程程序之间的内存分配的(当然这个时候虚拟内存的概念就不是使用硬盘上的分页文件了)严格上来讲硬盘上的分页文件是系统中虚拟内存这个机制的一种表现形势。
所以罗,内存大于1GB的话,一般没有使用磁盘页面文件的必要。但如果你要使用内存整理之类的软件完全整理内存,是要把物理内存中的内容转移到磁盘页面文件中。不过我以为,大内存一般不需要深度整理内存。由页面文件又联想到的NVIDIA的TurboCache技术。我以为低端独显中的TC其实跟磁盘页面文件道理差不多。一般显卡的显存性能都远好与电脑内存,所以现在主流的大显存独显中,TC技术就没有存在的必要了。
qazxsw2
 楼主| 发表于 2017-4-6 10:21:33 | 显示全部楼层
在win10中,磁盘使用量统计设置里面可以看到当删除了页面文件之后,还有几个号G的虚拟内存占用,虚拟内存是无法删除的
jr21066
发表于 2017-4-6 13:36:51 | 显示全部楼层
虚拟内存与页面文件的关系  禁用页面文件就真的禁用了虚拟内存吗?

最近跟朋友聊到大内存可以禁用页面文件的事情。他说Windows的许多核心功能和有些程序都要使用到虚拟内存,不应禁用虚拟内存。

网上搜索了下,几乎所有的人都认为禁用页面文件等于禁用虚拟内存。我查阅了微软白皮书后发现,在Windows系统中是根本不可能禁用虚拟内存的(早期的DOS除外)
举个例子说明一下:禁用页面文件不等于禁用虚拟内存。
系统属性——高级——性能——设置——高级——虚拟内存——更改——无分页文件——设置——重启 OK 页面文件文件为0了。打开任务管理器进程——查看——选择列——选上“虚拟内存大小”——确定,

看进程,你运行的这些进程有没有占用虚拟内存?除了核心虚拟的系统空闲进程外,所有的进程都要使用虚拟内存。这涉及到windows的内存管理,所有程序所见到的内存,都是虚拟内存,程序是看不到物理地址的。每个进程都有自己的虚拟地址空间,32位进程这个空间的最大值是4GB。任务管理器的虚拟内存大小就是为进程保留的私有虚拟地址空间的大小。
微软官方技术白皮书上讲:页面文件和物理内存或 RAM 构成虚拟内存。
因此:系统属性——高级——性能——设置——高级——虚拟内存——更改——无分页文件只改变了虚拟内存的一部分。
那么禁用磁盘页面文件后,任务管理的PF使用率又是怎么回事呢?

微软官方定义:PF使用率是正被系统使用的页面文件的量。耶?!页面文件不是为0了吗?PF使用率到底是什么?
我从procexp里发现到内存信息与pf使用率是相同的,但这里的名称改为了commit(提交,执行)明确的表达了PF使用率是提交物理存储器的空间总合=所有进程的虚拟内存空间+核心内存空间 (我以为pf在这里的使用有些误导,也有可能微软当时的构思是不区分开物理内存和页面文件,实际使用中virtualalloc提交物理存储器的时候也是不区分这个关系的) 虚拟内存是涉及到系统内核方面一种技术。

磁盘分页文件是采用硬盘上建立一个交换文件来当作内存使用。所以分页文件是可以禁止的。也就是强制不让操作系统把硬盘当作内存来进行进程程序内存上的分配调度。但是虚拟内存是禁止不了的。因为这牵涉到内核设计以及进程程序内存分配调度的方式。这是一个操作系统的基本。不可能说我不要让硬盘来做虚 拟内存,那么整个系统的进程程序内存分配调度方式就来个大的变化,完全采用另外一套分配调度方式。这是不可能的。所以尽管我们禁止了硬盘上的分页交换文件,但是其实系统内核的机制上面还是依照使用虚拟内存这个概念来调度进程程序之间的内存分配的(当然这个时候虚拟内存的概念就不是使用硬盘上的分页文件了)严格上来讲硬盘上的分页文件是系统中虚拟内存这个机制的一种表现形势。所以罗,内存大于1GB的话,一般没有使用磁盘页面文件的必要。但如果你要使用内存整理之类的软件完全整理内存,是要把物理内存中的内容转移到磁盘页面文件中。不过我以为,大内存一般不需要深度整理内存。由页面文件又联想到的NVIDIA的TurboCache技术。我以为低端独显中的TC其实跟磁盘页面文件道理差不多。一般显卡的显存性能都远好与电脑内存,所以现在主流的大显存独显中,TC技术就没有存在的必要了。
jr21066
发表于 2017-4-6 13:38:40 | 显示全部楼层
只说实际情况吧.反正理论也不懂.

完全禁用部分软件会出错.报内存不足.

或因为软件原因.主动的交换内存到页面.或其它原因.目前还是不能完全禁用的.
asdf654333
头像被屏蔽
发表于 2017-4-9 18:33:28 | 显示全部楼层
禁用的只是页面文件 ,虚拟内存是为了提升内存使用效率出来的东西   和页面文件完全不是一个东西
不知道以前是谁翻译的,这么坑
jr21066
发表于 2017-4-9 19:24:09 | 显示全部楼层
页面文件就是虚拟内存的母体.
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-4-27 02:04 , Processed in 0.131083 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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