实验3Windows虚拟内存_第1页
实验3Windows虚拟内存_第2页
实验3Windows虚拟内存_第3页
实验3Windows虚拟内存_第4页
实验3Windows虚拟内存_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验3 Windows虚拟内存(一)、虚拟内存1 背景知识在Windows环境下,32位Windows系统中,232=4GB的虚拟地址空间被划分成两个部分:低端2GB提供给进程使用,高端2GB提供给系统使用。这意味着用户的应用程序代码,包括DLL以及进程使用的各种数据等,都装在用户进程地址空间内(低端2GB)。用户过程的虚拟地址空间也被分成三部分:1)虚拟内存的已调配区(committed):具有备用的物理内存,根据该区域设定的访问权限,用户可以进行写、读或在其中执行程序等操作。2)虚拟内存的保留区(reserved):没有备用的物理内存,但有一定的访问权限o 3)虚拟内存的自由区(free)

2、:不限定其用途,有相应的PAGE_NOACCESS权限。与虚拟内存区相关的访问权限告知系统进程可在内存中进行何种类型的操作。例如,用户不能在只有PAGE_READONLY权限的区域上进行写操作或执行程序;也不能在只有PAGE_EXECUTE权限的区域里进行读、写操作。而具有PAGE_NOACCESS权限的特殊区域,则意味着不允许进程对其地址进行任何操作。在进程装入之前,整个虚拟内存的地址空间都被设置为只有PAGE_NOACCESS权限的自由区域。当系统装入进程代码和数据后,才将内存地址的空间标记为已调配区或保留区,并将诸如EXECUTE、READWRITE和READONLY的权限与这些区域相关

3、联。如表1所示,给出了MEMORY_BASIC_INFORMATION的结构,此数据描述了进程虚拟内存空间中一组虚拟内存页面的当前状态,其中State项表明这些区域是否为自由区、已调配区或保留区;Protect项则包含了Windows系统为这些区域添加了何种访问保护;Type项则表明这些区域是可执行图像、内存映射文件还是简单的私有内存。VirtualQueryEX()API能让用户在指定的进程中,对虚拟内存地址的大小和属性进行检测。Windows还提供了一整套能使用户精确控制应用程序的虚拟地址空间的虚拟内存API。一些用于虚拟内存操作及检测的API如表2所示。表1 MEMORY_BASIC_I

4、NFORMATION结构的成员成员名称目 的PVOID BaseAddress虚拟内存区域开始处的指针PVOID AllocationBase如果这个特定的区域为子分配区的话,则为虚拟内存外面区域的指针;否则,此值与BaseAddress相同DWORD AllocationProtect虚拟内存最初分配区域的保护属性。其可能值包括:PAGE_NOACCESS,PAGE_READONLY,PAGE_READWRITE和PAGE_EXECUTE_READDWORD RegionSize 虚拟内存区域的字节数DWORD State 区域的当前分配状态。其可能值为MEM_COMMIT,MEM_FREE

5、和MEM_RESERVEDW()RD Protect虚拟内存当前区域的保护属性。可能值与AllocationProtect成员的相同DWORD Type虚拟内存区域中出现的页面类型。可能值为MEM_IMAGE,MEM_ MAPPED和MEM_PRIVATE表2 虚拟内存的APIAPl名称描 述VirtualQueryEx()通过填充MEMORY_BASIC_INFORMATION结构检测进程内虚拟内存的区域VirtuaAlloc()保留或调配进程的部分虚拟内存,设置分配和保护标志VirtualFree()释放或收回应用程序使用的部分虚拟地址VirtualProtect()改变虚拟内存区域保护规

6、范VirtualLock() 防止系统将虚拟内存区域通过系统交换到页面文件中VirtualUnlock()释放虚拟内存的锁定区域,必要时,允许系统将其交换到页面文件中 提供虚拟内存分配功能的是VinualAlloc()API。该API支持用户向系统要求新的虚拟内存或改变已分配内存的当前状态。用户若想通过VirtualAlloc()函数使用虚拟内存,可以采用两种方式通知系统:1)简单地将内存内容保存在地址空间内。2)请求系统返回带有物理存储区(RAM的空间或换页文件)的部分地址空间。用户可以用flAllocation Type参数(commit和reserve)来定义这些方式,用户可以通知Win

7、dows按只读、读写、不可读写、执行或特殊方式来处理新的虚拟内存。与VirtualAlloc()函数对应的是VirtualFree()函数,其作用是释放虚拟内存中的已调配页或保留页。用户可利用dwFreeType参数将已调配页修改成保留页属性。VirtualProtect()是VirtualAlloc()的一个辅助函数,利用它可以改变虚拟内存区的保护规范。2 实验目的1)通过实验了解Windows内存的使用,学习如何在应用程序中管理内存,体会Windows应用程序内存的简单性和自我防护能力。2)学习检查虚拟内存空间或对其进行操作。3)了解Windows的内存结构和虚拟内存的管理,进而了解进程堆

8、和Windows为使用内存而提供的一些扩展功能。3 实验内容与步骤虚拟内存的检测清单2所示的程序使用VirtualQueryEX()函数来检查虚拟内存空间。步骤1:在“开始”菜单中单击“程序”、 “Microsoft Visual Studio 60”、“MicrosoftVisualC+60”,进入VisualC+窗口。步骤2:运行以下程序清单清单2 检测进程的虚拟地址空间#include<windows.h>#include<iostream>#include<shlwapi.h>#include<iomanip>#pragma commen

9、t(lib,"shlwapi.lib")/以可读方式对用户显示保护的辅助方法。/保护标记表示允许应用程序对内存进行访问的类型以及操作系统强制访问的类型inline bool TestSet(DWORD dwTarget, DWORD dwMask)return(dwTarget & dwMask)=dwMask);#define SHOWMASK(dwTarget,type)if(TestSet(dwTarget,PAGE_#type)std:cout<<","<<#type;void ShowProtection(DWO

10、RD dwTarget)SHOWMASK(dwTarget,READONLY);SHOWMASK(dwTarget,GUARD);SHOWMASK(dwTarget,NOCACHE);SHOWMASK(dwTarget,READWRITE);SHOWMASK(dwTarget,WRITECOPY);SHOWMASK(dwTarget,EXECUTE);SHOWMASK(dwTarget,EXECUTE_READ);SHOWMASK(dwTarget,EXECUTE_READWRITE);SHOWMASK(dwTarget,EXECUTE_WRITECOPY);SHOWMASK(dwTarget

11、,NOACCESS);/遍历整个虚拟内存并对用户显示其属性的工作程序的方法void WalkVM(HANDLE hProcess)/首先,获得系统信息SYSTEM_INFO si;:ZeroMemory(&si,sizeof(si);:GetSystemInfo(&si);/分配要存放信息的缓冲区MEMORY_BASIC_INFORMATION mbi;:ZeroMemory(&mbi,sizeof(mbi);/循环整个应用程序地址空间LPCVOID pBlock=(LPVOID)si.lpMinimumApplicationAddress;while(pBlock&l

12、t;si.lpMaximumApplicationAddress)/获得下一个虚拟内存块的信息if(:VirtualQueryEx(hProcess,/相关的进程pBlock,/开始位置&mbi,/缓冲区sizeof(mbi)=sizeof(mbi)/大小的确认/计算块的结尾及其大小LPCVOID pEnd=(PBYTE)pBlock+mbi.RegionSize;TCHAR szSizeMAX_PATH;:StrFormatByteSize(mbi.RegionSize,szSize,MAX_PATH);/显示块地址和大小std:cout.fill('0');std:

13、cout<<std:hex<<std:setw(8)<<(DWORD)pBlock<<"-"<<std:hex<<std:setw(8)<<(DWORD)pEnd<<(strlen(szSize)=7?"(":"(")<<szSize<<")"/显示块的状态switch(mbi.State)case MEM_COMMIT:std:cout<<",Committed"

14、break;case MEM_FREE:std:cout<<",Free"break;case MEM_RESERVE:std:cout<<",Reserved"break;/显示保护if(mbi.Protect=0&&mbi.State!=MEM_FREE)mbi.Protect=PAGE_READONLY;ShowProtection(mbi.Protect);/显示类型switch(mbi.Type)case MEM_IMAGE:std:cout<<",Image"break;

15、case MEM_MAPPED:std:cout<<",Mapped"break;case MEM_PRIVATE:std:cout<<",Private"break;/检验可执行的影像TCHAR szFilenameMAX_PATH;if(:GetModuleFileName(HMODULE)pBlock,szFilename,MAX_PATH)>0)/除去路径并显示:PathStripPath(szFilename);std:cout<<",Module:"<<szFilena

16、me;std:cout<<std:endl;/移动块指针以获得下一个块pBlock=pEnd;void main()/遍历当前进程的虚拟内存:WalkVM(:GetCurrentProcess();清单2中显示一个WalkVM()函数开始于某个进程可访问的最低端虚拟地址处,并在其中显示各块虚拟内存的特性。虚拟内存中的块由VirtualQueryEx()APl定义成连续块或具有相同状态(自由区、已调配区等)的内存,并分配以一组统一的保护标志(只读、可执行等)。回答下列问题:1) 分析运行结果committed、reserved、free分别表示什么含义?_1)虚拟内存的已调配区(co

17、mmitted):具有备用的物理内存,根据该区域设定的访问权限,用户可以进行写、读或在其中执行程序等操作。2)虚拟内存的保留区(reserved):没有备用的物理内存,但有一定的访问权限o 3)虚拟内存的自由区(free):不限定其用途,有相应的PAGE_NOACCESS权限。_按committed、reserved、free等三种虚拟地址空间分别记录实验数据,其中“描述”是指对该组数据的简单描述,例如,对下列一组数据:0001000000012000<800KB>Committed,READWRITE,Private可描述为:具有READWRITE权限的已调配私有内存区。将系统当

18、前的自由区(free)虚拟地址空间填入表1中。(表格可以自己画,通过把运行结果复制到word中文字转换成表格)表1 实验记录00012000-00020000(56.0 KB)FreeNOACCESS00021000-00030000(60.0 KB)FreeNOACCESS00133000-00140000(52.0 KB)FreeNOACCESS00276000-00280000(40.0 KB)FreeNOACCESS002c1000-002d0000(60.0 KB)FreeNOACCESS00311000-00320000(60.0 KB)FreeNOACCESS00326000-0

19、0330000(40.0 KB)FreeNOACCESS00371000-00380000(60.0 KB)FreeNOACCESS00391000-003a0000(60.0 KB)FreeNOACCESS003a1000-003b0000(60.0 KB)FreeNOACCESS003c3000-003d0000(52.0 KB)FreeNOACCESS003128 KB)FreeNOACCESS00485000-00490000(44.0 KB)FreeNOACCESS00558000-00560000(32.0 KB)FreeNOACCESS0066300

20、0-00670000(52.0 KB)FreeNOACCESS00970000-62c20000(1.53 GB)FreeNOACCESS62c29000-73fa0000(275 MB)FreeNOACCESS740034.9 MB)FreeNOACCESS7631d000-77be0000(24.7 MB)FreeNOACCESS77c38000-77d10000(864 KB)FreeNOACCESS77e49000-77e50000(28.0 KB)FreeNOACCESS77ee2000-77ef0000(56.0 KB)FreeNOACCESS77f39

21、000-77f40000(28.0 KB)FreeNOACCESS77fb6000-77fc0000(40.0 KB)FreeNOACCESS77fd1000-7c800000(72.1 MB)FreeNOACCESS7c91e000-7c920000(8.00 KB)FreeNOACCESS7c9b3000-7f6f0000(45.2 MB)FreeNOACCESS7f7f0000-7ffa0000(7.68 MB)FreeNOACCESS7ffd3000-7ffd7000(16.0 KB)FreeNOACCESS7ffd8000-7ffdf000(28.0 KB)FreeNOACCESS将

22、系统当前的已调配区 (committed) 虚拟地址空间填入表2中。 表2 实验记录 00010000-00012000(8.00 KB)CommittedREADWRITEPrivate00020000-00021000(4.00 KB)CommittedREADWRITEPrivate0012c000-0012d000(4.00 KB)CommittedGUARDREADWRITEPrivate001212.0 KB)CommittedREADWRITEPrivate00130000-00133000(12.0 KB)CommittedREA

23、DONLYMapped00140000-00145000(20.0 KB)CommittedREADWRITEPrivate00240000-00246000(24.0 KB)CommittedREADWRITEPrivate00250000-00253000(12.0 KB)CommittedREADWRITEMapped00260000-00276000(88.0 KB)CommittedREADONLYMapped00280000-002c1000(260 KB)CommittedREADONLYMapped002260 KB)CommittedREADON

24、LYMapped00320000-00326000(24.0 KB)CommittedREADONLYMapped00330000-00371000(260 KB)CommittedREADONLYMapped00380000-00388000(32.0 KB)CommittedREADWRITEPrivate00390000-00391000(4.00 KB)CommittedREADWRITEPrivate003a0000-003a1000(4.00 KB)CommittedREADWRITEPrivate003b0000-003b4000(16.0 KB)CommittedREADWRI

25、TEPrivate003c0000-003c3000(12.0 KB)CommittedREADONLYMapped003d0000-003d3000(12.0 KB)CommittedREADWRITEPrivate00400000-00401000(4.00 KB)CommittedREADONLYImageModule:111.exe00401000-00470000(444 KB)CommittedEXECUTE_READImage00470000-00478000(32.0 KB)CommittedREADONLYImage00478000-0047b000(12.0 KB)Comm

26、ittedREADWRITEImage0047b000-0047d000(8.00 KB)CommittedWRITECOPYImage004716.0 KB)CommittedREADWRITEImage00481000-00485000(16.0 KB)CommittedREADONLYImage00490000-00496000(24.0 KB)CommittedEXECUTE_READMapped00550000-00552000(8.00 KB)CommittedEXECUTE_READMapped00560000-00663000(1.01 MB)Com

27、mittedREADONLYMapped00670000-006ef000(508 KB)CommittedEXECUTE_READMapped62c20000-62c21000(4.00 KB)CommittedREADONLYImageModule:LPK.DLL62c21000-62c26000(20.0 KB)CommittedEXECUTE_READImage62c26000-62c27000(4.00 KB)CommittedREADWRITEImage62c27000-62c29000(8.00 KB)CommittedREADONLYImage73fa0000-73fa1000

28、(4.00 KB)CommittedREADONLYImageModule:USP10.dll73fa1000-73fe5000(272 KB)CommittedEXECUTE_READImage73fe5000-73fef000(40.0 KB)CommittedWRITECOPYImage73fef000-73ff1000(8.00 KB)CommittedREADWRITEImage73ff1000-73ff4000(12.0 KB)CommittedWRITECOPYImage73ff4000-73ff5000(4.00 KB)CommittedREADWRITEImage73ff50

29、00-7400b000(88.0 KB)CommittedREADONLYImage76300000-76301000(4.00 KB)CommittedREADONLYImageModule:IMM32.DLL76301000-76316000(84.0 KB)CommittedEXECUTE_READImage76316000-76317000(4.00 KB)CommittedREADWRITEImage76317000-7631d000(24.0 KB)CommittedREADONLYImage77be0000-77be1000(4.00 KB)CommittedREADONLYIm

30、ageModule:msvcrt.dll77be1000-77c2d000(304 KB)CommittedEXECUTE_READImage77c2d000-77c2f000(8.00 KB)CommittedWRITECOPYImage77c2f000-77c30000(4.00 KB)CommittedREADWRITEImage77c30000-77c31000(4.00 KB)CommittedWRITECOPYImage77c31000-77c34000(12.0 KB)CommittedREADWRITEImage77c34000-77c38000(16.0 KB)Committ

31、edREADONLYImage77d10000-77d11000(4.00 KB)CommittedREADONLYImageModule:USER32.dll77d11000-77d71000(384 KB)CommittedEXECUTE_READImage77d71000-77d72000(4.00 KB)CommittedREADWRITEImage77d72000-77d73000(4.00 KB)CommittedWRITECOPYImage77d73000-77da0000(180 KB)CommittedREADONLYImage77da0000-77da1000(4.00 K

32、B)CommittedREADONLYImageModule:ADVAPI32.dll77da1000-77e16000(468 KB)CommittedEXECUTE_READImage77e16000-77e17000(4.00 KB)CommittedREADWRITEImage77e17000-77e1b000(16.0 KB)CommittedWRITECOPYImage77e1b000-77e49000(184 KB)CommittedREADONLYImage77e50000-77e51000(4.00 KB)CommittedREADONLYImageModule:RPCRT4

33、.dll77e51000-77edb000(552 KB)CommittedEXECUTE_READImage77edb000-77edc000(4.00 KB)CommittedREADWRITEImage77edc000-77ee2000(24.0 KB)CommittedREADONLYImage77ef0000-77ef1000(4.00 KB)CommittedREADONLYImageModule:GDI32.dll77ef1000-77f34000(268 KB)CommittedEXECUTE_READImage77f34000-77f36000(8.00 KB)Committ

34、edREADWRITEImage77f36000-77f39000(12.0 KB)CommittedREADONLYImage77f40000-77f41000(4.00 KB)CommittedREADONLYImageModule:SHLWAPI.dll77f41000-77fad000(432 KB)CommittedEXECUTE_READImage77fad000-77fae000(4.00 KB)CommittedREADWRITEImage77fae000-77fb6000(32.0 KB)CommittedREADONLYImage77fc0000-77fc1000(4.00

35、 KB)CommittedREADONLYImageModule:Secur32.dll77fc1000-77fce000(52.0 KB)CommittedEXECUTE_READImage77fce000-77fcf000(4.00 KB)CommittedREADWRITEImage77fcf000-77fd1000(8.00 KB)CommittedREADONLYImage7c800000-7c801000(4.00 KB)CommittedREADONLYImageModule:kernel32.dll7c801000-7c885000(528 KB)CommittedEXECUT

36、E_READImage7c885000-7c888000(12.0 KB)CommittedREADWRITEImage7c888000-7c88a000(8.00 KB)CommittedWRITECOPYImage7c88a000-7c91e000(592 KB)CommittedREADONLYImage7c920000-7c921000(4.00 KB)CommittedREADONLYImageModule:ntdll.dll7c921000-7c99b000(488 KB)CommittedEXECUTE_READImage7c99b000-7c99e000(12.0 KB)Com

37、mittedREADWRITEImage7c99e000-7c9a0000(8.00 KB)CommittedWRITECOPYImage7c9a0000-7c9b3000(76.0 KB)CommittedREADONLYImage7f6f0000-7f6f7000(28.0 KB)CommittedEXECUTE_READMapped7ffa0000-7ffd3000(204 KB)CommittedREADONLYMapped7ffd7000-7ffd8000(4.00 KB)CommittedREADWRITEPrivate7ffdf000-7ffe0000(4.00 KB)Commi

38、ttedREADWRITEPrivate7ffe0000-7ffe1000(4.00 KB)CommittedREADONLYPrivate将系统当前的保留区 (reserved) 虚拟地址空间填入表3中。 表3 实验记录00030000-0012c000(0.98 MB)ReservedREADONLYPrivate00145000-00240000(0.98 MB)ReservedREADONLYPrivate00246000-00250000(40.0 KB)ReservedREADONLYPrivate00253000-00260000(52.0 KB)ReservedREA

39、DONLYMapped00388000-00390000(32.0 KB)ReservedREADONLYPrivate003b4000-003c0000(48.0 KB)ReservedREADONLYPrivate003d3000-003e0000(52.0 KB)ReservedREADONLYPrivate00496000-00550000(744 KB)ReservedREADONLYMapped00552000-00558000(24.0 KB)ReservedREADONLYMapped006e2.50 MB)ReservedREADONLYMappe

40、d7f6f7000-7f7f0000(996 KB)ReservedREADONLYMapped7ffe1000-7fff0000(60.0 KB)ReservedNOACCESSPrivate2) 从上述输出结果,对照分析程序,请简单描述程序运行的流程:从主程序开始,调用 walkvm(handle hProcess), walkvm(handle hprocess) 先获得系统信息,分配应用程序地址空间,进行循环程序:获得虚拟程序的内存信息,显示块的大小和位置及状态,显示保护方式和类型,检查可执行的影像,除去文件名的路径并将文件名显示出来,移动块指针获得下一块,循环 3) 实验总结(根据实

41、验结果及自己查阅相关资料写出VirtualAlloc()函数的作用,各个参数的可能值及含义。列出对虚拟内存的认识)通过本次实验体会学习检查虚拟内存空间或对其进行操作,windows2000的内存采用,进而了解进程和windows为使用内存而提供的一些扩展功能。虚拟内存计算机系统内存管理的一种技术。它使得应用成粗认为它拥有连续的可用的内存,而实际上,它通常是被隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。4)列出虚拟内存不足的原因及其解决方法;一、剪贴板占用了太多的内存 实际上,剪贴板是内存中的一块临时区域,当你在程序中使用了“复制”或“剪切”命令后, Wind

42、ows将把复制或剪切的内容及其格式等信息暂时存储在剪贴板上,以供“粘贴”使用。如果当前剪贴板中存放的是一幅图画,则剪贴板就占用了不少的内存。这时,请按下述步骤清除剪贴板中的内容,释放其占用的内存资源: 1.单击“开始”,指向“程序”或“所有程序”,指向“附件”,指向“系统工具”,然后单击“剪贴板查看程序”,打开“剪贴板查看程序”窗口。2.在“编辑”菜单上,单击“删除”命令。3.关闭“剪贴板查看程序”窗口。 为了与Microsoft Office程序提供的多重剪贴板相区分,上述所说的剪贴板,常被我们称为系统剪贴板。如果你正在使用Micros OftOffice程序,而且使用了其多重剪贴板功能,那

43、么你应清空“Office剪贴板”上的项目,方法是:在“Office剪贴板”任务窗格(OfficeXP)或工具栏 (Office2000)上,单击“全部清空”或“清空剪贴板”。当清空“Office剪贴板”时,系统剪贴板也将同时被清空 二、打开的程序太多 如果同时打开的文档过多或者运行的程序过多,就没有足够的内存运行其他程序。这时,对于多文档界面(MDl)程序,如Word、Excel等,请关闭当前文档外的所有文档,并退出当前未使用的程序,然后或许你就能够继续执行因“内存不足”而被中断的任务。 三、重新启动计算机 如果只退出程序,并不重新启动计算机,程序可能无法将内存资源归还给系统。请重新启动计算机

44、以释放系统资源,然后再次运行程序或执行被中断的任务。 四、自动运行的程序太多如果在启动Windows时自动运行的程序太多,那么,即使重新启动计算机,也没足够的内存用来运行其它程序。 (一)确定设置为自动运行的程序是否太多 1.单击“开始”,然后单击“运行”。 2.在“打开”框中,键入“Msconfig”,单击“确定”按钮,打开“系统配置实用程序”窗口。 3.单击“常规”选项卡,选中“选择性启动”复选钮,清除“处理Win.ini文件”复选框和“加载启动组项目”复选框。 4.单击“确定”按钮,当系统提示重新启动计算机时,请单击“是”按钮。重新启动电脑后,如果内存不足的问题已经解决,你就可以将计算机

45、配置为启动时不打开任何程序。 (二)配置计算机不自动打开任何程序 1.恢复在Msconfig中所作的更改,方法是:在“系统配置实用程序”窗口,单击“常规”选项卡,选择“正常启动”,单击“确定”按钮,然后重新启动计算机。 2.删除“启动”文件夹中的所有快捷方式 单击“开始”,指向“设置”,然后单击“任务栏和开始菜单”,系统弹出“任务栏属性”对话框。 单击“开始菜单”选项卡,单击“自定义”,再单击“删除”按钮。 单击“启动”文件夹旁的加号,以显示设置为自动运行的程序列表。如果“启动”文件夹旁没有加号“+”,则表明没有设置为自动运行的程序,请单击“关闭”按钮以终止此过程。 单击“启动”文件夹中的每个

46、快捷方式,然后单击“删除”按钮。此操作将从“开始”菜单中删除快捷方式,但并不从硬盘中删除相应的程序。对于“启动”文件夹中的每个快捷方式,重复该步骤。 单击“关闭”按钮。 单击“确定”按钮。 3.禁用从Win.ini文件加载的所有程序 如上所述打开“系统配置实用程序”窗口。 单击“Win.ini”选项卡,双击“windows”,然后清除“Load=”和“Run=”复选框。 单击“确定”按钮,当系统提示重新启动计算机时,请单击“是”按钮。 五、让Windows管理虚拟内存设置 如果没有设置让Windows管理虚拟内存或者禁用虚拟内存,那么计算机可能无法正常工作,也可能收到“内存不足”的消息,或在运

47、行某程序时出现相同的错误消息。 1.单击“开始”,单击“设置”,单击“控制面板”,然后双击“系统”。 2.在“系统属性”对话框中,单击“性能”选项卡,然后单击“虚拟内存”按钮。 3.选中“让Windows管理虚拟内存设置(推荐)”选项,将计算机中可作为虚拟内存使用的硬盘空间量设置为默认值。此时,虚拟内存分页“win386.swp”能够根据实际内存的使用情况动态缩小和放大,最小容量为0,最大容量为硬盘的全部可用空间。 4.单击“确定”按钮。 六、增加可用磁盘空间 由于Windows以虚拟内存分页文件的格式使用硬盘空间以模拟RAM(),所以,尽管已设置为让Windows管理虚拟内存,但是当虚拟内存

48、分页文件所在的驱动器(默认为Windows系统所在的硬盘分区)没有足够的空间时,仍会出现“内存不足”的错误。此时,请执行以下一项或多项操作,增加Windows虚拟内存分页文件所在驱动器上的可用空间: 1.清空回收站,方法是:在桌面上,右键单击“回收站”,再单击“清空回收站”。 2.从磁盘中删除临时文件,方法是:打开“Windows资源管理器”或“我的电脑”窗口,右键单击要释放其空间的磁盘,然后单击“属性”,在“常规”选项卡上,单击“磁盘清理”按钮,选中要删除的不需要的文件前的复选框,可以阅读列表下面区域中每个文件类型的说明,单击“确定”按钮。 3.从磁盘中删除过期的文件或已存档的文件。 4.删

49、除从未使用过的所有文件。 七、程序文件被毁坏 如果仅仅是使用某个程序时,系统提示内存不足,而其他程序可以正常运行,那么可能的原因是该程序文件被毁坏,从而导致内存问题。然而Windows并没有确切地提示表明该程序已损坏,所以请尝试删除并重新安装该程序,然后重新运行该程序。如果系统不再提示内存不足,那么说明原程序文件确实被损坏。 八、使用内存优化软件 内存优化软件有很多,比如RAM Idle和Memo Kit就是比较出色的两个。这些软件都可以设置自动清空剪贴板、释放被关闭程序未释放的内存、对Win386.swp文件进行重新组织等,从而免除你手工操作的麻烦,达到自动释放内存的目的,不妨一试! 九、查

50、杀病毒 系统感染电脑病毒也是导致内存不足的罪魁祸首,当系统出现“内存不足”的错误时,请使用最新的防毒软件查杀病毒,或者在清除电脑病毒之一、剪贴板占用了太多的内存 实际上,剪贴板是内存中的一块临时区域,当你在程序中使用了“复制”或“剪切”命令后, Windows将把复制或剪切的内容及其格式等信息暂时存储在剪贴板上,以供“粘贴”使用。如果当前剪贴板中存放的是一幅图画,则剪贴板就占用了不少的内存。这时,请按下述步骤清除剪贴板中的内容,释放其占用的内存资源: 1.单击“开始”,指向“程序”或“所有程序”,指向“附件”,指向“系统工具”,然后单击“剪贴板查看程序”,打开“剪贴板查看程序”窗口。2.在“编

51、辑”菜单上,单击“删除”命令。3.关闭“剪贴板查看程序”窗口。 为了与Microsoft Office程序提供的多重剪贴板相区分,上述所说的剪贴板,常被我们称为系统剪贴板。如果你正在使用Micros OftOffice程序,而且使用了其多重剪贴板功能,那么你应清空“Office剪贴板”上的项目,方法是:在“Office剪贴板”任务窗格(OfficeXP)或工具栏 (Office2000)上,单击“全部清空”或“清空剪贴板”。当清空“Office剪贴板”时,系统剪贴板也将同时被清空 二、打开的程序太多 如果同时打开的文档过多或者运行的程序过多,就没有足够的内存运行其他程序。这时,对于多文档界面(

52、MDl)程序,如Word、Excel等,请关闭当前文档外的所有文档,并退出当前未使用的程序,然后或许你就能够继续执行因“内存不足”而被中断的任务。 三、重新启动计算机 如果只退出程序,并不重新启动计算机,程序可能无法将内存资源归还给系统。请重新启动计算机以释放系统资源,然后再次运行程序或执行被中断的任务。 四、自动运行的程序太多 如果在启动Windows时自动运行的程序太多,那么,即使重新启动计算机,也没足够的内存用来运行其它程序。 (一)确定设置为自动运行的程序是否太多 1.单击“开始”,然后单击“运行”。 2.在“打开”框中,键入“Msconfig”,单击“确定”按钮,打开“系统配置实用程序”窗口。 3.单击“常规”选项卡,选中“选择性启动”复选钮,清除“处理Win

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论