当前位置:文档之家› 虚拟内存管理实习报告

虚拟内存管理实习报告

虚拟内存管理实习报告
虚拟内存管理实习报告

虚拟内存管理实习报告

姓名李炜学号1100012810

日期4月10日

目录

内容一:总体概述 (3)

内容二:任务完成情况 (3)

任务完成列表(Y/N) (3)

具体Exercise的完成情况 (3)

内容三:遇到的困难以及解决方法 (9)

内容四:收获及感想 (9)

内容五:对课程的意见和建议 (9)

内容六:参考文献 (10)

内容一:总体概述

这次实习主要是加入对tlb和虚拟内存的进一步支持,并且实验一下在原理课上学到过的各种替换策略,tlb是为了加速从虚拟地址到物理地址的翻译过程,而虚拟内存更是肩负着提供比实际物理内存更大的虚拟内存的重任,有了虚拟内存,才可以运行比实际内存更大的程序。

内容二:任务完成情况

任务完成列表(Y/N)

具体Exercise的完成情况

TLB异常处理部分:

Exercise 1:

https://www.doczj.com/doc/6b17773122.html,

这个文件中和本次实习相关的主要是StartProcess这个函数,在这个函数中,首先打开一个文件,判断这个文件是否是可执行文件,如果是的话,为这个文件开辟一块地址空间来运行一个新线程,之后初始化和这个线程相关的寄存器,初始化完成之后运行这个程序。其中在开辟新的地址空间的时候,为这个地址空间中的page table的每一项进行了初始化。所以在后面对translationEntry增加内容的时候,最好还是在这个初始化过程中加入相应的初始化操作。

在构造可执行文件的空间时,首先读入这个文件的开始部分,即noffH,这个部分包含了文件的magic number(表示是否是可执行文件),文件中代码,数据,栈等各部分的位置、大小等。之后根据这个大小,按照页大小分配内存页数量,初始化page table,将可执行文件的代码段和数据段按照虚存与内存一一对应的方式读入内存中。

https://www.doczj.com/doc/6b17773122.html,(h)

在这个文件中,主要是针对虚拟机整体的操作,其中在构造函数中,首先初始化了寄存器和

内存,这个部分和本次实习没有关系,下面初始化了tlb中的项。开始的时候,我认为对于每个地址空间都应该有自己的tlb,每次切换线(进)程的时候都要同时切换tlb内容,这个方案在nachos这样的虚拟机上实际上时可以实现的,而且tlb的miss可能会比只有一个tlb 要少很多,但是这种情况不符合计算机系统的实际情况,因为对于实际的计算机体系结构来说,tlb是一个硬件不见,每个cpu的核心应该具备一个tlb,因为多超标量等优化机制的存在,线程切换十分频繁,如果每次都要同时按照线程切换tlb,那样代价太大了,tlb本身是用来利用局部性来减少对page table的访问的,如果频繁改变tlb内容开销上太大,得不偿失。

在这个文件中,与本次实习相关的还有raiseexception这个函数,这个函数其实就是针对不同的异常调用相应的处理函数的地方,在处理异常之前要先使得系统进入系统模式运行(之前在用户模式下)。

https://www.doczj.com/doc/6b17773122.html,(h)

这个文件在这次实习中具有十分重要的作用,readMem和writeMem分别是从内存中读和写的函数,它们都需要首先进行虚拟地址到物理地址的转换,如果转换成功则继续读写操作,否则会对因为转换产生的异常进行处理。在translate函数中,首先检查想要读取的内存地址是不是对齐的,之后根据虚拟地址算出相应的虚拟页号和页内偏移(需要转换的其实只是虚拟页号到物理页号,页内偏移在虚拟页中和在物理页中都是相同的)。因为nachos本身只支持tlb或者page table中的一个,所以如果是page table模式的话,那么就在page table中直接取出vpn对应的项,并且取出物理页号,当然其间也要进行有效性检查,如果所需要的物理页是无效的,就会引发page fault异常。如果使用的是tlb模式,则在tlb中遍历查找想要读取的vpn,如果找不到,同样会引发page fault异常。之后的操作就是读出这个物理页的具体地址以及一些其它的检查操作。

https://www.doczj.com/doc/6b17773122.html,

对于这个文件来说,只有一个Exceptionhandler函数,用来判断异常的类型和相应的处理方式并且处理异常,对于本次实习来说,其实就是加一个else if判断pagefaultexception异常并处理这个tlb miss。

Exercise 2:

从ExceptionHandler中可以看到对于系统调用的处理方法,就是输出调试信息,并且停止用户进程,对于TLB miss来说,开始的时候我仍然使用了PageFaultException,因为在translate 文件中如果出现tlb miss会返回PageFaultException,也就是说在handler中首先判断产生的是PageFaultException,判断完之后,我感到很茫然,因为除了需要知道是何种异常外,还必须知道引发这个寻址异常的具体地址是什么,这样才能从page table中调入这个页,去哪里得知这个信息呢?重新去看translate中的读写内存的两个函数,可以看到translate函数返回异常,那么就会调用RaiseException这个函数,而我们可以看到引发异常的那个地址也被当做参数传了进去,在这个函数中,和这个我们需要的地址有关的就是把这个地址写到了一个寄存器中,因为寄存器是machine中的属性,也就是说不管是用户进程还是系统进程都共享相同的寄存器,这样我们就知道可以在exception handler中通过读取寄存器信息来得到那个引发异常的地址了。那么是哪个寄存器呢?从raiseException中可以看到是BadVAddrReg,这个是一个宏,对应着39号寄存器。这样,在ExceptionHandler中,我首先

通过machine的读取寄存器的方法读出BadVAddrReg寄存器中的内容,有了这个地址就可以开始具体的替换过程了,对于替换的方法,我首先实验了通过hit次数多少来决定去除哪一个entry的方法,因为其中许多操作都涉及machine中的信息,所以我把这个处理函数放在了machine中,这个函数接受地址作为参数,学习translate中的方法,首先通过address计算获得vpn和offset,其实后来发现offset用处不大,只是在输出哪个物理地址时有帮助,有了vpn也就知道了哪个页要被换进,问题就是要找到一个tlb项来换出,对于这个目标来说,也很简单,只要通过遍历tlb表项,找到hit最小的一项,如果有valid为false的项,那么可以直接把这个项作为应该被换出的项即可,之后把这个tlb项写回到page table中,并且把vpn号page table中的项调入这个应该被换出的项所在的位置。之后还需要做些tlb项的初始化工作,把这个项的hit置为1(如果置成0的话可能会造成震荡,这一点是我在调试程序的时候,发现的),valid置为TRUE,为了看哪个地址引发了异常,我还让它输出了对应的物理地址。当然还要维护这个hit值,也就是说,在translate中每次tlb项被找到,就使相应的hit值加一。

但是再后来的测试阶段我发现matmult这个算矩阵乘法的程序会产生真正的pagefault(内存不足),这样就有必要区分tlb miss和page fault了,于是我在machine.h中定义了新的异常类型叫TLBMissException,并且在exceptionHandler中添加了对这种类型的处理。

Exercise 3:

已经有了上一个exercise的基础,其实这个exercise也就不难了,我首先选择了使用aging 算法(因为体系大作业曾经实现过,觉得不难),我通过定义宏GROWOLD使得tlb项的age 右移一位,通过REFEREDTO使得age右移一位并且首位或上1,每次tlb项被使用时,就对它REFEREDTO,而在Exceptionhandler中如果不是要找的项,就先对它GROWOLD,这样较近时间被使用的tlb项就不会很快被换出(找的时候直接找age最小的就可以)。说起来比较简单,但是实际编写的过程中,发现在sort这个程序的测试中出现了震荡现象,经过仔细检查发现是因为age在translationEntry中被我定义为了int,但是实际上必须被定义成unsigned int,在找age最小的时候也需要使用unsigned int类型。

之后听同学说lru实现起来比较简单,只需要通过stats->totalTick就可以知道最近被访问的时间了,于是我在之前应该REFEREDTO的地方把lastUsedTime赋成stats->totalTick,比较的时候同样找lastUsedTime最小的项。由于实现起来差不多,所以就不多说了。

测试的时候我主要跑了halt,sort,matmult三个程序,halt是用来验证pageTable中的项可以被换入的正确性的,对性能比较上基本没有意义。而在测试sort时,aging算法和lru竟然产生了相同的miss次数,在tlb最多为8的时候,内存为1024页的时候,都产生了8678次miss,改变一些参数仍然相同,于是我只好继续通过matmult来测试。但是matmult在测试时会产生很大的问题,tlb中竟然出现了多次相同的项且valid都是1,我查了很长时间程序都不知道哪里错了,后来看matmult程序本身,发现注释说这个程序会造成内存溢出,于是我明白了,因为开始的时候我没有区别tlb miss和page fault,所以其实是引发了真正的page fault,之后像之前说的,我首先扩大了内存页数从128变到1024,之后区别page fault 和tlb miss,这样之后测试aging和lru的miss次数,结果令我大跌眼睛,aging miss发生了8647次,而lru却只发生了5722次,原本一位aging会更高级的,结果却是原理更加简单的lru的miss次数更少。

分页式内存管理部分:

Exercise 4:

由于nachos本身提供了bitmap这个很好的数据结构,所以我就直接使用bitmap来指示内存页的使用情况了,因为一个机器只能有一个内存,所以我把bitmap直接放到了https://www.doczj.com/doc/6b17773122.html, 中作为全局的数据结构称为memoryBitMap,并且在原来的if user_program中加入创建bitmap的new 操作。这样之后,就需要维护这个位图,也就是在addrspace中的初始化pagetable的时候,把原本是一一对应的虚存与物理内存的映射关系,改变成每次到bitmap 中寻找空闲的页(bitmap中提供了find操作,可以直接做到,而且找到以后就已经标记了)。也就是说,在原来physical page直接赋成i的地方改成memoryBitMap->find就可以了。

对于要求的记录内存使用情况,我在bitmap中添加了一个属性usedBits来记录使用了多少内存页,在初始化时赋成0,在clear的时候减一,在find的时候加一。为了输出使用情况,加入一个函数打印usedBits除以numBits的结果。

Exercise 5:

要支持多线程操作比较复杂,我花费了比较长的时间,终于找到了实现的方法,首先在初始化内存空间的时候,内存不能每次都清空,这样就需要把bzero这个操作注释掉,转而在每次page table找到某个页的时候将这个页置成0,接着向下看,到了把可执行文件中的代码段和数据段内容写入内存的部分,原来的时候可以直接把两个部分的内容全部写入内存,但是加入了分页机制后,就不能直接一一对应地写了,而要按照页来写,于是我采用了逐字节写的方式,每次先根据虚拟地址算出vpn和页内偏移,并且计算出在文件中的位置,然后把这个字节写入内存中相应位置。

这样之后我转去修改progtest,我定义了用于启动可执行文件的函数作为线程需要用到的包装函数,然后fork两个线程,分别启动相同的sort可执行文件,这样之后发现只有一个文件能够运行,到了切换线程之后马上就会出现unexpected exception,我想了半天,终于明白了是之前的tlb的问题,在切换线程的时候,必须要把tlb清空(全部置成invalid),否则tlb中存的地址还是上一个线程的对应关系,这样自然会出错,于是我在thread中的restoreuserstate中把tlb全部置成失效,这样修改之后终于可以正常运行了。

Exercise 6,Exercise7:

首先,需要像之前的tlb miss一样先在exception里面加入对pageFaultException的处理,由于之前图省事,我在开始的时候把tlb miss也作为了page fault来处理,但是到了这里自然不能还这样处理了(之前的时候实际上根本不会出现page fault,如果出现的话那就是程序有错误,而我确实出现过,但是已经改正了,也就是之前所说的tlb清除操作),于是我先重新在machine里面定义了tlbMissException,之后在translate里面把需要使用tlb miss处理的都改成return tlbMissException,最后把exception里的改名,这样原来的tlb miss就彻底和page fault的处理分离开了。按照和之前tlb miss类似的步骤,加入page fault的处理,也就是在exception中加入pageFaultHandler在machine里面加入pageFaultSwap,handler和之前几乎完全一样,这里就不说了,重点当然在于pageFaultSwap,其实如果没有lazy-loading的策略,那么就不会产生page fault,所以我就一起实现了。还是先说这个swap函数,要在什么条件下触发page fault呢?这个看似简单的问题困扰了我很久,如果只有一个线程的话就十分简单了,当然就是page table里面的项valid是False的时候,但是对于有两个甚至多个线程的时候,就不是那么简单了,因为目前只有从page table到内存的指向关系,而没有倒

过来从内存指向page table的,这样,如果线程1的某个页被线程2选择替代,那么并没有很有效的机制来使得线程1的page table及时修改其中指向相应页的项为valid,于是我决定修改bitmap,使得这个位图不仅能指示哪些页可用,而且需要它充当类似后面的challenge 要求的倒排页表的功能,当然现在还没有那么高级,而只是需要有和内存中的页一一对应的,能够标记这个物理页对应的线程和这个线程中vpn,以及为了替换策略而实现的lastUsedTime,因为lazy-loading中还涉及将修改过的“脏页”写回的操作,所以我在这里还加入了dirty属性,于是我把这四个属性包装成bitmap文件中的一个小类称为MemoryEntry,在bitmap中添加一个MemoryEntry的数组,数组元素的数量和NumBits一样多,这样就可以起到一一对应的标记作用。经过这样的修改,就需要在找空页的时候加入lastUsedTime 的因素,也就是说需要找lastUsedTime最小的页(还是首先找空页,在没有空页的情况下才使用lastUsedTime最小的页,也就是说我使用了lru的策略,找最近使用时间最长的)。而因为是lazy-loading,所以在addrspace里的构造函数中就不能把page table中的每个页和物理内存对应起来,这样,在这里我就不给physicalPage赋值,并且把valid设置为False,这样就可以在用到这个地址的时候调用pageFaultException了。现在就可以写出在translate中判断是否产生page fault的条件了,首先要判断page table中的这一项是否为valid的,其次要从bitmap里判断这个页是不是被当前线程拥有,并且物理页指向的vpn和现在的vpn是不是一致,只有这三个条件都满足,才认为没有page fault,否则就会return page fault exception。

再回到swap函数中,swap的首要任务就是找到一个可用的物理页,把可执行文件中需要的页写入到这个物理页中,这个任务也是听上去不难,只要算出这个异常的地址并且把文件中的相应页写入就可以了,可是实际调试的过程中总是说指令不正确(6号异常),为什么呢?我看了好久代码才明白,在这个可执行文件的结构中,首先是noffH这个记录文件信息的文件头,而实际上文件中定义的虚拟地址并不包括这个文件头,比如我在调试的时候打印出code的虚拟地址是0,而inFileAddr是40,也就是说可能在这个文件中noffH占40字节的大小。于是我参照之前的没有lazy-loading时的做法,在addrspace中加入一个交换空间swapMemory,在初始化一个地址空间的时候,首先像之前一样把文件的code部分和initData 部分写入这个交换空间中(不写入noffH),这样需要的地址就和文件中的虚拟地址是一致的了,对于这个交换空间来说,就是在addrspace中的一个类似于内存的大char数组,大小我赋给了它在addrspace中计算出来的需要的大小size,这样做的结果就是同时解决了脏页的问题,如果发生了writeMem操作,那么就把这个页在bitmap的memoryEntry中设置为dirty,而如果swap函数中挑选到的需要被替换的页是dirty的,那么就需要先从物理内存中将这个页写回到这个交换空间中,具体需要做的就是在挑选到一个页后,首先查询出这个物理页对应的线程的tid和vpn,然后通过以前的threadList找到对应的线程的指针,这样就可以得到这个线程的space(地址空间),之后就可以写回脏页了。写回脏页之后,就可以放心地使用这个页了,首先当然还是要先清空这个物理页,然后从交换空间中把计算出来的这个页写入到物理内存中,在bitmap中标记这个页(tid,vpn,lastUsedTime)。为了lazy-loading的缘故,还需要在addrspace中注释掉把文件写入到内存的部分,转而把文件写入到相应的交换空间中,为了方便,写入的时候我采用了实际上是虚拟页和交换空间中的物理页一一对应的方式(这样就可以在从交换空间中load这个页的时候直接用虚拟地址找到了)。经过这么多的努力,本来以为可以成功运行了,而且单线程页确实可以成功运行了,但是加入多线程后,还是崩溃了,于是又开始长时间的调试,发现在最后出错的时候,通过page fault找到可用的物理页后,没有进入tlb miss的处理函数中(发生page fault就一定会接着发生tlb miss),于是我在page fault swap这个函数的末尾加入了tlb miss swap来直接处理这各tlb miss,这样之后终于使得两个线程能够同时运行了。

Challenge 2 倒排页表:

从前面一个exercise可以看到,我已经实现了一个对于倒排页表来说十分关键的数据结构,就是bitmap的增强版,有了这个增强版,给出物理页号之后,我就可以查询到相应的线程号和虚拟页号等信息,为了完成倒排页表,下一步就是彻底抛弃每个线程内部的地址空间的页表以及machine中的页表,最简单的办法可以每次引用某个页时都去bitmap的memoryEntries中去遍历查找,但是这样的效率实在太低了,于是我决定在每个地址空间中增加一个链表来存放这个地址空间中占有的页,这样的话就不需要遍历整个物理内存中的页,而只需要遍历一个地址空间中的页。这个任务也是听起来容易,做起来费事的活。

首先,要让list这个链表支持插入,删除,查询三个基本操作,也就是说给定vpn,必须能够在这个链表中插入一个项,删除具有这个vpn的项,查询是否有具有vpn的这一项并且返回这个项(实际上我只返回了物理页号)。于是我在list里添加了这三个相应的函数,把所有能想到的用到了page table的地方全部注释掉(其实只要把machine和addrspace头文件里面的注释掉,再用gcc帮着找错就可以了),找错的过程中,发现在析构函数中还需要将bitmap中所有属于这个地址空间的项清空,于是又添加了一个clear操作,以清空bitmap 中相应的项。

这样之后,原来用到page table和vpn的地方就直接去用这个vpn从pageList(我在addrspace 中定义用来替代page table的数据结构)中查找就可以了,另外在找到可用的页后需要把这一项加入到地址空间中,感觉这样就基本可以了,于是就去试着跑了一下,果然可以运行了,很高兴啊。

可是发现两个线程只用了39个页,而实际上我给分配了256个页,也就是说根本不会使用页的替换策略,因为总是会有空页的。于是我直接把内存大小调成了20页,这样就肯定需要替换了,刚一改,马上就错了,甚至是第一次page fault就直接段错误了,去查代码,发现之前在找到一个物理页后,没有去查这个页以前是不是真的被占用了,就去进行写回脏页操作,这样当然有问题了,于是先用bitmap自带的Test函数test一下,发现完全没变化,这不科学啊,接着查,发现find那步的时候我就直接把bitmap中找到的这个页给mark了,也就是说之后去查就一定是1了,无论之前到底是不是真的被使用了,好吧,只好去掉这里的mark,改为去MarkMemoryEntry(标记vpn,物理页号,使用时间的函数)里面去mark 这个页,这样应该能跑了吧!确实能跑了,不过到了感觉快跑完的时候还是出了问题,在一次想替换一个页时却没找到,于是输出各种调试信息,包括输出地址空间中占有的链表中所有页的信息,发现好像要删掉的项在链表中不存在,于是我加了一条ASSERT,断言一定要先找到这个项,否则删除失败,效果很明显,马上就失败了。我仔细的查看输出结果后终于发现好像是list中的删除操作有问题,可是我是直接从threadList这个我用来管理thread的类copy过来的啊,threadList之前也一直运行良好啊,没办法,仔细看吧,对照着输出的调试信息,发现有一个thread本来有7、8页的样子,删除完以后竟然就剩下两个页了,那就一定是list出错了,确实错了,last赋值有问题,改正之后能正常运行了,没想到都写到这里了,竟然还揪出了最开始犯的一个错误!

内容三:遇到的困难以及解决方法

困难1

Tlb miss处理的时候在多线程中忘记在线程切换的时候使tlb失效,调试了好长时间才找到啊!!!

困难2

noffH文件的结构不明白,sort文件中,code的inFileAddr似乎和其它部分有交叉,最后放弃深究了,直接使用交换空间来代替读写这个可执行文件。

困难3

本来认为page fault之后应该会自动调用tlb miss的处理函数(当然还是先引发tlb miss这个异常),但是实际上不会自动调用,只能我自己手动调用了。

困难4

之前实在是没有想到以前运行的很好的threadList的代码还是有bug,让我找了好长时间啊!

【描述你在实习过程中遇到的困难,是与实习直接相关的技术方面的难题。突出说明你是如何攻克这些难关的。

要求:只需写一下有较深体会的困难。如果觉得整个过程都比较简单的话此部分可不用写。】

内容四:收获及感想

之前在原理课上对倒排页表并不是十分理解,经过这次实习,我加深了对虚拟内存和页表的了解,虽然对交换区还不是那么明白(我自己的实现还是太naive了),而且明白了可执行文件的格式,以及为什么会是这样的。

【自己的收获,任何关于实习的感想,可以是技术方面的或非技术方面的,可随意发挥。

要求:内容不限,体裁不限,字数不限,多多益善,有感而发。】

内容五:对课程的意见和建议

……

【请写下你认为课程需要改进的地方,任何方面,比如进度安排、难易程度、课堂讲解、考核方式、题目设置……甚至如果你认为源代码哪里写得不好也欢迎提出。

各位同学反馈的信息对课程建设会有极大帮助。】

内容六:参考文献

【我们希望大家不要使用复制粘贴来拼凑你的报告。详细地列出你在完成lab的过程中引用的书籍,网站,讲义,包括你咨询过的大牛们。

要求:诚实,格式尽量按照论文的要求,请参考“论文参考文献格式.doc”】

怎样设置虚拟内存

怎样设置虚拟内存 收集者:小路发布于:https://www.doczj.com/doc/6b17773122.html, 发布时间:2007-3-9 8:06:56 发布人:小路 减小字体增大字体 当系统运行时,先要将所需的指令和数据从外部存储器(如硬盘、软盘、光盘等)调入内存中,CPU再从内存中读取指令或数据进行运算,并将运算结果存入内存中,内存所起的作用就像一个“二传手”的作用。当运行一个程序需要大量数据、占用大量内存时,内存这个仓库就会被“塞满”,而在这个“仓库”中总有一部分暂时不用的数据占据着有限的空间,所以要将这部分“惰性”的数据“请”出去,以腾出地方给“活性”数据使用。这时就需要新建另一个后备“仓库”去存放“惰性”数据。由于硬盘的空间很大,所以微软Windows操作系统就将后备“仓库”的地址选在硬盘上,这个后备“仓库”就是虚拟内存。在默认情况下,虚拟内存是以名为Pagefile.sys的交换文件保存在硬盘的系统分区中。 怎样设置虚拟内存 在默认状态下,是让系统管理虚拟内存的,但是系统默认设置的管理方式通常比较保守,在自动调节时会造成页面文件不连续,而降低读写效率,工作效率就显得不高,于是经常会出现“内存不足”这样的提示,下面就让我们自已动手来设置它吧。 ①用右键点击桌面上的“我的电脑”图标,在出现的右键菜单中选择“属性”选项打开“系统属性”窗口。在窗口中点击“高级”选项卡,出现高级设置的对话框(图1);

图 1 ②点击“性能”区域的“设置”按钮,在出现的“性能选项”窗口中选择“高级”选项卡,打开其对话框。 ③在该对话框中可看到关于虚拟内存的区域,点击“更改”按钮进入“虚拟内存”的设置窗口。选择一个有较大空闲容量的分区,勾选“自定义大小”前的复选框,将具体数值填入“初始大小”、“最大值”栏中,而后依次点击“设置→确定”按钮即可(图2),最后重新启动计算机使虚拟内存设置生效。

Windows虚拟内存不足解决方法

Windows虚拟内存不足解决方法 全大中https://www.doczj.com/doc/6b17773122.html, | 2006-04-26 09:03 | 引:经常听别人说起虚拟内存,请问什么是虚拟内存?为什么我的电脑在使用过一段时间后,总是提示虚拟内存太低,是不是只有重新安装操作系统才能解决问题? ??? 问:经常听别人说起虚拟内存,请问什么是虚拟内存?为什么我的电脑在使用过一段时间后,总是提示虚拟内存太低,是不是只有重新安装操作系统才能解决问题? 答:Windows操作系统用虚拟内存来动态管理运行时的交换文件。为了提供比实际物理内存还多的内存容量以供使用,Windows操作系统占用了硬盘上的一部分空间作为虚拟内存。当CPU有需 ? 求时,首先会读取内存中的资料。当所运行的程序容量超过内存容量时,Windows 操作系统会将需要暂时储存的数据写入硬盘。所以,计算机的内存大小等于实际物理内存容量加上“分页文件”(就是交换文件)的大小。如果需要的话,“分页文件”会动用硬盘上所有可以使用的空间。 如果你的系统虚拟内存太低,可以鼠标右击“我的电脑”选择“属性→高级→性能下设置→高级→打开虚拟内存设置”,可以重新设置最大值和最小值,按物理内存的1.5~2倍来添加数值,也可以更改虚拟内存的存放位置,可以设置放到其他容量较大的硬盘分区,让系统虚拟内存有充分的空间,让系统运行更快。 虚拟内存太低有三种解决办法: 1. 自定义的虚拟内容的容量(系统默认是自动)太小,可以重新划分大小。 2. 系统所在的盘(一般是C盘)空余的容量太小而运行的程序却很大,并且虚拟内存通常被默认创建在系统盘目录下,我们通常可以删除一些不用的程序,并把文档图片以及下载的资料等有用文件移动到其他盘中,并清理“回收站”,使系统盘保持1GB以上的空间,或者将虚拟内存定义到其他空余空间多的盘符下。 3. 系统盘空余的容量并不小,但因为经常安装、下载软件,并反复删除造成文件碎片太多,也是容易造成虚拟内存不足的原因之一,虚拟内存需要一片连续的空间,尽管磁盘空余容量大,但没有连续的空间,也无法建立虚拟内存区。可以用磁盘工具整理碎片。 Windows虚拟内存不足的几种解决方法问: 经常听别人说起虚拟内存,请问什么是虚拟内存?为什么我的电脑在使用过一段时间后,总是提示虚拟内存太低,是不是只有重新安装操作系统才能解决问题? 答:Windows操作系统用虚拟内存来动态管理运行时的交换文件。为了提供比实际物理内存还多的内存容量以供使用,Windows操作系统占用了硬盘上的一部分

如何设置虚拟内存以及三大误区

在中的作用至关重要,中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,运用了技术,将一部分空间来充当内存使用,虽然硬盘的运行速度不能与内存相比,可是容量却要比内存的容量高出许多。其作用在于可将一些读取到内存中却暂时不用的数据转移到虚拟内存中,这样便可释放出内存的空间,将有限的内存空间去继续存放未被读取的数据,以缓解内存的紧张。

网上有很多关于虚拟内存设置的教程和说明,这里我们要说的是设置虚拟内存最常见的三个错误,相信大家看后对虚拟内存的设置又会有不同的理解了。 错误1:虚拟内存不设置在系统盘,应该专门分出一个空白分区专门用来存储页面文件,不要再存放其它任何文件。

因为系统盘含有是系统文件和页面文件,是硬盘读写最频繁的分区,硬盘读写时最耗时的操作是什么呢?是定位!而同一分区内的磁头定位无疑要比跨分区的远距离来回定位要节省时间!所以,虚拟内存设定在系统盘内的才是执行最快、效率最高的。 错误2:虚拟内存的最佳值为:最小值设置为物理内存的1.5倍,最大值设置为物理内存的3倍。 要根据实际使用情况来判断。如今随着内存的价格越来越便宜,特别是Win7系统普及后,所需的物理内存的容量比以往有了大幅增加,传统的虚拟内存设置方法已经不再适用! 一般512MB内存,根据实际使用内存占用,可以设虚拟内存为256-768MB(内存+虚拟内存之和一般比正常占用高256MB即可)。 1GB内存,根据实际使用内存占用情况,可以设虚拟内存为128-1024MB(内存+虚拟内存之和一般比正常占用高256-512MB即可)。平时正常占用为几百MB的人(占多数),甚至可以禁用虚拟内存(有限制的可以设少量虚拟内存,如16-128MB)。 内存为及以上的,一般可以禁用虚拟内存(有软件限制的可以设少量虚拟内存,如16-128MB)。部分确实会使用大量内存的人,如玩大型3D游戏、制作大幅图片、3D建模等,并收到系统内存不足警告的,才需要酌情设定虚拟内存。 错误3:虚拟内存越大越好。 虚拟内存过大,既浪费了磁盘空间,又增加了磁头定位的时间,降低了系统执行效率,没有任何好处。正确设置可节省256MB-左右空间

怎样设置虚拟内存

怎样设置虚拟内存: / (一)合理设置虚拟内存 / 虚拟内存的设定主要根据你的物理内存大小和电脑的用途来设定,在桌面上用鼠标右击“我的电脑”,选择“属性”,就可以看到内存了。根据微软公司的建议,虚拟内存设为物理内存容量的1.5--3倍,例如512MB的内存,虚拟内存设定为768--1536MB;1G的内存,虚拟内存设定为1536--3072MB。也可让Windows来自动分配管理虚拟内存,它能根据实际内存的使用情况,动态调整虚拟内存的大小。在虚拟内存设置页面下方有一个推荐数值,如果确实不知道设置多少为最佳,建议虚拟内存就设为推荐的数值。虚拟内存有初始大小与最大值两个数值,最好把初始大小和最大值设为相同,以避免系统频繁改变页面文件的大小,影响电脑运行。内存容量2GB或以上的,如果不运行大型文件或游戏,也可以关闭虚拟内存。/ 虚拟内存就是在你的物理内存不够用时把一部分硬盘空间作为内存来使用,不过由于硬盘传输的速度要比内存传输速度慢的多,所以使用虚拟内存比物理内存效率要慢。个人实际需要的值应该自己多次调整为好。设的太大会产生大量的碎片,严重影响系统速度,设的太小就不够用,于是系统就会提示你虚拟内存太小。/ (二)虚拟内存设置方法 / 右击“我的电脑”选择“属性--高级--性能--设置--高级--虚拟内存--更改”,选择虚拟内存所在的磁盘,然后在下边单击“自定义大小” 并输入“初始大小”和“最大值”,最后按“设置”按钮,再确定即可。虚拟内存从C盘设置到其它磁盘的方法(如果在其它盘,设置方法一样):右击我的电脑--属性--高级-- 性能设置--高级--虚拟内存更改--点选C盘--单选“无分页文件”--“设置”,此时C盘旁的虚拟内存就消失了;然后选中D或F盘,单选“自定义大小”-- 在下面的“初始大小”和“最大值”两个文本框中输入数值--“设置”—确定 --重启电脑,便完成了设置。 / 虚拟内存最好不要与系统设在同一个磁盘内,内存是随着使用而动态地变化,设在C盘就容易产生磁盘碎片,影响系统运行速度。所以,最好将虚拟内存设置在磁盘剩余空间较大而又不常用的磁盘,如D、F,这样可以避免系统在C盘进行 频繁的读写操作而影响系统速度。虚拟内存在一台电脑,只用设置一次,可设置在任何一个磁盘。 / (三)减轻内存负担: / 1、打开的程序不可太多。如果同时打开的文档过多或者运行的程序过多,就没有足够的内存运行其他程序,要关闭不用的程序和窗口。 / 2、自动运行的程序不可太多。单击“开始”--“运行”,键入 “Msconfig”-“确定”,打开“系统配置实用程序”窗口,删除不想自动加载的启动项目。

操作系统实验五 Windows XP 虚拟内存管理

实验五 Windows XP 虚拟内存管理 一实验目的 1) 了解存储器管理以及虚拟存储器管理的基本原理 2)了解和学习Windows系统管理工具中关于内存管理的设置和使用; 二实验环境 需要准备一台运行Windows XP操作系统的计算机。 三背景知识 虚拟存储器技术是当代计算机中广泛采用的内存管理方案,在Windows XP中合理的进行虚拟内存的设置,可以更有效的提高系统的工作效率。利用系统自带的系统监视器可以查看虚拟内存的使用情况,根据使用情况可以灵活的进行虚拟内存的管理。 四实验内容与步骤 启动并进入Windows环境,单击Ctrl + Alt + Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口。 步骤1:当前机器中由你打开,正在运行的应用程序有: 1) 5.doc[兼容模式]-Microsoft Word 2) 常州大学-Windows Internet Explorer 3) 常州大学教务单点登录接入平台- Windows Internet Explorer 步骤2:单击“进程”选项卡,一共显示了 33 个进程。请试着区分一下,其中: 系统 (SYSTEM) 进程有 19 个,填入表2-1中。 表2-1 实验记录 映像名称用户名CPU使用率内存使用进程实现的功能Svchost.exe SYSTEM 00 4416K NT Kernel &System Service.exe SYSTEM 00 3272K Windows会话管理器 Sqlservr.ex e SYSTEM 00 9580K Client Server Runtime Process LMS.exe SYSTEM 00 2912K 服务和控制器应用程序MDM.exe SYSTEM 00 3424K Local Security Authority Process Inetinfo.exe SYSTEM 00 9780K 本地会话管理器服务Spoolsv.exe SYSTEM 00 5612K Windows 服务主进程 Ati2evxx.e xe SYSTEM 00 4024K 360主动防御服务模块 Svchost.exe SYSTEM 00 24912K Windows 登录应用程序Svchost.exe SYSTEM 00 5084K Windows 服务主进程Service.exe SYSTEM 00 3476K 服务和控制器应用程序Isass.exe SYSTEM 00 1736K Local Security Authority Process

虚拟内存不足怎么解决

虚拟内存 内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。举一个例子来说,如果电脑只有128MB物理内存的话,当读取一个容量为200MB的文件时,就必须要用到比较大的虚拟内存,文件被内存读取之后就会先储存到虚拟内存,等待内存把文件全部储存到虚拟内存之后,跟着就会把虚拟内里储存的文件释放到原来的安装目录里了。下面,就让我们一起来看看如何对虚拟内存进行设置吧。 虚拟内存的设置 对于虚拟内存主要设置两点,即内存大小和分页位置,内存大小就是设置虚拟内存最小为多少和最大为多少;而分页位置则是设置虚拟内存应使用那个分区中的硬盘空间。对于内存大小的设置,如何得到最小值和最大值呢?你可以通过下面的方法获得:选择“开始→程序→附件→系统工具→系统监视器”(如果系统工具中没有,可以通过“添加/删除程序”中的Windows安装程序进行安装)打开系统监视器,然后选择“编辑→添加项目”,在“类型”项中选择“内存管理程序”,在右侧的列表选择“交换文件大小”。这样随着你的操作,会显示出交换文件值的波动情况,你可以把经常要使用到的程序打开,然后对它们进行使用,这时查看一下系统监视器中的表现值,由于用户每次使用电脑时的情况都不尽相同,因此,最好能够通过较长时间对交换文件进行监视来找出最符合您的交换文件的数值,这样才能保证系统性能稳定以及保持在最佳的状态。 找出最合适的范围值后,在设置虚拟内存时,用鼠标右键点击“我的电脑”,选择“属性”,弹出系统属性窗口,选择“性能”标签,点击下面“虚拟内存”按钮,弹出虚拟内存设置窗口,点击“用户自己指定虚拟内存设置”单选按钮,“硬盘”选较大剩余空间的分区,然后在“最小值”和“最大值”文本框中输入合适的范围值。如果您感觉使用系统监视器来获得最大和最小值有些麻烦的话,这里完全可以选择“让Windows管理虚拟内存设置”。 调整分页位置 Windows 9x的虚拟内存分页位置,其实就是保存在C盘根目录下的一个虚拟内存文件(也称为交换文件)Win386.swp,它的存放位置可以是任何一个分区,如果系统盘C容量有限,我们可以把Win386.swp调到别的分区中,方法是在记事本中打开System.ini(C:\Windows 下)文件,在[386Enh]小节中,将“PagingDrive=C:WindowsWin386.swp”,改为其他分区的路径,如将交换文件放在D:中,则改为“PagingDrive=D:Win386.swp”,如没有上述语句可以直接键入即可。 而对于使用Windows 2000和Windows XP的,可以选择“控制面板→系统→高级→性能” 中的“设置→高级→更改”,打开虚拟内存设置窗口,在驱动器[卷标]中默认选择的是系统所在的分区,如果想更改到其他分区中,首先要把原先的分区设置为无分页文件,然后再选择其他分区。 或者,WinXP一般要求物理内存在256M以上。如果你喜欢玩大型3D游戏,而内存(包括显存)又不够大,系统会经常提示说虚拟内存不够,系统会自动调整(虚拟内存设置为系统管理)。 如果你的硬盘空间够大,你也可以自己设置虚拟内存,具体步骤如下:右键单击“我的电脑”→属性→高级→性能设置→高级→虚拟内存更改→选择虚拟内存(页面文件)存放的分区→

调大虚拟内存有什么好处

调大虚拟内存有什么好处 调大虚拟内存好处一: 不要设置在c盘设置到其他盘付 2g~4g 够了一半内存大于4g 的都不需要虚拟内存直接无页面文件也够用的 一般虚拟内存一般设置为物理内存的1~1.5倍,别设太小就好。另外c盘小的话,可以设置在d盘或者其他剩余空间比较大的盘里。 虚拟内存最好不要与系统设在同一分区内,内存是随着使用而动态地变化,c盘就容易产生磁盘碎片,影响系统运行速度,所以,最好将虚拟内存设置在其它分区中磁盘剩余空间较大而又不常用的盘中,如d、f,这样可以避免系统在此分区内进行频繁的读写操作而影响系统速度。在一台电脑中,虚拟内存在一个分区中设置就够用了,不必在各个分区中设置虚拟内存。 置虚拟内存的方法是:右击我的电脑—属性—高级—性能设置—高级—虚拟内存更改—点选c盘—单选“无分页文件(n)”—“设置”,此时c盘中的虚拟内存就消失了;然后选中d盘,单选“自定义大小”—在下面的“初始大小”和“最大值”两个文本框中输入数值—“设置”—确定—重启,便完成了设置。 调大虚拟内存好处二: (一)合理设置虚拟内存/虚拟内存的设定主要根据你的物理内存大小和电脑的用途来设定,在桌面上用鼠标右击“我的电脑”,

选择“属性”,就可以看到内存了。根据微软公司的建议,虚拟内存设为物理内存容量的1.5--3倍,例如512mb的内存,虚拟内存设定为768--1536mb;1g的内存,虚拟内存设定为1536--3072mb。也可让windows来自动分配管理虚拟内存,它能根据实际内存的使用情况,动态调整虚拟内存的大小。 在虚拟内存设置页面下方有一个推荐数值,如果确实不知道设置多少为最佳,建议虚拟内存就设为推荐的数值。虚拟内存有初始大小与最大值两个数值,最好把初始大小和最大值设为相同,以避免系统频繁改变页面文件的大小,影响电脑运行。 内存容量2gb或以上的,如果不运行大型文件或游戏,也可以关闭虚拟内存。/虚拟内存就是在你的物理内存不够用时把一部分硬盘空间作为内存来使用,不过由于硬盘传输的速度要比内存传输速度慢的多,所以使用虚拟内存比物理内存效率要慢。个人实际需要的值应该自己多次调整为好。设的太大会产生大量的碎片,严重影响系统速度,设的太小就不够用,于是系统就会提示你虚拟内存太小。 (二)虚拟内存设置方法/右击“我的电脑”选择“属性--高级--性能--设置--高级--虚拟内存--更改”,选择虚拟内存所在的磁盘,然后在下边单击“自定义大小”并输入“初始大小”和“最大值”,最后按“设置”按钮,再确定即可。虚拟内存从c盘设置到其它磁盘的方法(如果在其它盘,设置方法一样):右击我的电脑--属性--高级--性能设置--高级--虚拟内存更改--点选c盘--单选“无分页文件”--“设置”,此时c盘旁的虚拟内存就消失了;然后选中d或f盘,单选“自定义大小”--在下面的“初始大小”

Windows虚拟内存管理

基本概念【摘录】 每个进程都被赋予它自己的虚拟地址空间。对于32位进程来说,这个地址空间是4GB,因为32位指针可以拥有从0x000000000至0xFFFFFFFF之间的任何一个值。这使得一个指针能够拥有4 294 967 296个值中的一个值,它覆盖了一个进程的4GB虚拟空间的范围。这是相当大的一个范围。由于每个进程可以接收它自己的私有的地址空间,因此当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于所有其他进程的内存则隐藏着,并且不能被正在运行的线程访问。 注意在Windows 2000中,属于操作系统本身的内存也是隐藏的,正在运行的线程无法访问。这意味着线程常常不能访问操作系统的数据。Windows 98中,属于操作系统的内存是不隐藏的,正在运行的线程可以访问。因此,正在运行的线程常常可以访问操作系统的数据,也可以破坏操作系统(从而有可能导致操作系统崩溃)。在Windows 98中,一个进程的线程不可能访问属于另一个进程的内存。 前面说过,每个进程有它自己的私有地址空间。进程A可能有一个存放在它的地址空间中的数据结构,地址是0x12345678,而进程B则有一个完全不同的数据结构存放在它的地址空间中,地址是0x12345678。当进程A中运行的线程访问地址为0x12345678的内存时,这些线程访问的是进程A的数据结构。当进程B中运行的线程访问地址为0x12345678的内存时,这些线程访问的是进程B的数据结构。进程A中运行的线程不能访问进程B的地址空间中的数据结构。反之亦然。 记住,这是个虚拟地址空间,不是物理地址空间。该地址空间只是内存地址的一个范围。在你能够成功地访问数据而不会出现违规访问之前,必须赋予物理存储器,或者将物理存储器映射到各个部分的地址空间。 每个进程的虚拟地址空间都要划分成各个分区。地址空间的分区是根据操作系统的基本实现方法来进行的。不同的Windows内核,其分区也略有不同。

Win7虚拟内存怎么设置最好

Win7虚拟内存怎么设置最好 Win7与先前的XP系统相比,Win7的内存占用更加庞大一些。也许2G内存对于一台XP 电脑已经足够,但对于Win7却只是平常而已,虚拟内存只是真实内存不足的补充,所以不要加以神化,虚拟内存的读写性能(即硬盘的读写)只有真正内存性能的几十分之一,而且对硬盘损伤很大!能不用则不用,能少用则少用!原则是够用+留少量余量即可。为此,虚拟内存的重要性不言而喻,所以今天就带领大家一起了解下Win7虚拟内存设置技巧,对于一般情况下,我们推荐采用如下的方法: 其一:虚拟内存不应该设在系统盘C盘(系统盘为其他盘同理),而应该设在其他非系统分区 答案:错!因为C盘做为默认的系统盘,硬盘读写最频繁的就是系统文件和页面文件。而硬盘读写时最耗时的操作是什么呢?是磁头定位!而同一分区内的磁头定位无疑要比跨分区的远距离来回定位要节省时间!所以,系统盘内的虚拟内存(系统默认值)是执行最快、效率最高的。 其二:虚拟内存的最佳值是内存容量的1.5-3倍 答案:错!要根据实际使用情况来判断。特别是大内存普及的今天。内存使用率看任务管理器的内存一栏。一般512MB内存,根据实际使用内存占用,可以设虚拟内存为256-768MB(内存+虚拟内存之和一般比正常占用高256MB即可)。 1GB内存,根据实际使用内存占用情况,可以设虚拟内存为128-1024MB(内存+虚拟内存之和一般比正常占用高256-512MB即可)。平时正常占用为几百MB的人(占多数),甚至可以禁用虚拟内存(有软件限制的可以设少量虚拟内存,如16-128MB)。

内存为2G及以上的,一般可以禁用虚拟内存(有软件限制的可以设少量虚拟内存,如16-128MB)。部分确实会使用大量内存的人,如玩大型3D游戏、制作大幅图片、3D建模等,并收到系统内存不足警告的,才需要酌情设定虚拟内存。 其三:虚拟内存越大越好 答案:错。虚拟内存过大,既浪费了磁盘空间,又增加了磁头定位的时间,降低了系统执行效率,没有任何好处。正确设置可节省256MB-4G左右空间(视内存大小) 以win7系统为例,计算机右键,属性,高级系统设置,性能>设置,高级,虚拟内存>更改,自动管理取消,自定义大小,设置,确定,退出重启。 内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为此,WINDOWS运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,这部分空间即称为虚拟内存,虚拟内存在硬盘上的存在形式就是PAGEFILE.SYS这个页面文件。

虚拟内存删除

内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。真难想象如果电脑没有内存将如何运行。为了解决这个问题,Windows中运用了虚拟内存技术,当然vista也不例外。即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存。虽然这样使用硬盘作虚拟内存读取速度相对于内存速度要逊色很多,但是终究是有效果的。举一个例子来说,如果电脑只有512MB物理内存的话,当读取一个容量为600MB 的文件时,就必须要用到比较大的虚拟内存,文件被内存读取之后就会先储存到虚拟内存,等待内存把文件全部储存到虚拟内存之后,跟着就会把虚拟内里储存的文件释放到原来的安装目录里了。 下面,就让我们一起来看看如何对虚拟内存进行设置吧。 具体步骤如下: (1).打开计算机"系统" (2).在左窗格中,单击“高级系统设置”。 (3).在“高级”选项卡上,在“性能”下,单击“设置”。 (4).单击“高级”选项卡,然后在“虚拟内存”下,单击

“更改”。 (5).清除“自动管理所有驱动器的页面文件大小”复选框。 (6).在“驱动器[卷标]”下,单击要更改的页面文件所在的驱动器。 (7).单击“自定义大小”,在“初始大小(MB)”或“最大大小(MB)”框中键入新的大小(以兆字节为单位),单击“设置”,然后单击“确定”。

如果你觉得比较的麻烦你可以使用上面的步骤,然后选择系统管理的大小即可。 这样可以通过虚拟内存来弥补的不足。如果你是在怕麻烦了直接再买个内存条插上好了。vista之家团队(https://www.doczj.com/doc/6b17773122.html,)(deepblue整理编辑)

目前最全的手动优化系统技巧

目前最全的手动优化系统技巧

————————————————————————————————作者:————————————————————————————————日期:

一、每天关机前要做的清洗: 双击“我的电脑”——右键点C盘——点“属性”——点“磁盘清理”——点“确定”——再点“是”——再点“确定”。清理过程中,您可看得到未经您许可(您可点“查看文件”看,就知道了)进来的“临时文件”被清除了,盘的空间多了。对D,E,F 盘也要用这法进行。 二、随时要进行的清理: 打开网页——点最上面一排里的“工具”——点“Internet选项”——再点中间的“Internet临时文件”中的“删除文件”——再在“删除所有脱机内容”前的方框里打上勾——再点“确定”——清完后又点“确定”。这样,可为打开网和空间提高速度。 三、一星期进行的盘的垃圾清理:?点“开始”——用鼠标指着“所有程序”,再指着“附件”,再指着“系统工具”,再点“磁盘粹片整理程序”——点C盘,再点“碎片整理”(这需要很长时间,最好在您去吃饭和没用电脑时进行。清理中您可看到您的盘里的状况,可将清理前后对比一下)——在跳出“清理完成”后点“关闭”。按上述,对D,E,F盘分别进行清理。 电脑系统越来越慢,怎么删除临时文件啊 1.关闭"休眠" 方法:打开[控制面板]→[电源选项]→[休眠],把"启用休眠"前面的勾去掉?说明:休眠是系统长时间一种待机状态,使您在长时间离开电脑时保存操作状态,如果您不是经常开着电脑到别处去的话,那就把它关了吧! ☆立即节省:256M 2.关闭"系统还原" ?方法:打开[控制面板]→[系统]→[系统还原],把"在所有驱动器上关闭系统还原'勾上 说明:系统还原是便于用户误操作或产生软件问题时的一种挽救手段,可以回复到误操作以前的状态.不建议初级用户使用.当然,它采用的是跟踪手段,需要记录大量信息,所消耗的资源也要很大的.?☆立即节省:数百M(根据还原点的多少 而不同) 您也可以在不关闭系统还原的前提下,相应的减少系统还原所占的磁盘空间,这只会减少可用还原点的数目,一般还原点有一两个就够了吧.?方法:...[系统还原]-选择一个"可用驱动器"-[设置]-调整"要使用的磁盘空间" 3.关闭"远程管理"?方法:打开[控制面板]→[系统]→[远程],把"允许从这台计算机发送远程协助邀请"前面的勾去掉. 说明:谁会经常用到这种功能呢?它占用的不是磁盘空间,但是会影响系统运行速度.?☆提高系统性能

如何设置笔记本虚拟内存

电脑小技巧教你如何设置虚拟内存 虚拟内存的概念是相对于物理内存而言的,当系统的物理内存空间入不敷出时,操作系统便会在硬盘上开辟一块磁盘空间当做内存使用。 设置虚拟内存 虚拟内存的概念是相对于物理内存而言的,当系统的物理内存空间入不敷出时,操作系统便会在硬盘上开辟一块磁盘空间当做内存使用,这部分硬盘空间就叫虚拟内存。Windows 98中采用Win386.swp文件的形式,而Windows 2000/XP 则采用页面文件pagefile.sys的形式来管理虚拟内存。 一、大小情况 1.一般情况 一般情况下,建议让Windows来自动分配管理虚拟内存,它能根据实际内存的使用情况,动态调整虚拟内存的大小。 2.关于最小值 Windows建议页面文件的最小值应该为当前系统物理内存容量再加上12MB,而对于物理内存容量小于256MB的用户,则建议将页面文件的最小值设得更大些: ①使用128MB或者更少内存的用户,建议将当前物理内存容量的1.75倍设置为页面文件的最小值。 ②内存大小在128MB到256MB之间的用户,建议将当前物理内存容量的1.5倍设置为页面文件的最小值。 3.关于最大值 一般来说,页面文件的最大值设置得越大越好,建议设置为最小值的2到3倍。 4.极端情况 假如硬盘空间比较紧张,在设置页面文件时,只需保证它不小于物理内存的3/4即可。 如果物理内存很大(大于512MB),则可以将虚拟内存禁用 5.根据不同的任务环境设置 ①以3D游戏为主的环境 3D游戏对CPU、显卡和内存要求都很高,如果物理内存小于256MB,建议把虚拟内存预设得大一点,这对提高游戏的稳定性和流畅性很有帮助。 ②以播放视频为主的环境 视频应用对硬盘空间的“胃口”很大,不过千万不要像在3D游戏环境中一样把虚拟内存设得很大,尤其是Windows XP的用户。因为Windows XP不会自动把不需要的空间释放掉,也就是说那个Pagefiles.sys文件会越来越大。如果你把虚拟内存和Windows XP放在同一分区,播放RM、ASF等视频流文件以后,系统经常会提示你虚拟内存设得太小或是磁盘空间不足。查看此时的页面文件,已经足有1GB大小了。所以建议经常欣赏视频文件的Windows XP用户,把初始数值设小一点,或者将虚拟内存转移到系统盘以外的分区。 二、设置方法 下面以在Windows XP下转移虚拟内存所在盘符为例介绍虚拟内存的设置方

怎么设置虚拟内存

虚拟内存设置的大小,比较多的解释是物理内存的1.5到2倍,它的设置方法同我们平常的操作不太一样。下面是正确的方法。 右键点“我的电脑”,左键点“属性”,点选“高级”选项卡,点“性能”里的“设置”按钮,再选“高级”选项卡,点下面的“更改”按钮,所弹出的窗口就是虚拟内存设置窗口,一般默认的虚拟内存是从小到大的一段取值范围,这就是虚拟内存变化大小的范围,最好给它一个固定值,这样就不容易产生磁盘碎片了,具体数值根据你的物理内存大小来定,一般为物理内存的1.5到2倍,如内存为256M,那么应该设置256*1.5=384M,或者干脆512M,设置方法如下: 假设内存为256M,虚拟内存放在D盘,先要将默认的清除,保持C盘为选中状态,单选“无分页文件(N)”再按“设置”按钮,此时C盘旁的虚拟内存就消失了,然后选中D盘,单选“自定义大小”,在下面的“初始大小”和“最大值”两个方框里都添上512,再点一下“设置”按钮,会看到D盘的旁边出现了“512-512”的字样,这样就说明设置好了,再一路确定,最终,系统会要重新启动,重启一下,便完成了设置 电脑有时会提示“虚拟内存太小”,特别在运行一些大软件的时候会有这样的提示。这不是指实际的物理内存小,而是指虚拟的内存小了。 因为物理内存总是有限的,在运行很多程序时,内存中装不下所有的数据,这时windows就会将本应存在内存中的数据存在硬盘上,所以从硬盘中划出一部分空间做为虚拟的内存。物理内存速度快,但是空间有限,虚拟内存空间可以设置很大,但是速度要慢些。 虚拟内存的大小是可以设置的。下面说说怎样更改虚拟内存的大小。 1、右击“我的电脑”,选择“属性”

虚拟内存设置是不是越大越好

虚拟内存设置是不是越大越好 虚拟内存帮助我们释放磁盘空间,需要是还能进行数据交换,那么有人问到虚拟内存是不是越大越好?下面是小编收集整理的虚拟内存如何设置最好,希望对大家有帮助~~ 虚拟内存介绍: 虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。 Windows 8/8.1 操作系统如出现开机时卡在Windows徽标页面,无法进入系统,必须强制关机再重启才能打开时,可适当调整虚拟内存设置解决。 虚拟内存设置最好的方法

方法/步骤 1虚拟内存设置步骤 右击计算机-属性-高级系统设置-高级-设置-高级-更改,选择系统管理的大小(推荐使用),点击确定。 2.电脑虚拟内存不是越大越好 电脑虚拟内存不是越大越好,虚拟内存大小不要超过你物理内存的1.5倍,内存4G或者以上的、不玩大型游戏的可以不设置,因为虚拟内存对于硬盘消耗太大。 在进行虚拟内存设置之前,对电脑进行全盘清理,尤其是电脑磁盘清理。可以观看小编的经验。c盘空间越来越小怎么完美清理 3.自定义 如果你的电脑内存1G,2G,你又要运行较大的程序,可以进行自定义大小设置,最大值不大于物理内存的1.5倍,也可以使用系统的推荐,初始大小设置成物理内存大小。

4.虚拟内存的删除 点击无分页文件,点击设置-确定 5.虚拟内存更改位置 把c盘的虚拟文件删除后,点击D盘,点击系统管理的大小,点击设置,点击确定

关于2G内存用户的虚拟内存设置方法

现在很多玩家的内存相信都有2G了,也许细心的人会发现,大部分情况下2G根本用不完,基本都在1.2G左右徘徊,其次很人多认为内存大了就可以不需要虚拟内存了,其实不然,虚拟内存对于任何版本的Windows而言都是十分重要的。如果设置得当,它将极大地提升电脑的性能和运行速度。它是Windows XP作为内存使用的一部分硬盘空间。即便物理内存很大,虚拟内存也是必不可少的,作为一个文件数据交叉链接的活动文件,有很多软件或者游戏为了减少内存的占用量,都会直接将数据放在虚拟内存中,使用的时候才会调用到物理内存当中,因此设置为无的话,就会给系统的稳定性埋下一颗定时炸弹,况且,对系统本身而言,并没有性能的提升,那么说了这么多,我们进入主题吧。 虚拟内存因为是Windows XP作为内存使用的一部分硬盘空间,所以它的速度直接受硬盘影响,即使硬盘在再好,速度再快,跟物理内存还是相差甚多,那么我们上面提到了,2G内存大部分用不完,那为什么不把虚拟内存放到物理内存中呢,这样即解决了稳定性,又解决了速度问题,而且连页面文件所产生的磁盘随片都没有了。 要实现这个我们还要借助一个软件的帮忙“Ramdisk ”,Ramdisk 的作用就是让操作系统划出一部分内存来模拟硬盘,这样就可以把对慢速硬盘的操作转换为对高速内存的操作,既提高了系统资源的利用率,又极大提高了系统的运行效率。因为它的特性是数据完全存储在内存中,所以一旦关闭计算机,就会导致内存盘中的数据完全丢失,这个特性使的它非常适合存放页面文件。当然,比如IE的缓存,Windows和应用程序运行时产生的临时文件也都可以存放,不过要注意大小。 ramdisk 的安装和设置非常简单,运行install,进入ramdisk主界面,如果ramdisk 还没有安装,那么仅仅是Install ramdisk 按钮可用,单击按钮,开始安装,windows 可能会警告驱动程序没有数字签名,不去理睬它,按yes就可以了,好了,安装完毕,这时除了Install ramdisk 按钮以外的其他按钮都可用了,设置也很简单,仅仅包括盘符,内存盘大小,内存盘的类型,这3个选项。还有一些高级设置需要修改注册表,一般情况下不需要,具体看ramdisk的说明。内存盘大小,单位是千字节,这个数值完全取决于你的电脑的内存多少,如果你的电脑只有256M内存,那么内存盘的大小最好不要超过64兆,建议2G 拥护设置为512M就可以了,我自己就设置的512M,(1G的用户也可以使用,但是设置多大就看你自己了)然后是盘符的设置,没什么好说的,缺省是R,只要是没有使用的盘符都行。内存盘的类型,缺省是硬盘(fixed),还可以设置为软盘(removable),等等。选择好需要的设置后,按apply按钮或者Ok按钮就可以了,打开资源管理器,你就会发现多了一个盘符R,假定你设置的盘符是R,以后都直接用盘符R来代表内存盘。 后面的就很简单了,只要把页面文件设置在R盘就OK了,我设置的是最大最小都为400M,其他盘都为0,然后把IE的缓存设置为100M 并且也放到里面了。 一切都OK后,也许当时并不能明显感觉速度有什么大的提升,但是你试的进一下极品9,就知道了好处在哪了,呵呵!以前进入我需要将近20秒的时间才能进去,但是现在只需要2秒。

aix虚拟内存管理器

虚拟内存管理器(VMM)性能概述 虚拟内存管理器(VMM)性能概述 虚拟地址空间划分成段。每段的大小是 256 MB,它是虚拟内存地址空间中一个邻接的部分,数据对象可映射到该空间。 进程对数据的寻址能力按段(或对象)的级别进行管理,所以段既可以在进程间共享,也可以进行专门维护。例如,进程可共享代码段但拥有独立和专用的数据段。 实际内存管理 虚拟内存段划分成固定大小的单元叫做页。缺省页面大小是 4096 字节。某些系统也支持大页面,通常只能通过系统调用 shmat 访问。段中的每页在需要之前可位于实际内存(RAM)中,或存储在磁盘上。同样,实际内存也可以划分成 4096 字节的页面帧。VMM 的角色是管理分配实际内存页面帧并且解析程序对虚拟内存页面的引用,这些页面当前不在实际内存中或还不存在(例如,当进程第一次引用其数据段的某一页时)。 因为在任何给定时刻使用的虚拟内存数量可能比实际内存大,所以 VMM 必须将余量存储在磁盘上。从性能的观点来看,VMM 有两个稍微对立的目标: ·最小化使用虚拟内存的总处理器时间和磁盘带宽代价 ·最小化缺页故障的响应时间代价 在跟踪这些目标时,VMM 维护一个页面帧的空闲列表,它可用于补偿缺页故障。VMM 使用了一个页面替换算法来确定当前处于内存中的哪些虚拟内存页要将它们的页面帧重新指定到空闲列表中。页面替换算法使用了几个机制: ·虚拟内存段分成持久段或工作段。 ·虚拟内存段分成包含计算内存或文件内存。 ·跟踪在访问时引起缺页故障的虚拟内存页。 ·缺页故障分成新页故障或重新调页故障。 ·在每个虚拟内存段中维护一个重新调页故障率的统计信息。 ·用户可调阈值影响页面替换算法的结果。 以下各节较详细地描述了空闲列表和页面替换机制。 空闲列表 VMM 维护一个空闲页面帧的逻辑列表,它用于解决缺页故障。在绝大多数环境中,VMM 偶尔必须通过重新指定由运行进程占有的一些页面帧来添加到空闲列表中。需要重新指定页面帧的虚拟内存页由 VMM 的页面替换算法进行选择。VMM 阈值决定了重新指定的帧的数量。 持久段与工作段对比 持久段的页面在磁盘上的存储位置是永久性的。包含数据或可执行程序的文件映射到持久段中。因为持久段的每一页都有永久的磁盘存储位置,所以当页面被更改且不能再留在实际内存中时,VMM 将该页写回到那个位置。当页面被选择放置到空闲列表中时,如果它没有更改过则不需要 I/O 操作。如果后来再次引用到该页,那么就从它的永久磁盘存储位置读入一个新副本。 工作段是暂时的,它们仅在由进程使用时才存在,且没有永久的磁盘存储位置。进程堆栈和数据区域映射到工作段,这一点和内核文本段、内核扩展文本段、共享库文本段和数据段相同。当工作段的页面不能保存在实际内存中时,它们也必须占有磁盘存储位置。磁盘调页空间就是用于这个目的。 下列插图显示某些类型的段和它们的页面在磁盘上的位置之间的关系。它还显示了页面在实际内存中时实际(专有)的位置。 图形持久和工作存储段. 该插图显示某些类型的段和它们的页面在磁盘上的位置之间的关系。它还显示了页面在实际内存中时实际(专有)的位置。工作段是暂时的,这意味着它们仅在由进程使用时才存在并且没有永久的磁盘存储位置。进程堆栈和数据区域映射到工作段,这一点和内核文本段、内核扩展文本段、共享库文本段和数据段相同。当工作段的页面不能保存在实际内存中时,它们也必须占有磁盘存储位置。磁盘调页空间就是用于这个目的。

Win7系统虚拟内存设置误区及正确方法

Win7系统虚拟内存设置误区及正确方法 对于很多用户来说虚拟内存是很陌生的事,但是虚拟内存的作用却是非常大的,大家如果有需要的话可以去用用看看,而虚拟内存是需要设置的,那么该怎么设置呢,今天win7之家小编就为大家介绍介绍吧。 Windows7系统虚拟内存设置方法: 计算机右键,属性,高级系统设置,性能>设置...,高级,虚拟内存>更改...,自动管理取消,自定义大小,设置,确定,退出重启。 虚拟内存常见误区: 1,虚拟内存越大越好。 答案:错。虚拟内存过大,既浪费了磁盘空间,又增加了磁头定位的时间,降低了系统执行效率,没有任何好处。正确设置可节省256MB-4G左右空间(视内存大小) 2,虚拟内存不应该设在系统盘C盘(系统盘为其他盘同理),而应该设在其他非系统分区。 答案:错!因为C盘做为默认的系统盘,硬盘读写最频繁的就是系统文件和页面文件。而硬盘读写时最耗时的操作是什么呢?是磁头定位!而同一分区内的磁头定位无疑要比跨分区的远距离来回定位要节省时间!所以,系统盘内的虚拟内存(系统默认值)是执行最快、效率最高的。 3,虚拟内存的最佳值是内存容量的1.5-3倍。 答案:错!要根据实际使用情况来判断。特别是大内存普及的今天。内存使用率看任务管理器的内存一栏。一般512MB内存,根据实际使用内存占用,可以设虚拟内存为256-768MB(内存+虚拟内存之和一般比正常占用高256MB即可)。 1GB内存,根据实际使用内存占用情况,可以设虚拟内存为128-1024MB(内存+虚拟内存之和一般比正常占用高256-512MB即可)。平时正常占用为几百MB的人(占多数),甚至可以禁用虚拟内存(有软件限制的可以设少量虚拟内存,如16-128MB)。 内存为2G及以上的,一般可以禁用虚拟内存(有软件限制的可以设少量虚拟内存,如16-128MB)。部分确实会使用大量内存的人,如玩大型3D游戏、制作大幅图片、3D建模等,并收到win7系统内存不足警告的,才需要酌情设定虚拟内存。 尽管虚拟内存不是每个人都有用到和接触到的东西,不过虚拟内存的使用会成为一种趋势,这样的正确设置方法大家还是去好好学学吧,有一天终会有的上。虚拟内存只是真实内存不足的补充,所以不要加以神化,虚拟内存的读写性能(即硬盘的读写)只有真正内存性能的几十分之一,而且对硬盘损伤很大!能不用则不用,能少用则少用!原则是够用+留少量余量即可。 虚拟内存确实是个很好的东西,虽然用的范围不是很广,但是很多情况下还是用得到的,因此设置方法大家还是要掌握的,希望对大家有帮助。

如何更改虚拟内存

适用范围及演示工具 适用范围:WIN XP/2003/WIN7/WIN8各版本 演示系统:XP专业版/WIN7旗舰版/WIN8专业版 XP/2003系统虚拟内存怎么设置 因为XP和WIN2003界面类似,所以就以2003系统界面为例,其实操作步骤及图解完全一样。 第1步:单击开始菜单中的运行,在打开的运行窗口中键入【desk.cpl】并确定打开【显示属性】窗口。 注:还可以直接直接在控制面板或直接在桌面我的电脑图标上右键属性打开,更多打开方法参考显示属性打开方法。 第2步:在打开的【系统属性】程序窗口中单击高级选项卡,并在高级选项卡中找到性能下面的【设置】按扭。 第3步:再次在打开的【性能选项】窗口中单击【高级】选项卡,并在高级选项卡下的虚拟内存下面找到并单击【更改】按扭。 第4步:在新打开的【虚拟内存】窗口中,单击选中驱动器中需要设置的驱动器,然后再单击【自定义大小(C)】,这时下面初始大小和最大值后面的文本框即可输入,初始大小和最大值输入自己需要设置的数字,然后单击【设置】按扭,最后并确定即可生效。 注:在虚拟内存设置这里有不少网友疑惑,这个初始大小和最大值的虚拟内存怎么设置最好呢?其实这个初始大小就是自己真实内存的大小,最大值为1.5倍或是2倍左右。如上图所示,作者真实的内存是2GB,以上设置的虚拟内存就最合适。 第5步:按本文所说的第1到第4步设置完毕之后,并一次次的确定之后。这时因为系统设置改变,系统就会提示必须重新启动计算机才能使新的设置生效。,选择是电脑重启之后即可生效。生效之后虚拟内存所设置的根目录中的隐藏文件pagefile.sys就会出现相关大小的改变。 WIN7系统虚拟内存怎么设置

相关主题
文本预览
相关文档 最新文档