實驗三存儲管理_第1頁
實驗三存儲管理_第2頁
實驗三存儲管理_第3頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗名稱實驗三:存儲管理1WindowsServer2003內存結構2WindowsServer2003虛擬內存二、1實驗目的1)通過實驗了解windowsServer2003內存的使用,學習如何在應用程序中管理內存、體會Windows應用程序內存的簡單性和自我防護能力。2)了解windowsServer2003的內存結構和虛擬內存的管理,進而了解進程堆和windows為使用內存而提供的一些擴展功能。三、1實驗內容使用任務管理器終止進程顯示其他進程計數(shù)器更改正在運行的程序的優(yōu)先級四、1實驗步驟Windows提供了一個API即GetSystemInfo(),以便用戶能檢查系統(tǒng)中虛擬內存的一些特性

2、。程序5-1顯示了如何調用該函數(shù)以及顯示系統(tǒng)中當前內存的參數(shù)。步驟1:登錄進入WindowsServer2003。步驟2:在"開始"菜單中單擊"程序”-aMicrosoftVisualStudio6.0"-aMicrosoftVisualC+6.0”命令,進入VisualC+窗口。步驟3:在工具欄單擊“打開”按鈕,在“打開”對話框中找到并打開實驗源程序5-1.cpp。程序5-1:獲取有關系統(tǒng)的內存設置的信息步驟4:單擊“Build”菜單中的“Compile5-1.cpp”命令,并單擊“是”按鈕確認。系統(tǒng)對4-1.cpp進行編譯。步驟5:編譯完成后,單擊“

3、Build”菜單中的“Build5-1.exe”命令,建立5-1.exe可執(zhí)行文件。操作能否正常進行?如果不行,則可能的原因是什么?答:操作能正常進行。步驟6:在工具欄單擊"ExecuteProgram”(執(zhí)行程序)按鈕,執(zhí)行5-1.exe程序。運行結果(分行書寫。如果運行不成功,則可能的原因是什么?):1)虛擬內存每頁容量為:4.00KB2)最小應用地址:0x000100003)最大應用地址為:0x7ffeffff4)當前可供應用程序使用的內存空間為:3.92GB5)當前計算機的實際內存大小為:1.99GB閱讀和分析程序5-1,請回答問題:1)理論上每個windows應用程序可以獨

4、占的最大存儲空間是:4GB2)在程序5-1中,用于檢索系統(tǒng)中虛擬內存特性的API函數(shù)是:DWORD提示:可供應用程序使用的內存空間實際上已經減去了開頭與結尾兩個64KB的保護區(qū)。虛擬內存空間中的64KB保護區(qū)是防止編程錯誤的一種Windows方式。任何對內存中這一區(qū)域的訪問(讀、寫、執(zhí)行)都將引發(fā)一個錯誤陷井,從而導致錯誤并終止程序的執(zhí)行。也就是說,假如用戶有一個NULL指針(地址為0),但仍試圖在此之前很近的地址處使用另一個指針,這將因為試圖從更低的保留區(qū)域讀寫數(shù)據(jù),從而產生意外錯誤并終止程序的執(zhí)行。五、1實驗結論通過本次實驗我了解windowsServer2003內存的使用,同時學習了如何

5、在應用程序中管理內存。在實驗的過程中,體會到了Windows應用程序內存的簡單性和自我防護能力。對于Windowssever2003的內存結構有了一定的了解。二、2實驗目的1)通過實驗了解WindowsServer2003內存的使用,學習如何在應用程序中管理內存,體會Windows應用程序內存的簡單性和自我防護能力。2)學習檢查虛擬內存空間或對其進行操作。3)了解WindowsServer2003的內存結構和虛擬內存的管理,進而了解進程堆和Windows為使用內存而提供的一些擴展功能。1. 三、2實驗內容與實驗步驟虛擬內存的檢測清單5-2所示的程序使用VirtualQueryEX()函數(shù)來檢查

6、虛擬內存空間。步驟1:登錄進入WindowsServer2003。步驟2:在"開始"菜單中單擊"程序”-aMicrosoftVisualStudio6.0"-aMicrosoftVisualC+6.0”命令,進入VisualC+窗口。步驟3:在工具欄單擊“打開”按鈕,在“打開”對話框中找到并打開實驗源程序5-2.cpp。清單5-2檢測進程的虛擬地址空間清單5-2中顯示一個walkVM()函數(shù)開始于某個進程可訪問的最低端虛擬地址處,并在其中顯示各塊虛擬內存的特性。虛擬內存中的塊由VirsualQueryEX()API定義成連續(xù)快或具有相同狀態(tài)(自由區(qū),已調

7、配區(qū)等)的內存,并分配以一組統(tǒng)一的保護標志(只讀、可執(zhí)行等)。步驟4:單擊“Build”菜單中的“Compile5-2.cpp”命令,并單擊“是”按鈕確認。系統(tǒng)對5-2.cpp進行編譯。步驟5:編譯完成后,單擊“Build”菜單中的“Build5-2.exe”命令,建立5-2.exe可執(zhí)行文件。操作能否正常進行?如果不行,則可能的原因是什么?答:操作能正常運行。步驟6:在工具欄單擊"ExecuteProgram”(執(zhí)行程序)按鈕,執(zhí)行5-2.exe程序。1)分析運行結果(如果運行不成功,則可能的原因是什么)按committed,reserved,free等三種虛擬地址空間分別記錄實驗

8、數(shù)據(jù),其中"描述"是對該組數(shù)據(jù)的簡單描述,例如,對下列一組數(shù)據(jù):00010000-00012000<8.00KB>Committed,READWRITE,Private可描述為:具有READWRITE權限的已調配私有內存區(qū)。將系統(tǒng)當前的自由區(qū)(Free)虛擬地址空間填入表3-3中。表3-3實驗記錄地址大小虛擬空間類型訪問權限描述00012000-0002000056.0KBfreeNOACCESS沒有任何權限的已調配的共有內存區(qū)00021000-0003000060.0KBfreeNOACCESS沒有任何權限的已調配的共有內存區(qū)00135000-00140000

9、44.0KBfreeNOACCESS沒有任何權限的已調配的共有內存區(qū)00266000-0027000040.0KBfreeNOACCESS沒有任何權限的已調配的共有內存區(qū)002b100060.0KBfreeNOACCESS沒有任何權限的已-002C0000調配的共有內存區(qū)00301000-0031000060.0KBfreeNOACCESS沒有任何權限的已調配的共有內存區(qū)00316000-0032000040.0KBfreeNOACCESS沒有任何權限的已調配的共有內存區(qū)將系統(tǒng)當前的已調配區(qū)(Committed)虛擬地址空間填入表3-4匚表3-4實驗記錄地址大小虛擬空間類型訪問權限描述0001

10、0000-000120008.00KBCommittedPrivate只有具有READWRIT故限的已調配私有內存區(qū)00020000-000210004.00KBCommittedPrivate只有具有READWRIT故限的已調配私有內存區(qū)0012C000-0012d0004.00KBCommittedPrivate具有GUARD,READEWRITE權限的已調配私有內存區(qū)0012d000-0013000012.0KBCommittedPrivate只有具有READWRIT故限的已調配私有內存區(qū)00130000-0013500020.0KBCommittedMapped只有具有READONLY

11、限的已調配映射內存區(qū)00140000-0014700028.0KBCommittedPrivate只有具有READWRIT故限的已調配私有內存區(qū)00240000-0024300012.0KBCommittedMapped只有具有READWRIT故限的已調配映射內存區(qū)將系統(tǒng)當前的保留區(qū)(Reserved)虛擬地址空間填入表3-5中。表3-5實驗記錄地址大小虛擬空間類型訪問權限描述00030000-0012C0000.98MBReservedPrivate只有具有READONLY限的已調配私有內存區(qū)00147000-00240000996KBReservedPrivate只有具有READONLY限

12、的已調配私有內存區(qū)00243000-0025000052.0KBReservedMapped只有具有READONLY限的已調配映射內存區(qū)00373000-0038000052.0KBReservedPrivate只有具有READONLY限的已調配私有內存區(qū)00398000-003a000032.0KBReservedPrivate只有具有READONLY限的已調配私有內存區(qū)003c5000-003d000044.0KBReservedPrivate只有具有READONLY限的已調配私有內存區(qū)003d6000-003e000040.0KBReservedPrivate只有具有READONLY限的

13、已調配私有內存區(qū)2)從上述輸出結果,對照分析清單5-2的程序,請簡單描述程序運行的流程:答:該程序從主函數(shù)Main()出發(fā),調用voidWalkVM(HANDLEhProcess)函數(shù),voidWalkVM(HANDLEhProcess)函數(shù)獲得系統(tǒng)信息,分配應用程序內存地址空間。然后開始做循環(huán),從函數(shù)運行開始每次獲得下一個虛擬程序內存塊的信息,之后計算塊的結尾及大小,然后再顯示塊的大小與位置,狀態(tài),顯示保護方式(voidShowProtection(DWORDdwTarget),將文件名顯示出來,移動塊指針獲得下一塊,依次這樣循環(huán)下去,直至結束。2. 虛擬內存的分配與釋放能正確使用系統(tǒng)函數(shù)G

14、etMeoryStatus()和數(shù)據(jù)結構MEMORY_STATUSI系統(tǒng)內存和虛擬存儲空間使用情況,會使用VirsualAlloc()函數(shù)和VirsualFree()函數(shù)分配和釋放虛擬內存空間。步驟1:在VC6.0環(huán)境下選擇Win32ConsoleApplication建立一個控制臺工程文件,選擇AnapplicationthatSupportsMFC。步驟2:編輯并編譯完成后,單擊"Build"菜單中的"BuildGetMemoryStatus.exe”命令,建立GetMemoryStatus.exe可執(zhí)行文件。操作能否正常進行?如果不行,則可能的原因是什么?答

15、:操作能正常進行。步驟3:在工具欄單擊"ExecuteProgram”按鈕,執(zhí)行GetMemoryStatus.cpp.exe程分析程序GetMemoryStatus.cpp的運行結果1)請描述運行結果(如果運行不成功,則可能的原因是什么?):答:運行結果如下:CurrentMemoryStatusis:TotalPhysicalMemoryis2047MBAvailablePhysicalMemoryis2047MBTotalPageFileis4095MBAvailablePageFileis4095MBTotalVirtualMemoryis2047MBAvailableVir

16、sualmemoryis2031MBMemoryLoadis22%NowAllocate32MVirsualMemoryand2MPhysicalMemoryCurrentMemoryStatusis:TotalPhysicalMemoryis2047MBAvailablePhysicalMemoryis2047MBTotalPageFileis4095MBAvailablePageFileis4095MBTotalVirtualMemoryis2047MBAvailableVirsualmemoryis1997MBMemoryLoadis22%NowRelease32MVirsualMemo

17、ryand2MPhysicalMemoryCurrentMemoryStatusis:TotalPhysicalMemoryis2047MBAvailablePhysicalMemoryis2047MBTotalPageFileis4095MBAvailablePageFileis4095MBTotalVirtualMemoryis2047MBAvailableVirsualmemoryis2031MBMemoryLoadis22%Pressanykeytocontinue2) 根據(jù)運行輸出結果,若要改變分配和回收的虛擬內存和物理內存的大小,要改變程序代碼的語句,分別為:答:要改變的分配虛擬內

18、存的程序代碼語句為:if(BaseAddr=NULL)printf("VirsualAllocateFail.n");str=(char*)malloc(1024*1024*2);GetMemSta();要改變的回收虛擬內存的程序代碼語句為:if(:VirtualFree(BaseAddr,0,MEM_RELEASE)=0)printf("ReleaseAllocateFail.n");free(str);3) 根據(jù)運行輸出結果,對照分析5-2程序,可以看出程序運行的流程嗎?請簡單描述:答:程序開始運行,分配虛擬內存為32M,物理內存為2M,后進行虛擬內

19、存釋放,釋放了32M虛擬內存,2M物理內存。ca*C:Progra®Fileslicroso£tVisualStudioiyProjectsvindBebugviiid.exeCurrentMemoryStatusis:TotalPhysicalMenoryis2047MBAvailablePhysicalMenoryis2047MBTotalPageFileis4095MBAvailablePageFileis4095MBTotalUirtualMemoryis204?MBAvailableUirsualnenoryis2031MBMemoryLoadis22ZNowAl

20、locate32MUirsualMenoryand2MPhysicalMemoryCurrentMemoryStatusis:TotalPhysicalMenoryis2047MBAvailablePhysicalMenoryis2047MBTotalPageFileis4095MBAvailablePageFileis4095MBTotalUirtualMemoryis2047MDAvailableUirsualnenoryis1997MBMemoryLoadis22ZNowRelease32MUirsualMenoryand2MPhysicalMemoryCurrentMemoryStat

21、usis:TotalPhysicalMenoryis2047MBAvailablePhysicalMenoryis2047MBTotalPageFileis4095MBAvailablePageFileis4095MBTotalUirtualMemoryis204?MBAvailableUirsualnenoryis2031MBMemoryLoadis22ZPressanykeytocontinue四、2實驗結論通過本次實驗了解windowsServer2003的內存結構和虛擬內存的管理,較為活楚的理解了在windowssever2003中虛擬內存的檢測以及其內存分配和內存釋放的運行過程。進而

22、了解進程堆和windows為使用內存而提供的一些擴展功能。在程序運行的過程中,首先會檢測到需要使用的虛擬內存,其次通過調用函數(shù)去分配當前部分所需要的虛擬內存大小,之后進行虛擬內存的分配,最后,運行結束,釋放虛擬內存。在這整個過程中,能夠節(jié)約內存的使用,增加了處理事務的效率。附錄:5-2.cpp運行結果00010000-00012000(8.00KB)Committed,READWRITE,Private00012000-00020000(56.0KB)Free,NOACCESS00020000-00021000(4.00KB)Committed,READWRITE,Private0002100

23、0-00030000(60.0KB)Free,NOACCESS00030000-0012c000(0.98MB)Reserved,READONLY,Private0012c000-0012d000(4.00KB)Committed,GUARD,READWRITE,Private001212.0KB)Committed,READWRITE,Private00130000-00135000(20.0KB)Committed,READONLY,Mapped00135000-00140000(44.0KB)Free,NOACCESS00140000-00147000(28.

24、0KB)Committed,READWRITE,Private00147000-00240000(996KB)Reserved,READONLY,Private00240000-00243000(12.0KB)Committed,READWRITE,Mapped00243000-00250000(52.0KB)Reserved,READONLY,Mapped00250000-00266000(88.0KB)Committed,READONLY,Mapped00266000-00270000(40.0KB)Free,NOACCESS00270000-002b1000(260KB)Committe

25、d,READONLY,Mapped002b1000-002c0000(60.0KB)Free,NOACCESS002260KB)Committed,READONLY,Mapped00301000-00310000(60.0KB)Free,NOACCESS00316000-00320000(40.0KB)Free,NOACCESS00320000-00361000(260KB)Committed,READONLY,Mapped00361000-00370000(60.0KB)Free,NOACCESS00370000-00373000(12.0KB)Committe

26、d,READWRITE,Private00373000-00380000(52.0KB)Reserved,READONLY,Private00380000-00383000(12.0KB)Committed,READONLY,Mapped00383000-00390000(52.0KB)Free,NOACCESS00390000-00398000(32.0KB)Committed,READWRITE,Private00398000-003a0000(32.0KB)Reserved,READONLY,Private003a0000-003a1000(4.00KB)Committed,READWR

27、ITE,Private003a1000-003b0000(60.0KB)Free,NOACCESS003b0000-003b1000(4.00KB)Committed,READWRITE,Private003b1000-003c0000(60.0KB)Free,NOACCESS003c0000-003c5000(20.0KB)Committed,READWRITE,Private003c5000-003d0000(44.0KB)Reserved,READONLY,Private003d0000-003d6000(24.0KB)Committed,READWRITE,Private003d600

28、0-003e0000(40.0KB)Reserved,READONLY,Private003128KB)Free,NOACCESS00400000-00401000(4.00KB)Committed,READONLYImage,Module:5-2.exe00401000-0046d000(432KB)Committed,EXECUTE_READ,Image004632.0KB)Committed,READONLY,Image00475000-0047c000(28.0KB)Committed,READWRITE,Image0047c0

29、00-00480000(16.0KB)Committed,READONLY,Image00480000-00487000(28.0KB)Committed,EXECUTE_READ,Mapped00487000-00540000(740KB)Reserved,READONLY,Mapped00540000-00542000(8.00KB)Committed,EXECUTE_READ,Mapped00542000-00548000(24.0KB)Reserved,READONLY,Mapped00548000-00550000(32.0KB)Free,NOACCESS00550000-00653

30、000(1.01MB)Committed,READONLY,Mapped00653000-00660000(52.0KB)Free,NOACCESS00660000-006e1000(516KB)Committed,EXECUTE_READ,Mapped006e1000-00960000(2.49MB)Reserved,READONLY,Mapped00960000-00968000(32.0KB)Committed,READWRITE,Private00968000-00a60000(992KB)Reserved,READONLY,Private00a60000-74ae0000(1.81G

31、B)Free,NOACCESS74ae0000-74ae1000(4.00KB)Committed,READONLYImage,Module:USP10.dll74ae1000-74b25000(272KB)Committed,EXECUTE_READ,Image74b25000-74b28000(12.0KB)Committed,WRITECOPY,Image74b28000-74b2a000(8.00KB)Committed,READWRITE,Image74b2a000-74b2e000(16.0KB)Committed,WRITECOPY,Image74b2e000-74b2f000(

32、4.00KB)Committed,READWRITE,Image74b2f000-74b45000(88.0KB)Committed,READONLY,Image74b45000-76180000(22.2MB)Free,NOACCESS76180000-76181000(4.00KB)Committed,READONLYImage,Module:IMM32.DLL76181000-76196000(84.0KB)Committed,EXECUTE_READ,Image76196000-76197000(4.00KB)Committed,READWRITE,Image76197000-7619

33、d000(24.0KB)Committed,READONLY,Image7619d000-76eb0000(13.0MB)Free,NOACCESS76eb0000-76eb1000(4.00KB)Committed,READONLYImage,Module:Secur32.dll76eb1000-76ec0000(60.0KB)Committed,EXECUTE_READ,Image76ec0000-76ec1000(4.00KB)Committed,READWRITE,Image76ec1000-76ec3000(8.00KB)Committed,READONLY,Image76ec300

34、0-77b70000(12.6MB)Free,NOACCESS77b70000-77b71000(4.00KB)Committed,READONLYImage,Module:msvcrt.dll77b71000-77bbf000(312KB)Committed,EXECUTE_READ,Image77bbf000-77bc1000(8.00KB)Committed,WRITECOPY,Image77bc1000-77bc2000(4.00KB)Committed,READWRITE,Image77bc2000-77bc3000(4.00KB)Committed,WRITECOPY,Image7

35、7bc3000-77bc6000(12.0KB)Committed,READWRITE,Image77bc6000-77bca000(16.0KB)Committed,READONLY,Image77bca000-77bd0000(24.0KB)Free,NOACCESS77bd0000-77bd1000(4.00KB)Committed,READONLYImage,Module:GDI32.dll77bd1000-77c14000(268KB)Committed,EXECUTE_READ,Image77c14000-77c16000(8.00KB)Committed,READWRITE,Im

36、age77c16000-77c19000(12.0KB)Committed,READONLY,Image77c19000-77c20000(28.0KB)Free,NOACCESS77c20000-77c21000(4.00KB)Committed,READONLYImage,Module:RPCRT4.dll77c21000-77cba000(612KB)Committed,EXECUTE_READ,Image77cba000-77cbb000(4.00KB)Committed,READWRITE,Image77cbb000-77cc1000(24.0KB)Committed,READONL

37、Y,Image77cc1000-77e10000(1.30MB)Free,NOACCESS77e10000-77e11000(4.00KB)Committed,READONLYImage,Module:USER32.dll77e11000-77e71000(384KB)Committed,EXECUTE_READ,Image77e71000-77e72000(4.00KB)Committed,READWRITE,Image77e72000-77e73000(4.00KB)Committed,WRITECOPY,Image77e73000-77ea0000(180KB)Committed,REA

38、DONLY,Image77ea0000-77eb0000(64.0KB)Free,NOACCESS77eb0000-77eb1000(4.00KB)Committed,READONLYImage,Module:SHLWAPI.dll77eb1000-77efb000(296KB)Committed,EXECUTE_READ,Image77efb000-77efc000(4.00KB)Committed,READWRITE,Image77efc000-77efd000(4.00KB)Committed,WRITECOPY,Image77efd000-77f02000(20.0KB)Committ

39、ed,READONLY,Image77f02000-77f30000(184KB)Free,NOACCESS77f30000-77f31000(4.00KB)Committed,READONLYImage,Module:ADVAPI32.dll77f31000-77fa1000(448KB)Committed,EXECUTE_READ,Image77fa1000-77fa3000(8.00KB)Committed,READWRITE,Image77fa3000-77fa5000(8.00KB)Committed,WRITECOPY,Image77fa5000-77fdc000(220KB)Committed,READONLY,Image77fdc000-7c800000(72.1MB)Free,NOACCESS7c800000-7c801000(4.00KB)Committed,READONLYImage,Module:kernel32.dll7c801000-7c88b000(552KB)Committed,EXECUTE_READ,Image7c88b000-7c88

溫馨提示

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

評論

0/150

提交評論