Windows7内存管理机制Superfetch介绍

在了解内存管理机制之前 。我们要弄清楚一些概念 。下面我就来讲解一下什么叫做“工作集” 。
一、
【Windows7内存管理机制Superfetch介绍】首先,我们从内存讲起 。我们可以简单的将内存理解为“数据结构”+“工作集” 。也就是说,在内存这个大房子里面有两个房间,一个是“数据结构”房间,另一个是“工作集”房间 。那么我们就开始讲什么是“工作集”房间 。
我们可以将每一个程序的运行占用的内存当做一个员工,而这些员工要工作的话就必须要走进他们的办公室,然后才能开始工作,那么这些“办公室”就可以理解为工作集了 。引用森木的话就是“简单的说,应用程序在运行过程中进程所占用的内存中的工作空间就叫做工作集” 。
那工作集的作用是什么呢?就如我刚才说的,是各个员工办公的场 所,我们可以想象这些员工来自他们的“家”,也就是硬盘,工作集的作用就是让这些员工从家进入到大厦里(也就是内存里),也可以说,在这个大厦里,门口就 是工作集房间,员工进入了工作集才能进入大厦 。再次引用森木的话就是“工作集的作用是为了应用程序在运行时将硬盘当中对应的文件引入物理内存中” 。
可是我们知道,大厦不能只有工作集一个房间,所有的员工在这个房间里面占用的地方并不是整个大厦(内存) 。而工作集房间的面积大小就要看你这个大厦有多大了 。如果大一点的大厦工作集房间肯定大,那小的大厦这个房间自然就小了 。我在前面也提到过,这个大厦还有一个房间,就是“数据结构” 。
二、 物理内存的数据结构
在数据结构这个房间里,还分有五个小房间 。他们分别是:
Free Page List 自由页面列表(房间)
Page List已修改页面列表(房间)
Page List备用页面列表(房间)
Zero Page List清零页面列表(房间)
Bad Page List坏损页面列表(房间)
那下面我就结合工作集的工作原理来一起讲解数据结构这个房间了 。
三、 工作集的工作原理
举个例子说,开机后,我目前打开了一些程序,譬如有Word、IE、Media 、QQ 。

Windows7内存管理机制Superfetch介绍

文章插图
工作集的概念和作用
他们现在要工作了,就必须进入到他们的办公室(工作集)中 。而这时,工作集这个房间刚刚好满员了 。
先 来说说这些工作:Word我是写了一些字之后没有关闭;IE我根本没用过它;在这时,我现在又想打开一个新程序,,于是考虑到工作集空 间告急,所以关闭了Media 和QQ 。而真的需要工作集当中的页面给他让路 。这时就要将员工分配到数据结构房间 。而数据结构有五个小房间之多,该怎么处 理这些没用的员工呢?
原 来,五个房间中前四个小房间都是为了收纳这些员工准备的 。首先,当我关闭了程序,那么这些员工就不工作了,当然就不在办公室(工作集)当中 。这时,凡是关 闭了的程序的工作集页面就会被转到Free Page List房间里面 。就好像刚才的Media和QQ一样 。而我使用后(修改后)没有关闭的程序,就像Word的工作集页面就会被转入到 Page List房间里 。最后,我连用都没用IE就转入到 Page List里面了 。
对 于Free Page List中的页面大多都是我关闭程序后留下的无用数据 。为了始终能接纳工作集房间排除的员工,便将要这些空间给进程使用 。可是带有无用的页面和代码直接使 用的话就会造成错误 。那么就要将这些无用数据用数字0代替 。所以这些无用数据就会被挂载到Zero Page List房间中等待清零 。当这个房间里面员工(无用数据)达到8个的时候,就会触发清零操作了 。随后再分配给后面的使用 。