實(shí)驗(yàn)3Windows虛擬內(nèi)存._第1頁(yè)
實(shí)驗(yàn)3Windows虛擬內(nèi)存._第2頁(yè)
實(shí)驗(yàn)3Windows虛擬內(nèi)存._第3頁(yè)
實(shí)驗(yàn)3Windows虛擬內(nèi)存._第4頁(yè)
實(shí)驗(yàn)3Windows虛擬內(nèi)存._第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)3 Windows虛擬內(nèi)存(一)、虛擬內(nèi)存1 背景知識(shí)在Windows環(huán)境下,32位Windows系統(tǒng)中,232=4GB的虛擬地址空間被劃分成兩個(gè)部分:低端2GB提供給進(jìn)程使用,高端2GB提供給系統(tǒng)使用。這意味著用戶的應(yīng)用程序代碼,包括DLL以及進(jìn)程使用的各種數(shù)據(jù)等,都裝在用戶進(jìn)程地址空間內(nèi)(低端2GB)。用戶過(guò)程的虛擬地址空間也被分成三部分:1)虛擬內(nèi)存的已調(diào)配區(qū)(committed):具有備用的物理內(nèi)存,根據(jù)該區(qū)域設(shè)定的訪問(wèn)權(quán)限,用戶可以進(jìn)行寫(xiě)、讀或在其中執(zhí)行程序等操作。2)虛擬內(nèi)存的保留區(qū)(reserved):沒(méi)有備用的物理內(nèi)存,但有一定的訪問(wèn)權(quán)限o 3)虛擬內(nèi)存的自由區(qū)(free)

2、:不限定其用途,有相應(yīng)的PAGE_NOACCESS權(quán)限。與虛擬內(nèi)存區(qū)相關(guān)的訪問(wèn)權(quán)限告知系統(tǒng)進(jìn)程可在內(nèi)存中進(jìn)行何種類(lèi)型的操作。例如,用戶不能在只有PAGE_READONLY權(quán)限的區(qū)域上進(jìn)行寫(xiě)操作或執(zhí)行程序;也不能在只有PAGE_EXECUTE權(quán)限的區(qū)域里進(jìn)行讀、寫(xiě)操作。而具有PAGE_NOACCESS權(quán)限的特殊區(qū)域,則意味著不允許進(jìn)程對(duì)其地址進(jìn)行任何操作。在進(jìn)程裝入之前,整個(gè)虛擬內(nèi)存的地址空間都被設(shè)置為只有PAGE_NOACCESS權(quán)限的自由區(qū)域。當(dāng)系統(tǒng)裝入進(jìn)程代碼和數(shù)據(jù)后,才將內(nèi)存地址的空間標(biāo)記為已調(diào)配區(qū)或保留區(qū),并將諸如EXECUTE、READWRITE和READONLY的權(quán)限與這些區(qū)域相關(guān)

3、聯(lián)。如表1所示,給出了MEMORY_BASIC_INFORMATION的結(jié)構(gòu),此數(shù)據(jù)描述了進(jìn)程虛擬內(nèi)存空間中一組虛擬內(nèi)存頁(yè)面的當(dāng)前狀態(tài),其中State項(xiàng)表明這些區(qū)域是否為自由區(qū)、已調(diào)配區(qū)或保留區(qū);Protect項(xiàng)則包含了Windows系統(tǒng)為這些區(qū)域添加了何種訪問(wèn)保護(hù);Type項(xiàng)則表明這些區(qū)域是可執(zhí)行圖像、內(nèi)存映射文件還是簡(jiǎn)單的私有內(nèi)存。VirtualQueryEX()API能讓用戶在指定的進(jìn)程中,對(duì)虛擬內(nèi)存地址的大小和屬性進(jìn)行檢測(cè)。Windows還提供了一整套能使用戶精確控制應(yīng)用程序的虛擬地址空間的虛擬內(nèi)存API。一些用于虛擬內(nèi)存操作及檢測(cè)的API如表2所示。表1 MEMORY_BASIC_I

4、NFORMATION結(jié)構(gòu)的成員成員名稱(chēng)目 的PVOID BaseAddress虛擬內(nèi)存區(qū)域開(kāi)始處的指針PVOID AllocationBase如果這個(gè)特定的區(qū)域?yàn)樽臃峙鋮^(qū)的話,則為虛擬內(nèi)存外面區(qū)域的指針;否則,此值與BaseAddress相同DWORD AllocationProtect虛擬內(nèi)存最初分配區(qū)域的保護(hù)屬性。其可能值包括:PAGE_NOACCESS,PAGE_READONLY,PAGE_READWRITE和PAGE_EXECUTE_READDWORD RegionSize 虛擬內(nèi)存區(qū)域的字節(jié)數(shù)DWORD State 區(qū)域的當(dāng)前分配狀態(tài)。其可能值為MEM_COMMIT,MEM_FREE

5、和MEM_RESERVEDW()RD Protect虛擬內(nèi)存當(dāng)前區(qū)域的保護(hù)屬性??赡苤蹬cAllocationProtect成員的相同DWORD Type虛擬內(nèi)存區(qū)域中出現(xiàn)的頁(yè)面類(lèi)型??赡苤禐镸EM_IMAGE,MEM_ MAPPED和MEM_PRIVATE表2 虛擬內(nèi)存的APIAPl名稱(chēng)描 述VirtualQueryEx()通過(guò)填充MEMORY_BASIC_INFORMATION結(jié)構(gòu)檢測(cè)進(jìn)程內(nèi)虛擬內(nèi)存的區(qū)域VirtuaAlloc()保留或調(diào)配進(jìn)程的部分虛擬內(nèi)存,設(shè)置分配和保護(hù)標(biāo)志VirtualFree()釋放或收回應(yīng)用程序使用的部分虛擬地址VirtualProtect()改變虛擬內(nèi)存區(qū)域保護(hù)規(guī)

6、范VirtualLock() 防止系統(tǒng)將虛擬內(nèi)存區(qū)域通過(guò)系統(tǒng)交換到頁(yè)面文件中VirtualUnlock()釋放虛擬內(nèi)存的鎖定區(qū)域,必要時(shí),允許系統(tǒng)將其交換到頁(yè)面文件中 提供虛擬內(nèi)存分配功能的是VinualAlloc()API。該API支持用戶向系統(tǒng)要求新的虛擬內(nèi)存或改變已分配內(nèi)存的當(dāng)前狀態(tài)。用戶若想通過(guò)VirtualAlloc()函數(shù)使用虛擬內(nèi)存,可以采用兩種方式通知系統(tǒng):1)簡(jiǎn)單地將內(nèi)存內(nèi)容保存在地址空間內(nèi)。2)請(qǐng)求系統(tǒng)返回帶有物理存儲(chǔ)區(qū)(RAM的空間或換頁(yè)文件)的部分地址空間。用戶可以用flAllocation Type參數(shù)(commit和reserve)來(lái)定義這些方式,用戶可以通知Win

7、dows按只讀、讀寫(xiě)、不可讀寫(xiě)、執(zhí)行或特殊方式來(lái)處理新的虛擬內(nèi)存。與VirtualAlloc()函數(shù)對(duì)應(yīng)的是VirtualFree()函數(shù),其作用是釋放虛擬內(nèi)存中的已調(diào)配頁(yè)或保留頁(yè)。用戶可利用dwFreeType參數(shù)將已調(diào)配頁(yè)修改成保留頁(yè)屬性。VirtualProtect()是VirtualAlloc()的一個(gè)輔助函數(shù),利用它可以改變虛擬內(nèi)存區(qū)的保護(hù)規(guī)范。2 實(shí)驗(yàn)?zāi)康?)通過(guò)實(shí)驗(yàn)了解Windows內(nèi)存的使用,學(xué)習(xí)如何在應(yīng)用程序中管理內(nèi)存,體會(huì)Windows應(yīng)用程序內(nèi)存的簡(jiǎn)單性和自我防護(hù)能力。2)學(xué)習(xí)檢查虛擬內(nèi)存空間或?qū)ζ溥M(jìn)行操作。3)了解Windows的內(nèi)存結(jié)構(gòu)和虛擬內(nèi)存的管理,進(jìn)而了解進(jìn)程堆

8、和Windows為使用內(nèi)存而提供的一些擴(kuò)展功能。3 實(shí)驗(yàn)內(nèi)容與步驟虛擬內(nèi)存的檢測(cè)清單2所示的程序使用VirtualQueryEX()函數(shù)來(lái)檢查虛擬內(nèi)存空間。步驟1:在“開(kāi)始”菜單中單擊“程序”、 “Microsoft Visual Studio 60”、“MicrosoftVisualC+60”,進(jìn)入VisualC+窗口。步驟2:運(yùn)行以下程序清單清單2 檢測(cè)進(jìn)程的虛擬地址空間#include#include#include#include#pragma comment(lib,shlwapi.lib)/以可讀方式對(duì)用戶顯示保護(hù)的輔助方法。/保護(hù)標(biāo)記表示允許應(yīng)用程序?qū)?nèi)存進(jìn)行訪問(wèn)的類(lèi)型以及操作系

9、統(tǒng)強(qiáng)制訪問(wèn)的類(lèi)型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(DWORD dwTarget)SHOWMASK(dwTarget,READONLY);SHOWMASK(dwTarget,GUARD);SHOWMASK(dwTarget,NOCACHE);SHOWMASK(dwTarget

10、,READWRITE);SHOWMASK(dwTarget,WRITECOPY);SHOWMASK(dwTarget,EXECUTE);SHOWMASK(dwTarget,EXECUTE_READ);SHOWMASK(dwTarget,EXECUTE_READWRITE);SHOWMASK(dwTarget,EXECUTE_WRITECOPY);SHOWMASK(dwTarget,NOACCESS);/遍歷整個(gè)虛擬內(nèi)存并對(duì)用戶顯示其屬性的工作程序的方法void WalkVM(HANDLE hProcess)/首先,獲得系統(tǒng)信息SYSTEM_INFO si;:ZeroMemory(&si,siz

11、eof(si);:GetSystemInfo(&si);/分配要存放信息的緩沖區(qū)MEMORY_BASIC_INFORMATION mbi;:ZeroMemory(&mbi,sizeof(mbi);/循環(huán)整個(gè)應(yīng)用程序地址空間LPCVOID pBlock=(LPVOID)si.lpMinimumApplicationAddress;while(pBlocksi.lpMaximumApplicationAddress)/獲得下一個(gè)虛擬內(nèi)存塊的信息if(:VirtualQueryEx(hProcess,/相關(guān)的進(jìn)程pBlock,/開(kāi)始位置&mbi,/緩沖區(qū)sizeof(mbi)=sizeof(mbi)

12、/大小的確認(rèn)/計(jì)算塊的結(jié)尾及其大小LPCVOID pEnd=(PBYTE)pBlock+mbi.RegionSize;TCHAR szSizeMAX_PATH;:StrFormatByteSize(mbi.RegionSize,szSize,MAX_PATH);/顯示塊地址和大小std:cout.fill(0);std:coutstd:hexstd:setw(8)(DWORD)pBlock-std:hexstd:setw(8)(DWORD)pEnd(strlen(szSize)=7?(:()szSize);/顯示塊的狀態(tài)switch(mbi.State)case MEM_COMMIT:std:

13、cout,Committed;break;case MEM_FREE:std:cout,Free;break;case MEM_RESERVE:std:cout,Reserved;break;/顯示保護(hù)if(mbi.Protect=0&mbi.State!=MEM_FREE)mbi.Protect=PAGE_READONLY;ShowProtection(mbi.Protect);/顯示類(lèi)型switch(mbi.Type)case MEM_IMAGE:std:cout,Image;break;case MEM_MAPPED:std:cout,Mapped;break;case MEM_PRIV

14、ATE:std:cout0)/除去路徑并顯示:PathStripPath(szFilename);std:cout,Module:szFilename;std:coutstd:endl;/移動(dòng)塊指針以獲得下一個(gè)塊pBlock=pEnd;void main()/遍歷當(dāng)前進(jìn)程的虛擬內(nèi)存:WalkVM(:GetCurrentProcess();清單2中顯示一個(gè)WalkVM()函數(shù)開(kāi)始于某個(gè)進(jìn)程可訪問(wèn)的最低端虛擬地址處,并在其中顯示各塊虛擬內(nèi)存的特性。虛擬內(nèi)存中的塊由VirtualQueryEx()APl定義成連續(xù)塊或具有相同狀態(tài)(自由區(qū)、已調(diào)配區(qū)等)的內(nèi)存,并分配以一組統(tǒng)一的保護(hù)標(biāo)志(只讀、可執(zhí)行等

15、)?;卮鹣铝袉?wèn)題:1) 分析運(yùn)行結(jié)果committed、reserved、free分別表示什么含義?_1)虛擬內(nèi)存的已調(diào)配區(qū)(committed):具有備用的物理內(nèi)存,根據(jù)該區(qū)域設(shè)定的訪問(wèn)權(quán)限,用戶可以進(jìn)行寫(xiě)、讀或在其中執(zhí)行程序等操作。2)虛擬內(nèi)存的保留區(qū)(reserved):沒(méi)有備用的物理內(nèi)存,但有一定的訪問(wèn)權(quán)限o 3)虛擬內(nèi)存的自由區(qū)(free):不限定其用途,有相應(yīng)的PAGE_NOACCESS權(quán)限。_按committed、reserved、free等三種虛擬地址空間分別記錄實(shí)驗(yàn)數(shù)據(jù),其中“描述”是指對(duì)該組數(shù)據(jù)的簡(jiǎn)單描述,例如,對(duì)下列一組數(shù)據(jù):0001000000012000Committ

16、ed,READWRITE,Private可描述為:具有READWRITE權(quán)限的已調(diào)配私有內(nèi)存區(qū)。將系統(tǒng)當(dāng)前的自由區(qū)(free)虛擬地址空間填入表1中。(表格可以自己畫(huà),通過(guò)把運(yùn)行結(jié)果復(fù)制到word中文字轉(zhuǎn)換成表格)表1 實(shí)驗(yàn)記錄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)FreeNOAC

17、CESS00311000-00320000(60.0 KB)FreeNOACCESS00326000-00330000(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)FreeN

18、OACCESS00558000-00560000(32.0 KB)FreeNOACCESS00663000-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)Fre

19、eNOACCESS77ee2000-77ef0000(56.0 KB)FreeNOACCESS77f39000-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

20、)FreeNOACCESS7ffd8000-7ffdf000(28.0 KB)FreeNOACCESS將系統(tǒng)當(dāng)前的已調(diào)配區(qū) (committed) 虛擬地址空間填入表2中。表2 實(shí)驗(yàn)記錄00010000-00012000(8.00 KB)CommittedREADWRITEPrivate00020000-00021000(4.00 KB)CommittedREADWRITEPrivate0012c000-0012d000(4.00 KB)CommittedGUARDREADWRITEPrivate001212.0 KB)CommittedREADWRITEPriva

21、te00130000-00133000(12.0 KB)CommittedREADONLYMapped00140000-00145000(20.0 KB)CommittedREADWRITEPrivate00240000-00246000(24.0 KB)CommittedREADWRITEPrivate00250000-00253000(12.0 KB)CommittedREADWRITEMapped00260000-00276000(88.0 KB)CommittedREADONLYMapped00280000-002c1000(260 KB)CommittedREADONLYMapped

22、002260 KB)CommittedREADONLYMapped00320000-00326000(24.0 KB)CommittedREADONLYMapped00330000-00371000(260 KB)CommittedREADONLYMapped00380000-00388000(32.0 KB)CommittedREADWRITEPrivate00390000-00391000(4.00 KB)CommittedREADWRITEPrivate003a0000-003a1000(4.00 KB)CommittedREADWRITEPrivate00

23、3b0000-003b4000(16.0 KB)CommittedREADWRITEPrivate003c0000-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)CommittedREA

24、DONLYImage00478000-0047b000(12.0 KB)CommittedREADWRITEImage0047b000-0047d000(8.00 KB)CommittedWRITECOPYImage004716.0 KB)CommittedREADWRITEImage00481000-00485000(16.0 KB)CommittedREADONLYImage00490000-00496000(24.0 KB)CommittedEXECUTE_READMapped00550000-00552000(8.00 KB)CommittedEXECUTE

25、_READMapped00560000-00663000(1.01 MB)CommittedREADONLYMapped00670000-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

26、)CommittedREADONLYImage73fa0000-73fa1000(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-73ff50

27、00(4.00 KB)CommittedREADWRITEImage73ff5000-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)CommittedREADONLYImage77be0

28、000-77be1000(4.00 KB)CommittedREADONLYImageModule: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)CommittedREADWRI

29、TEImage77c34000-77c38000(16.0 KB)CommittedREADONLYImage77d10000-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)Commit

30、tedREADONLYImage77da0000-77da1000(4.00 KB)CommittedREADONLYImageModule:ADVAPI32.dll77da1000-77e16000(468 KB)CommittedEXECUTE_READImage77e16000-77e17000(4.00 KB)CommittedREADWRITEImage77e17000-77e1b000(16.0 KB)CommittedWRITECOPYImage77e1b000-77e49000(184 KB)CommittedREADONLYImage77e50000-77e51000(4.0

31、0 KB)CommittedREADONLYImageModule:RPCRT4.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_RE

32、ADImage77f34000-77f36000(8.00 KB)CommittedREADWRITEImage77f36000-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)Comm

33、ittedREADONLYImage77fc0000-77fc1000(4.00 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.dll

34、7c801000-7c885000(528 KB)CommittedEXECUTE_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)CommittedEXECUT

35、E_READImage7c99b000-7c99e000(12.0 KB)CommittedREADWRITEImage7c99e000-7c9a0000(8.00 KB)CommittedWRITECOPYImage7c9a0000-7c9b3000(76.0 KB)CommittedREADONLYImage7f6f0000-7f6f7000(28.0 KB)CommittedEXECUTE_READMapped7ffa0000-7ffd3000(204 KB)CommittedREADONLYMapped7ffd7000-7ffd8000(4.00 KB)CommittedREADWRI

36、TEPrivate7ffdf000-7ffe0000(4.00 KB)CommittedREADWRITEPrivate7ffe0000-7ffe1000(4.00 KB)CommittedREADONLYPrivate將系統(tǒng)當(dāng)前的保留區(qū) (reserved) 虛擬地址空間填入表3中。表3 實(shí)驗(yàn)記錄00030000-0012c000(0.98 MB)ReservedREADONLYPrivate00145000-00240000(0.98 MB)ReservedREADONLYPrivate00246000-00250000(40.0 KB)ReservedREADONLYPrivate002

37、53000-00260000(52.0 KB)ReservedREADONLYMapped00388000-00390000(32.0 KB)ReservedREADONLYPrivate003b4000-003c0000(48.0 KB)ReservedREADONLYPrivate003d3000-003e0000(52.0 KB)ReservedREADONLYPrivate00496000-00550000(744 KB)ReservedREADONLYMapped00552000-00558000(24.0 KB)ReservedREADONLYMapped006ef000-0097

38、0000(2.50 MB)ReservedREADONLYMapped7f6f7000-7f7f0000(996 KB)ReservedREADONLYMapped7ffe1000-7fff0000(60.0 KB)ReservedNOACCESSPrivate2) 從上述輸出結(jié)果,對(duì)照分析程序,請(qǐng)簡(jiǎn)單描述程序運(yùn)行的流程:從主程序開(kāi)始,調(diào)用 walkvm(handle hProcess), walkvm(handle hprocess) 先獲得系統(tǒng)信息,分配應(yīng)用程序地址空間,進(jìn)行循環(huán)程序:獲得虛擬程序的內(nèi)存信息,顯示塊的大小和位置及狀態(tài),顯示保護(hù)方式和類(lèi)型,檢查可執(zhí)行的影像,除去文件名的路徑并

39、將文件名顯示出來(lái),移動(dòng)塊指針獲得下一塊,循環(huán) 3) 實(shí)驗(yàn)總結(jié)(根據(jù)實(shí)驗(yàn)結(jié)果及自己查閱相關(guān)資料寫(xiě)出VirtualAlloc()函數(shù)的作用,各個(gè)參數(shù)的可能值及含義。列出對(duì)虛擬內(nèi)存的認(rèn)識(shí))通過(guò)本次實(shí)驗(yàn)體會(huì)學(xué)習(xí)檢查虛擬內(nèi)存空間或?qū)ζ溥M(jìn)行操作,windows2000的內(nèi)存采用,進(jìn)而了解進(jìn)程和windows為使用內(nèi)存而提供的一些擴(kuò)展功能。虛擬內(nèi)存計(jì)算機(jī)系統(tǒng)內(nèi)存管理的一種技術(shù)。它使得應(yīng)用成粗認(rèn)為它擁有連續(xù)的可用的內(nèi)存,而實(shí)際上,它通常是被隔成多個(gè)物理內(nèi)存碎片,還有部分暫時(shí)存儲(chǔ)在外部磁盤(pán)存儲(chǔ)器上,在需要時(shí)進(jìn)行數(shù)據(jù)交換。4)列出虛擬內(nèi)存不足的原因及其解決方法;一、剪貼板占用了太多的內(nèi)存 實(shí)際上,剪貼板是內(nèi)存中的

40、一塊臨時(shí)區(qū)域,當(dāng)你在程序中使用了“復(fù)制”或“剪切”命令后, Windows將把復(fù)制或剪切的內(nèi)容及其格式等信息暫時(shí)存儲(chǔ)在剪貼板上,以供“粘貼”使用。如果當(dāng)前剪貼板中存放的是一幅圖畫(huà),則剪貼板就占用了不少的內(nèi)存。這時(shí),請(qǐng)按下述步驟清除剪貼板中的內(nèi)容,釋放其占用的內(nèi)存資源: 1.單擊“開(kāi)始”,指向“程序”或“所有程序”,指向“附件”,指向“系統(tǒng)工具”,然后單擊“剪貼板查看程序”,打開(kāi)“剪貼板查看程序”窗口。2.在“編輯”菜單上,單擊“刪除”命令。3.關(guān)閉“剪貼板查看程序”窗口。 為了與Microsoft Office程序提供的多重剪貼板相區(qū)分,上述所說(shuō)的剪貼板,常被我們稱(chēng)為系統(tǒng)剪貼板。如果你正在使用

41、Micros OftOffice程序,而且使用了其多重剪貼板功能,那么你應(yīng)清空“Office剪貼板”上的項(xiàng)目,方法是:在“Office剪貼板”任務(wù)窗格(OfficeXP)或工具欄 (Office2000)上,單擊“全部清空”或“清空剪貼板”。當(dāng)清空“Office剪貼板”時(shí),系統(tǒng)剪貼板也將同時(shí)被清空 二、打開(kāi)的程序太多 如果同時(shí)打開(kāi)的文檔過(guò)多或者運(yùn)行的程序過(guò)多,就沒(méi)有足夠的內(nèi)存運(yùn)行其他程序。這時(shí),對(duì)于多文檔界面(MDl)程序,如Word、Excel等,請(qǐng)關(guān)閉當(dāng)前文檔外的所有文檔,并退出當(dāng)前未使用的程序,然后或許你就能夠繼續(xù)執(zhí)行因“內(nèi)存不足”而被中斷的任務(wù)。 三、重新啟動(dòng)計(jì)算機(jī) 如果只退出程序,并

42、不重新啟動(dòng)計(jì)算機(jī),程序可能無(wú)法將內(nèi)存資源歸還給系統(tǒng)。請(qǐng)重新啟動(dòng)計(jì)算機(jī)以釋放系統(tǒng)資源,然后再次運(yùn)行程序或執(zhí)行被中斷的任務(wù)。 四、自動(dòng)運(yùn)行的程序太多如果在啟動(dòng)Windows時(shí)自動(dòng)運(yùn)行的程序太多,那么,即使重新啟動(dòng)計(jì)算機(jī),也沒(méi)足夠的內(nèi)存用來(lái)運(yùn)行其它程序。 (一)確定設(shè)置為自動(dòng)運(yùn)行的程序是否太多 1.單擊“開(kāi)始”,然后單擊“運(yùn)行”。 2.在“打開(kāi)”框中,鍵入“Msconfig”,單擊“確定”按鈕,打開(kāi)“系統(tǒng)配置實(shí)用程序”窗口。 3.單擊“常規(guī)”選項(xiàng)卡,選中“選擇性啟動(dòng)”復(fù)選鈕,清除“處理Win.ini文件”復(fù)選框和“加載啟動(dòng)組項(xiàng)目”復(fù)選框。 4.單擊“確定”按鈕,當(dāng)系統(tǒng)提示重新啟動(dòng)計(jì)算機(jī)時(shí),請(qǐng)單擊“是

43、”按鈕。重新啟動(dòng)電腦后,如果內(nèi)存不足的問(wèn)題已經(jīng)解決,你就可以將計(jì)算機(jī)配置為啟動(dòng)時(shí)不打開(kāi)任何程序。 (二)配置計(jì)算機(jī)不自動(dòng)打開(kāi)任何程序 1.恢復(fù)在Msconfig中所作的更改,方法是:在“系統(tǒng)配置實(shí)用程序”窗口,單擊“常規(guī)”選項(xiàng)卡,選擇“正常啟動(dòng)”,單擊“確定”按鈕,然后重新啟動(dòng)計(jì)算機(jī)。 2.刪除“啟動(dòng)”文件夾中的所有快捷方式 單擊“開(kāi)始”,指向“設(shè)置”,然后單擊“任務(wù)欄和開(kāi)始菜單”,系統(tǒng)彈出“任務(wù)欄屬性”對(duì)話框。 單擊“開(kāi)始菜單”選項(xiàng)卡,單擊“自定義”,再單擊“刪除”按鈕。 單擊“啟動(dòng)”文件夾旁的加號(hào),以顯示設(shè)置為自動(dòng)運(yùn)行的程序列表。如果“啟動(dòng)”文件夾旁沒(méi)有加號(hào)“+”,則表明沒(méi)有設(shè)置為自動(dòng)運(yùn)行

44、的程序,請(qǐng)單擊“關(guān)閉”按鈕以終止此過(guò)程。 單擊“啟動(dòng)”文件夾中的每個(gè)快捷方式,然后單擊“刪除”按鈕。此操作將從“開(kāi)始”菜單中刪除快捷方式,但并不從硬盤(pán)中刪除相應(yīng)的程序。對(duì)于“啟動(dòng)”文件夾中的每個(gè)快捷方式,重復(fù)該步驟。 單擊“關(guān)閉”按鈕。 單擊“確定”按鈕。 3.禁用從Win.ini文件加載的所有程序 如上所述打開(kāi)“系統(tǒng)配置實(shí)用程序”窗口。 單擊“Win.ini”選項(xiàng)卡,雙擊“windows”,然后清除“Load=”和“Run=”復(fù)選框。 單擊“確定”按鈕,當(dāng)系統(tǒng)提示重新啟動(dòng)計(jì)算機(jī)時(shí),請(qǐng)單擊“是”按鈕。 五、讓W(xué)indows管理虛擬內(nèi)存設(shè)置 如果沒(méi)有設(shè)置讓W(xué)indows管理虛擬內(nèi)存或者禁用虛擬內(nèi)

45、存,那么計(jì)算機(jī)可能無(wú)法正常工作,也可能收到“內(nèi)存不足”的消息,或在運(yùn)行某程序時(shí)出現(xiàn)相同的錯(cuò)誤消息。 1.單擊“開(kāi)始”,單擊“設(shè)置”,單擊“控制面板”,然后雙擊“系統(tǒng)”。 2.在“系統(tǒng)屬性”對(duì)話框中,單擊“性能”選項(xiàng)卡,然后單擊“虛擬內(nèi)存”按鈕。 3.選中“讓W(xué)indows管理虛擬內(nèi)存設(shè)置(推薦)”選項(xiàng),將計(jì)算機(jī)中可作為虛擬內(nèi)存使用的硬盤(pán)空間量設(shè)置為默認(rèn)值。此時(shí),虛擬內(nèi)存分頁(yè)“win386.swp”能夠根據(jù)實(shí)際內(nèi)存的使用情況動(dòng)態(tài)縮小和放大,最小容量為0,最大容量為硬盤(pán)的全部可用空間。 4.單擊“確定”按鈕。 六、增加可用磁盤(pán)空間 由于Windows以虛擬內(nèi)存分頁(yè)文件的格式使用硬盤(pán)空間以模擬RAM

46、(),所以,盡管已設(shè)置為讓W(xué)indows管理虛擬內(nèi)存,但是當(dāng)虛擬內(nèi)存分頁(yè)文件所在的驅(qū)動(dòng)器(默認(rèn)為Windows系統(tǒng)所在的硬盤(pán)分區(qū))沒(méi)有足夠的空間時(shí),仍會(huì)出現(xiàn)“內(nèi)存不足”的錯(cuò)誤。此時(shí),請(qǐng)執(zhí)行以下一項(xiàng)或多項(xiàng)操作,增加Windows虛擬內(nèi)存分頁(yè)文件所在驅(qū)動(dòng)器上的可用空間: 1.清空回收站,方法是:在桌面上,右鍵單擊“回收站”,再單擊“清空回收站”。 2.從磁盤(pán)中刪除臨時(shí)文件,方法是:打開(kāi)“Windows資源管理器”或“我的電腦”窗口,右鍵單擊要釋放其空間的磁盤(pán),然后單擊“屬性”,在“常規(guī)”選項(xiàng)卡上,單擊“磁盤(pán)清理”按鈕,選中要?jiǎng)h除的不需要的文件前的復(fù)選框,可以閱讀列表下面區(qū)域中每個(gè)文件類(lèi)型的說(shuō)明,單

47、擊“確定”按鈕。 3.從磁盤(pán)中刪除過(guò)期的文件或已存檔的文件。 4.刪除從未使用過(guò)的所有文件。 七、程序文件被毀壞 如果僅僅是使用某個(gè)程序時(shí),系統(tǒng)提示內(nèi)存不足,而其他程序可以正常運(yùn)行,那么可能的原因是該程序文件被毀壞,從而導(dǎo)致內(nèi)存問(wèn)題。然而Windows并沒(méi)有確切地提示表明該程序已損壞,所以請(qǐng)嘗試刪除并重新安裝該程序,然后重新運(yùn)行該程序。如果系統(tǒng)不再提示內(nèi)存不足,那么說(shuō)明原程序文件確實(shí)被損壞。 八、使用內(nèi)存優(yōu)化軟件 內(nèi)存優(yōu)化軟件有很多,比如RAM Idle和Memo Kit就是比較出色的兩個(gè)。這些軟件都可以設(shè)置自動(dòng)清空剪貼板、釋放被關(guān)閉程序未釋放的內(nèi)存、對(duì)Win386.swp文件進(jìn)行重新組織等,

48、從而免除你手工操作的麻煩,達(dá)到自動(dòng)釋放內(nèi)存的目的,不妨一試! 九、查殺病毒 系統(tǒng)感染電腦病毒也是導(dǎo)致內(nèi)存不足的罪魁禍?zhǔn)?,?dāng)系統(tǒng)出現(xiàn)“內(nèi)存不足”的錯(cuò)誤時(shí),請(qǐng)使用最新的防毒軟件查殺病毒,或者在清除電腦病毒之一、剪貼板占用了太多的內(nèi)存 實(shí)際上,剪貼板是內(nèi)存中的一塊臨時(shí)區(qū)域,當(dāng)你在程序中使用了“復(fù)制”或“剪切”命令后, Windows將把復(fù)制或剪切的內(nèi)容及其格式等信息暫時(shí)存儲(chǔ)在剪貼板上,以供“粘貼”使用。如果當(dāng)前剪貼板中存放的是一幅圖畫(huà),則剪貼板就占用了不少的內(nèi)存。這時(shí),請(qǐng)按下述步驟清除剪貼板中的內(nèi)容,釋放其占用的內(nèi)存資源: 1.單擊“開(kāi)始”,指向“程序”或“所有程序”,指向“附件”,指向“系統(tǒng)工具”

49、,然后單擊“剪貼板查看程序”,打開(kāi)“剪貼板查看程序”窗口。2.在“編輯”菜單上,單擊“刪除”命令。3.關(guān)閉“剪貼板查看程序”窗口。 為了與Microsoft Office程序提供的多重剪貼板相區(qū)分,上述所說(shuō)的剪貼板,常被我們稱(chēng)為系統(tǒng)剪貼板。如果你正在使用Micros OftOffice程序,而且使用了其多重剪貼板功能,那么你應(yīng)清空“Office剪貼板”上的項(xiàng)目,方法是:在“Office剪貼板”任務(wù)窗格(OfficeXP)或工具欄 (Office2000)上,單擊“全部清空”或“清空剪貼板”。當(dāng)清空“Office剪貼板”時(shí),系統(tǒng)剪貼板也將同時(shí)被清空 二、打開(kāi)的程序太多 如果同時(shí)打開(kāi)的文檔過(guò)多或者

50、運(yùn)行的程序過(guò)多,就沒(méi)有足夠的內(nèi)存運(yùn)行其他程序。這時(shí),對(duì)于多文檔界面(MDl)程序,如Word、Excel等,請(qǐng)關(guān)閉當(dāng)前文檔外的所有文檔,并退出當(dāng)前未使用的程序,然后或許你就能夠繼續(xù)執(zhí)行因“內(nèi)存不足”而被中斷的任務(wù)。 三、重新啟動(dòng)計(jì)算機(jī) 如果只退出程序,并不重新啟動(dòng)計(jì)算機(jī),程序可能無(wú)法將內(nèi)存資源歸還給系統(tǒng)。請(qǐng)重新啟動(dòng)計(jì)算機(jī)以釋放系統(tǒng)資源,然后再次運(yùn)行程序或執(zhí)行被中斷的任務(wù)。 四、自動(dòng)運(yùn)行的程序太多 如果在啟動(dòng)Windows時(shí)自動(dòng)運(yùn)行的程序太多,那么,即使重新啟動(dòng)計(jì)算機(jī),也沒(méi)足夠的內(nèi)存用來(lái)運(yùn)行其它程序。 (一)確定設(shè)置為自動(dòng)運(yùn)行的程序是否太多 1.單擊“開(kāi)始”,然后單擊“運(yùn)行”。 2.在“打開(kāi)”框中,鍵入“Msconfig”,單擊“確定”按鈕,打開(kāi)“系統(tǒng)配置實(shí)用程序”窗口。 3.單擊“常規(guī)”選項(xiàng)卡,選中“選擇性啟動(dòng)”復(fù)選鈕,清除“處理Win.ini文件”復(fù)選框和“加載啟動(dòng)組項(xiàng)目”復(fù)選框。 4.單擊“確定”按鈕,當(dāng)系統(tǒng)提示重新啟動(dòng)計(jì)算機(jī)時(shí),請(qǐng)單擊“是”

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論