版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗二存儲管理2.1背景知識耗盡內(nèi)存是Windows2000/XP系統(tǒng)中最常見的問題之一。當系統(tǒng)耗盡內(nèi)存時,所有進程對內(nèi)存的總需求超出了系統(tǒng)的物理內(nèi)存總量。隨后,Windows2000/XP必須借助它的虛擬內(nèi)存來維持系統(tǒng)和進程的運行。虛擬內(nèi)存機制是Windows2000/XP操作系統(tǒng)的重要組成部分,但它的速度比物理內(nèi)存慢得多,因此,應(yīng)該盡量避免耗盡物理內(nèi)存資源,以免導(dǎo)致性能下降。解決內(nèi)存不足問題的一個有效的方法就是添加更多的內(nèi)存。但是,一旦提供了更多的內(nèi)存,Windows2000/XP很可以會立即“吞食”。而事實上,添加更多的內(nèi)存并非總是可行的,也可能只是推遲了實際問題的發(fā)生。因此,應(yīng)該相信,優(yōu)化所擁有的內(nèi)存是非常關(guān)鍵的。1、分頁過程當Windows2000/XP求助于硬盤以獲得虛擬內(nèi)存時,這個過程被稱為分頁(paging)。分頁就是將信息從主內(nèi)存移動到磁盤進行臨時存儲的過程。應(yīng)用程序?qū)⑽锢韮?nèi)存和虛擬內(nèi)存視為一個獨立的實體,甚至不知道Windows2000/XP使用了兩種內(nèi)存方案,而認為系統(tǒng)擁有比實際內(nèi)存更多的內(nèi)存。例如,系統(tǒng)的內(nèi)存數(shù)量可能只有16MB,但每一個應(yīng)用程序仍然認為有4GB內(nèi)存可供使用。使用分頁方案帶來了很多好處,不過這是有代價的。當進程需要已經(jīng)交換到硬盤上的代碼或數(shù)據(jù)時,系統(tǒng)要將數(shù)據(jù)送回物理內(nèi)存,并在必要時將其他信息傳輸?shù)接脖P上,而硬盤與物理內(nèi)存在性能上的差異極大。例如,硬盤的訪問時間通常大約為4-10毫秒,而物理內(nèi)存的訪問時間為60us,甚至更快。2、內(nèi)存共享應(yīng)用程序經(jīng)常需要彼此通信和共享信息。為了提供這種能力,Windows2000/XP必須允許訪問某些內(nèi)存空間而不危及它和其他應(yīng)用程序的安全性和完整性。從性能的角度來看,共享內(nèi)存的能力大大減少了應(yīng)用程序使用的內(nèi)存數(shù)量。運行一個應(yīng)用程序的多個副本時,每一個實例都可以使用相同的代碼和數(shù)據(jù),這意味著不必維護所加載應(yīng)用程序代碼的單獨副本并使用相同的內(nèi)存資源。無論正在運行多少個應(yīng)用程序?qū)嵗?,充分支持?yīng)用程序代碼所需求的內(nèi)存數(shù)量都相對保持不變。3、未分頁合并內(nèi)存與分頁合并內(nèi)存Windows2000/XP決定了系統(tǒng)內(nèi)存組件哪些可以以及哪些不可以交換到磁盤上。顯然,不應(yīng)該將某些代碼(例如內(nèi)核)交換出主內(nèi)存。因此,Windows2000/XP將系統(tǒng)使用的內(nèi)存進一步劃分為未分頁合并內(nèi)存和分頁合并內(nèi)存。分頁合并內(nèi)存是存儲遲早需要的可分頁代碼或數(shù)據(jù)的內(nèi)存部分。雖然可以將分頁合并內(nèi)存中的任何系統(tǒng)進程交換到磁盤上,但是它臨時存儲在主內(nèi)存的這一部分,以防系統(tǒng)立刻需要它。在將系統(tǒng)進程交換到磁盤上之前,Windows2000/XP會交換其他進程。未分頁合并內(nèi)存包含必須駐留在內(nèi)存中的占用代碼或數(shù)據(jù)。這種結(jié)構(gòu)類似于早期的MS-DOS程序使用的結(jié)構(gòu),在MS-DOS中,相對較小的終止并駐留程序(TerminateandStayResident,TSR)在啟動時加載到內(nèi)存中。這些程序在系統(tǒng)重新啟動或關(guān)閉之前一直駐留在內(nèi)存的特定部分中。例如,防病毒程序?qū)⒓虞d為TSR程序,以預(yù)防可能的病毒襲擊。未分頁合并內(nèi)存中包含的進程保留在主內(nèi)存中,并且不能交換到磁盤上。物理內(nèi)存的這個部分用于內(nèi)核模式操作(例如,驅(qū)動程序)和必須保留在主內(nèi)存中才能有效工作的其他進程。沒有主內(nèi)存的這個部分,內(nèi)核組件就將是可分頁的,系統(tǒng)本身就有變得不穩(wěn)定的危險。分配到未分頁內(nèi)存池的主內(nèi)存數(shù)量取決于服務(wù)器擁有的物理內(nèi)存數(shù)量以及進程對系統(tǒng)上的內(nèi)存地空間的需求。不過,Windows2000/XP將未分頁合并內(nèi)存限制為256MB(在WindowsNT4中的限制為128MB)。根據(jù)系統(tǒng)中的物理內(nèi)存數(shù)量,復(fù)雜的算法在啟動時動態(tài)確定Windows2000/XP系統(tǒng)上的未分頁合并內(nèi)存的最大數(shù)量。Windows2000/XP內(nèi)部的這一自我調(diào)節(jié)機制可以根據(jù)當前的內(nèi)存配置自動調(diào)整大小。例如,如果增加或減少系統(tǒng)中的內(nèi)存數(shù)量,那么Windows2000將自動調(diào)整未分頁合并內(nèi)存的大小,以反映這一更改。4、提高分頁性能只有一個物理硬盤驅(qū)動器的系統(tǒng)限制了優(yōu)化分頁性能的能力。驅(qū)動器必須處理系統(tǒng)和應(yīng)用程序的請求以及對分頁文件的訪問。雖然物理驅(qū)動器可能有多個分區(qū),但是將分頁文件分布到多個分區(qū)的分頁文件并不能提高硬盤驅(qū)動器的能力。只有當一個分區(qū)沒有足夠的空間來包含整個分頁文件時,才將分頁文件放在同一個硬盤的多個分區(qū)上。擁有多個物理驅(qū)動器的服務(wù)器可以使用多個分頁文件來提高分頁性能。關(guān)鍵是將分頁請求的負載分布到多個物理硬盤上。實際上,使用獨立物理驅(qū)動器上的分頁文件,系統(tǒng)可以同時處理多個分頁請求。各個物理驅(qū)動器可以同時訪問它自己的分頁文件并寫入信息,這將增加可以傳輸?shù)男畔⒘俊6鄠€分頁文件的最佳配置是將各個分頁文件放在擁有自己的控制器的獨立驅(qū)動器上。不過,由于額外的費用并且系統(tǒng)上的可用中斷很有限,因此對于大多數(shù)基于服務(wù)器的配置來說,這可能是不切實際的解決方案。分頁文件最重要的配置參數(shù)是大小。無論系統(tǒng)中有多少個分頁文件,如果它們的大小不合適,那么系統(tǒng)就可能遇到性能問題。如果初始值太小,那么系統(tǒng)可能必須擴大分頁文件,以補償額外的分頁活動。當系統(tǒng)臨時增加分頁文件時,它必須在處理分頁請求的同時創(chuàng)建新的空間。這時,系統(tǒng)將出現(xiàn)大量的頁面錯誤,甚至可能出現(xiàn)系統(tǒng)失效。當系統(tǒng)必須在進程的工作區(qū)外部(在物理內(nèi)存或分頁文件中的其他位置)查找信息時,就會出現(xiàn)頁面錯誤。當系統(tǒng)缺乏存儲資源(物理內(nèi)存及虛擬內(nèi)存)來滿足使用需求,從而遇到過多的分頁時,就會出現(xiàn)系統(tǒng)失效。系統(tǒng)將花更多的時間來分頁而不是執(zhí)行應(yīng)用程序。當系統(tǒng)失效時,Memory:Pages/see計數(shù)器將持續(xù)高于每秒100頁。系統(tǒng)失效嚴重降低了系統(tǒng)的性能。此外,動態(tài)擴展分頁文件將導(dǎo)致碎片化。分頁文件將散布在整個磁盤上而不是在啟動時的連續(xù)空間中創(chuàng)建,從而增加了系統(tǒng)的開銷,并導(dǎo)致系統(tǒng)性能降低。因此,應(yīng)該盡量避免系統(tǒng)增加分頁文件的大小。提示:1)WINDOWS中采用的虛擬存儲管理方案是請求頁式存儲管理,分頁文件就是我們原理課中所說的交換/對換文件,存放的內(nèi)容是暫時被交換到外存中的進程頁面。UNIX使用的是交換分區(qū),WINDOWS使用的是交換文件。2)在NTFS驅(qū)動器上,總是至少保留25%的空閑驅(qū)動器空間,以確??梢栽谶B續(xù)的空間中創(chuàng)建分頁文件。3)Windows2000使用內(nèi)存數(shù)量的1.5倍作為分頁文件的最小容量,這個最小容量的兩倍作為最大容量。它減少了系統(tǒng)因為錯誤配置的分頁文件而崩潰的可能性。系統(tǒng)在崩潰之后能夠?qū)?nèi)存轉(zhuǎn)儲寫入磁盤,所以系統(tǒng)分區(qū)必須有一個至少等于物理內(nèi)存數(shù)量加上1的分頁文件。5、Windows虛擬內(nèi)存Windows2000是32位的操作系統(tǒng),它使計算機CPU可以用32位地址對32位內(nèi)存塊進行操作。內(nèi)存中的每一個字節(jié)都可以用一個32位的指針來尋址。這樣,最大的存儲空間就是232字節(jié)或4000兆字節(jié)(4GB)。這樣,在Windows下運行的每一個應(yīng)用程序都認為能獨占可能的4GB大小的空間。而另一方面,實際上沒有幾臺機器的RAM能達到4GB,更不必說讓每個進程都獨享4GB內(nèi)存了。Windows在幕后將虛擬內(nèi)存(virtualmemory,VM)地址映射到了各進程的物理內(nèi)存地址上。而所謂物理內(nèi)存是指計算機的RAM和由Windows分配到用戶驅(qū)動器根目錄上的換頁文件。物理內(nèi)存完全由系統(tǒng)管理。在Windows2000環(huán)境下,4GB的虛擬地址空間被劃分成兩個部分:低端2GB提供給進程使用,高端2GB提供給系統(tǒng)使用。這意味著用戶的應(yīng)用程序代碼,包括DLL以及進程使用的各種數(shù)據(jù)等,都裝在用戶進程地址空間內(nèi)(低端2GB)。用戶進程的虛擬地址空間也被分成三部分:1)虛擬內(nèi)存的已調(diào)配區(qū)(committed):具有備用的物理內(nèi)存,根據(jù)該區(qū)域設(shè)定的訪問權(quán)限,用戶可以進行寫、讀或在其中執(zhí)行程序等操作。2)虛擬內(nèi)存的保留區(qū)(reserved):沒有備用的物理內(nèi)存,但有一定的訪問權(quán)限。3)虛擬內(nèi)存的自由區(qū)(free):不限定其用途,有相應(yīng)的PAGE_NOACCESS權(quán)限。與虛擬內(nèi)存區(qū)相關(guān)的訪問權(quán)限告知系統(tǒng)進程可在內(nèi)存中進行何種類型的操作。例如,用戶不能在只有PAGE_READONLY權(quán)限的區(qū)域上進行寫操作或執(zhí)行程序;也不能在只有PAGE_EXECUTE權(quán)限的區(qū)域里進行讀、寫操作。而具有PAGE_NOACCESS權(quán)限的特殊區(qū)域,則意味著不允許進程對其地址進行任何操作。在進程裝入之前,整個虛擬內(nèi)存的地址空間都被設(shè)置為只有PAGE_NOACCESS權(quán)限的自由區(qū)域。當系統(tǒng)裝入進程代碼和數(shù)據(jù)后,才將內(nèi)存地址的空間標記為已調(diào)配區(qū)或保留區(qū),并將諸如EXECUTE、READWRITE和READONLY的權(quán)限與這些區(qū)域相關(guān)聯(lián)。程序清單2-1還顯示了如何理解VirtualQueryEX()API填充的MEMORY_BASIC_INFORMATION結(jié)構(gòu),如表2-l所示。此數(shù)據(jù)描述了進程虛擬內(nèi)存空間中一組虛擬內(nèi)存頁面的當前狀態(tài)。其中State項表明這些區(qū)域是否為自由區(qū)、已調(diào)配區(qū)或保留區(qū);Protect項則包含了Windows系統(tǒng)為這些區(qū)域添加了何種訪問保護;Type項則表明這些區(qū)域是可執(zhí)行圖像、內(nèi)存映射文件還是簡單的私有內(nèi)存。VirtualQueryEX()API能讓用戶在指定的進程中,對虛擬內(nèi)存地址的大小和屬性進行檢測。
表2-1MEMORY_BASIC_INFORMATION結(jié)構(gòu)的成員成員名稱目的PVOIDBaseAddress虛擬內(nèi)存區(qū)域開始處的指針PVOIDAllocationBase如果這個特定的區(qū)域為子分配區(qū)的話,則為虛擬內(nèi)存外面區(qū)域的指針;否則此值與BaseAddress相同DWORDAllocationProtect虛擬內(nèi)存最初分配區(qū)域的保護屬性。其可能值包括:PAGE_NOACCESS,PAGE_READONLY,PAGE_READWRITE和PAGE_EXECUTE_READDWORDRegionSize虛擬內(nèi)存區(qū)域的字節(jié)數(shù)DWORD區(qū)域的當前分配狀態(tài)。其可能值為MEM_COMMIT,MEM_FREE和MEM_RESERVEDWORDProtect虛擬內(nèi)存當前區(qū)域的保護屬性。可能值與AllocationProtect成員的相同DWORDType虛擬內(nèi)存區(qū)域中出現(xiàn)的頁面類型??赡苤禐镸EM_IMAGE,MEM_MAPPED和MEM_PRIVATEWindows還提供了一整套能使用戶精確控制應(yīng)用程序的虛擬地址空間的虛擬內(nèi)存API。一些用于虛擬內(nèi)存操作及檢測的API見表4-2所示。提供虛擬內(nèi)存分配功能的是VirtualAlloc()API。該API支持用戶向系統(tǒng)要求新的虛擬內(nèi)存或改變已分配內(nèi)存的當前狀態(tài)。用戶若想通過VirtualAlloc()函數(shù)使用虛擬內(nèi)存,可以采用兩種方式通知系統(tǒng):1)簡單地將內(nèi)存內(nèi)容保存在地址空間內(nèi);2)請求系統(tǒng)返回帶有物理存儲區(qū)(RAM的空間或換頁文件)的部分地址空間。用戶可以用flAllocationType參數(shù)(commit和reserve)來定義這些方式,用戶可以通知Windows按只讀、讀寫、不可讀寫、執(zhí)行或特殊方式來處理新的虛擬內(nèi)存。與VirtualAlloc()函數(shù)對應(yīng)的是VirtualFree()函數(shù),其作用是釋放虛擬內(nèi)存中的已調(diào)配頁或保留頁。用戶可利用dwFreeType參數(shù)將已調(diào)配頁修改成保留頁屬性。VirtualProtect()是VirtualAlloc()的一個輔助函數(shù),利用它可以改變虛擬內(nèi)存區(qū)的保護規(guī)范。表2-2虛擬內(nèi)存的APIAPI名稱描述VirtualQueryEx()通過填充MEMORY_BASIC_INFORMATION結(jié)構(gòu)檢測進程內(nèi)虛擬內(nèi)存的區(qū)域VirtualAlloc()保留或調(diào)配進程的部分虛擬內(nèi)存,設(shè)置分配和保護標志VirtualFree()釋放或收回應(yīng)用程序使用的部分虛擬地址VirtualProtect()改變虛擬內(nèi)存區(qū)域保護規(guī)范VirtualLock()防止系統(tǒng)將虛擬內(nèi)存區(qū)域通過系統(tǒng)交換到頁面文件中VirtualUnlock()釋放虛擬內(nèi)存的鎖定區(qū)域,必要時,允許系統(tǒng)將其交換到頁面文件中2.2實驗?zāi)康?、通過對Windows2000“任務(wù)管理器”、“計算機管理”、“我的電腦”屬性、“系統(tǒng)信息”、“系統(tǒng)監(jiān)視器”等程序的應(yīng)用,學(xué)習(xí)如何察看和調(diào)整Windows的內(nèi)存性能,加深對操作系統(tǒng)存儲管理、虛擬存儲管理等理論知識的理解。2、了解Windows2000的內(nèi)存結(jié)構(gòu)和虛擬內(nèi)存的管理,理解進程的虛擬內(nèi)存空間和物理內(nèi)存的映射關(guān)系。2.3實驗內(nèi)容和步驟(1)觀察和調(diào)整Windows2000/XP的內(nèi)存性能。步驟1:閱讀“背景知識”,請回答:1)什么是“分頁過程”?當Windows2000/XP求助于硬盤以獲得虛擬內(nèi)存時,這個過程被稱為分頁(paging)。分頁就是將信息從主內(nèi)存移動到磁盤進行臨時存儲的過程。2)什么是“內(nèi)存共享”?Windows2000/XP必須允許訪問某些內(nèi)存空間而不危及它和其他應(yīng)用程序的安全性和完整性。3)什么是“未分頁合并內(nèi)存”和“分頁合并內(nèi)存”?Windows2000中,未分頁合并內(nèi)存的最大限制是多少?未分頁合并內(nèi)存包含必須駐留在內(nèi)存中的占用代碼或數(shù)據(jù)。分頁合并內(nèi)存是存儲遲早需要的可分頁代碼或數(shù)據(jù)的內(nèi)存部分。雖然可以將分頁合并內(nèi)存中的任何系統(tǒng)進程交換到磁盤上,但是它臨時存儲在主內(nèi)存的這一部分,以防系統(tǒng)立刻需要它。在將系統(tǒng)進程交換到磁盤上之前,Windows2000/XP會交換其他進程。Windows2000中,未分頁合并內(nèi)存的最大限制是多少?Windows2000/XP將未分頁合并內(nèi)存限制為256MB(在WindowsNT4中的限制為128MB)。4)Windows2000分頁文件默認設(shè)置的最小容量和最大容量是多少?Windows2000使用內(nèi)存數(shù)量的1.5倍作為分頁文件的最小容量,這個最小容量的兩倍作為最大容量。步驟2:登錄進入Windows2000Professional。步驟3:查看包含多個實例的應(yīng)用程序的內(nèi)存需求。1)啟動想要監(jiān)視的應(yīng)用程序,例如Word。2)右鍵單擊任務(wù)欄以啟動“任務(wù)管理器”。3)在“Windows任務(wù)管理器”對話框中選定“進程”選項卡。4)向下滾動在系統(tǒng)上運行的進程列表,查找想要監(jiān)視的應(yīng)用程序。請在表2-3中記錄:
表2-3實驗記錄映像名稱PIDCPUCPU時間內(nèi)存使用
WINWORD.EXE5160000:00:1022772k“內(nèi)存使用”列顯示了該應(yīng)用程序的一個實例正在使用的內(nèi)存數(shù)量。5)啟動應(yīng)用程序的另一個實例并觀察它的內(nèi)存需求。請描述使用第二個實例占用的內(nèi)存與使用第一個實例時的內(nèi)存對比情況:大致相同步驟4:未分頁合并內(nèi)存。估算未分頁合并內(nèi)存大小的最簡單方法是使用“任務(wù)管理器”。未分頁合并內(nèi)存的估計值顯示在“任務(wù)管理器”的“性能”選項卡的“核心內(nèi)存”部分。總數(shù)(K):433(MB)分頁數(shù):298 未分頁(K):135(MB)還可以使用“任務(wù)管理器”查看一個獨立進程正在使用的未分頁合并內(nèi)存數(shù)量和分頁合并內(nèi)存數(shù)量。操作步驟如下:1)單擊“Windows任務(wù)管理器”的“進程”選項卡,然后從“查看”菜單中選擇“選擇列”命令,顯示“進程”選項卡的可查看選項。2)在“選擇列”對話框中,選定“頁面緩沖池”選項和“非頁面緩沖池”選項旁邊的復(fù)選框,然后單擊“確定”按鈕。返回Windows2000“任務(wù)管理器”的“進程”選項卡時,將看到其中增加顯示了各個進程占用的分頁合并內(nèi)存數(shù)量和未分頁合并內(nèi)存數(shù)量。仍以剛才打開觀察的應(yīng)用程序(例如Word)為例,請在表2-4中記錄:
表2-4實驗記錄映像名稱PID內(nèi)存使用頁面緩沖池非頁面緩沖池
WINWORD.EXE29643748895142
從性能的角度來看,未分頁合并內(nèi)存越多,可以加載到這個空間的數(shù)據(jù)就越多。擁有的物理內(nèi)存越多,未分頁合并內(nèi)存就越多。但未分頁合并內(nèi)存被限制為256MB,因此添加超出這個限制的內(nèi)存對未分頁合并內(nèi)存沒有影響。步驟5:提高分頁性能。在Windows2000的安裝過程中,將使用連續(xù)的磁盤空間自動創(chuàng)建分頁文件(pagefile.sys)。用戶可以事先監(jiān)視變化的內(nèi)存需求并正確配置分頁文件,使得當系統(tǒng)必須借助于分頁時的性能達到最高。雖然分頁文件一般都放在系統(tǒng)分區(qū)的根目錄下面,但這并不總是該文件的最佳位置。要想從分頁獲得最佳性能,應(yīng)該首先檢查系統(tǒng)的磁盤子系統(tǒng)的配置,以了解它是否有多個物理硬盤驅(qū)動器。1)在“開始”菜單中單擊“設(shè)置”“控制面板”命令,雙擊“管理工具”圖標,再雙擊“計算機管理”圖標。2)在“計算機管理”窗口的左格選擇“磁盤管理”管理單元來查看系統(tǒng)的磁盤配置。如果系統(tǒng)只有一個硬盤,那么建議應(yīng)該盡可能為系統(tǒng)配置額外的驅(qū)動器。這是因為:Windows2000最多可以支持在多個驅(qū)動器上分布的16個獨立的分頁文件。為系統(tǒng)配置多個分頁文件可以實現(xiàn)對不同磁盤I/O請求的并行處理,這將大大提高I/O請求的分頁文件性能。請在表2-5中記錄:
表2-5實驗記錄卷布局類型文件系統(tǒng)容量狀態(tài)
C簡單基本NTFS30G良好D簡單基本
NTFS90G良好
E
簡單
基本NTFS90G
良好
F
簡單
基本NTFS88G
良好步驟6:計算分頁文件的大小。要想更改分頁文件的位置或大小配置參數(shù),可按以下步驟進行:1)右鍵單擊桌面上的“我的電腦”圖標并選定“屬性”。2)在“高級”選項卡上單擊“性能選項”按鈕。3)單擊對話框中的“虛擬內(nèi)存”區(qū)域中的“更改”按鈕。請記錄:所選驅(qū)動器(C:)的頁面文件大小:驅(qū)動器:C:可用空間:338550MB初始大小(MB):4096MB最大值(MB):8192MB所有驅(qū)動器頁面文件大小的總數(shù):允許的最小值:16MB推薦:3535MB當前已分配:4096MB4)要想將另一個分頁文件添加到現(xiàn)有配置,在“虛擬內(nèi)存”對話框中選定一個還沒有分頁文件的驅(qū)動器,然后指定分頁文件的初始值和最大值(以兆字節(jié)表示),單擊“設(shè)置”,然后單擊“確定”。5)要想更改現(xiàn)有分頁文件的最大值和最小值,可選定分頁文件所在的驅(qū)動器。然后指定分頁文件的初始值和最大值,單擊“設(shè)置”按鈕,然后單擊“確定”按鈕。6)在“性能選項”對話框中單擊“確定”按鈕。7)單擊“確定”按鈕以關(guān)閉“系統(tǒng)特性”對話框。步驟7:使用任務(wù)管理器??梢允褂谩叭蝿?wù)管理器”來簡單地檢查分頁文件是否配置了正確容量。這樣可以實時提供系統(tǒng)正在使用分頁文件的方式以及其他重要系統(tǒng)信息的準確描述。通過右鍵單擊任務(wù)欄運行“任務(wù)管理器”,選定“性能”選項卡查看實時的系統(tǒng)統(tǒng)計數(shù)據(jù)。與分頁文件大小最有關(guān)的信息位于“認可用量”區(qū)域。這一區(qū)域顯示了認可“峰值”是否達到或超過了認可“限制”,以及它是否超過了系統(tǒng)上的物理內(nèi)存數(shù)量。認可“峰值”是指系統(tǒng)迄今為止向進程分配的最大物理內(nèi)存和虛擬內(nèi)存數(shù)量。請記錄:物理內(nèi)存(K) 總數(shù):3998MB 可用數(shù):1215MB 系統(tǒng)緩存:1137MB(2)了解和檢測進程的虛擬內(nèi)存空間。步驟1:創(chuàng)建一個“Win32ConsolApplication”工程,然后拷貝清單4-1中的程序,編譯成可執(zhí)行文件。步驟2:在VC的工具欄單擊“ExecuteProgram”(執(zhí)行程序)按鈕,或者按Ctrl+F5鍵,或者在“命令提示符”窗口運行步驟1中生成的可執(zhí)行文件。范例:E:\課程\os課\os實驗\程序\os11\debug>os41(假設(shè)編譯生成的可執(zhí)行文件是os41.exe)步驟3:根據(jù)運行結(jié)果,回答下列問題虛擬內(nèi)存每頁容量為:4KB最小應(yīng)用地址:0x00010000最大應(yīng)用地址:0x7ffeffff當前可供應(yīng)用程序使用的內(nèi)存空間為:1.99GB當前計算機的實際內(nèi)存大小為:3.9GB理論上每個Windows應(yīng)用程序可以獨占的最大存儲空間是:3.9GB提示:可供應(yīng)用程序使用的內(nèi)存空間實際上已經(jīng)減去了開頭與結(jié)尾兩個64KB的保護區(qū)。虛擬內(nèi)存空間中的64KB保護區(qū)是防止編程錯誤的一種Windows方式。任何對內(nèi)存中這一區(qū)域的訪問(讀、寫、執(zhí)行)都將引發(fā)一個錯誤陷阱,從而導(dǎo)致錯誤并終止程序的執(zhí)行。按committed、reserved、free等三種虛擬地址空間分別記錄實驗數(shù)據(jù)。其中“描述”是指對該組數(shù)據(jù)的簡單描述,例如,對下列一組數(shù)據(jù):00010000–00012000 <8.00KB>Committed,READWRITE,Private可描述為:具有READWRITE權(quán)限的已調(diào)配私有內(nèi)存區(qū)。將系統(tǒng)當前的自由區(qū)(free)虛擬地址空間填入表2-6中。表2-6實驗記錄地址大小虛擬地址空間類型訪問權(quán)限描述
00010000-00a90000
10.5MBfree
NOACCESS
00aae000-00ab0000
8.00KBfree
NOACCESS
00ab1000-00ac0000
60.0KBfree
NOACCESS
00ac9000-00ad0000
28.0KBfree
NOACCESS
00c14000-00c20000
48KBfree
NOACCESS
00c21000-00c30000
60KBfree
NOACCESS
00c32000-00c40000
56KBfree
NOACCESS
00cb5000-00cc0000
44KBfree
NOACCESS
00cc1000-00cd0000
60KBfree
NOACCESS
00cd3000-00ce0000
52KBfree
NOACCESS
00cf1000-00d20000
188KBfree
NOACCESS
00da0000-00e80000
896KBfree
NOACCESS
01108000-01110000
32KBfree
NOACCESS
01291000-01330000
636KBfree
NOACCESS
01355000-01360000
44KBfree
NOACCESS
02ae1000-5f550000
1.44GBfree
NOACCESS
5f70f000-5f7100004.00KBfree
NOACCESS
5f7d9000-6a570000173MBfreeNOACCESS
6a689000-748e000
162MBfreeNOACCESS
74987000-74cf00003.41MBfreeNOACCESS
74d65000-74ec00001.35MBfreeNOACCESS
74f11000-74f2000060.0KBfreeNOACCESS
74f29000-74f30000
28.0KBfreeNOACCESS
74f4c0000-74f5000016.0KBfree
NOACCESS
75424000-759800005.35MBfreeNOACCESS
提示:詳細記錄實驗數(shù)據(jù)在實驗活動中是必要的,但想想是否可以簡化記錄的辦法?
將系統(tǒng)當前的已調(diào)配區(qū)(committed)虛擬地址空間填入表2-7中。
表2-7實驗記錄地址大小虛擬地址空間類型訪問權(quán)限描述
00a90000-00aa0000
64.0KBcommitted
READWRITE
Mapped
00aa0000-00aa1000
4.00KBcommitted
READWRITE
Private
00ab0000-00ab1000
4.00KBcommitted
READWRITE
Private
00ac0000-00ac9000
36.0KBcommitted
READONLY
Mapped
00b05000-00b08000
12.0KBcommitted
GUARD,READWRITE
Private
00b08000-00b10000
32.0KBcommitted
READWRITE
Private
00c09000-00c0b000
8KBcommitted
GUARD,READWRITE
Private
00c0b000-00c10000
20KBcommitted
READWRITE
Private
00c10000-00c14000
16KBcommitted
READONLY
Mapped
00c20000-00c21000
4.0KBcommitted
READONLY
Mapped
00c30000-00c32000
8.0KBcommitted
READWRITE
Private
00c40000-00cb5000
468KBcommitted
READONLY
Mapped
00cc0000-00cc1000
4.0KBcommitted
READWRITE
Private
00cd0000-00cd3000
12KBcommitted
READONLY
Mapped
00ce0000-00ce3000
4.0KBcommitted
READWRITEMapped
00cf0000-00cf1000
24KBcommitted
READWRITE
Private
00d20000-00d26000
128KBcommitted
READWRITE
Private
00e80000-00ea0000
12KBcommitted
READONLY
Mapped
00f80000-00f89000
1.50MBcommitted
READONLY
Mapped
01100000-01103000
4KBcommitted
READONLY
Image,Moudle:4_1.exe
01110000-0129100064KBcommitted
EXECUTE_WRITECOPY
Image
01330000-01331000
12KBcommitted
EXECUTE_READ
Image
01331000-01341000
4KBcommitted
READWRITE
Image
01341000-0134d000
16KBcommitted
READONLY
Image
0134/p>
476KBcommitted
READONLY
Mapped
將系統(tǒng)當前的保留區(qū)(reserved)虛擬地址空間填入表2-8中。
表2-8實驗記錄地址大小虛擬地址空間類型訪問權(quán)限描述
00aa1000-00aae000
52.0KBreserved
READONLYPrivate
00ad0000-00b05000
212KBreserved
READONLY
Private
00b10000-00c09000
996KBreserved
READONLY
Private
00ce3000-00cf0000
52KBreserved
READONLY
Private
00d26000-00da0000
488KBreserved
READONLY
Private
00ea0000-00f80000
896KBreserved
READONLY
Private
00f89000-01100000
1.46MBreserved
READONLY
Mapped
01103000-01108000
20KBreserved
READONLY
Mapped
013d7000-02760000
19.5MBreserved
READONLY
Mapped
75b21000-75b3000060.0KBreserved
READONLY
Image
75b9a000-75ba000024.0KBreserved
READONLY
Image
75c0f000-75c10000
4.0KBreserved
READONLY
Image
75c12000-75c20000
56KBreserved
READONLY
Image
75c21000-75c3000060.0KBreserved
READONLY
Image75c42000-75c50000
56.0KBreserved
READONLY
Image
7ecc5000-7edc0000
0.98MBreserved
READONLY
Mapped7ffe1000-7ffff0000
60.0KBreserved
READONLY
Private
2.4實驗結(jié)論簡單描述windows進程的虛擬內(nèi)存管理方案:虛擬地址是將邏輯地址映射到物理地址的一種手段,管理方案有:請求分頁、請求分段和請求段頁虛擬存儲管理。請求分頁:將進程的信息副本存放在輔助存儲器中,當它被調(diào)度投入運行時,并不把程序和數(shù)據(jù)全部裝入主存,僅裝入當前使用的頁面,進程在執(zhí)行過程中訪問到不在主存的頁時,再把所需的信息動態(tài)的裝入。請求分段:把作業(yè)的所有分段的副本都存放在輔助存儲器上,當作業(yè)被調(diào)度投入運行時,首先把當前需要的段裝入主存,在執(zhí)行過程中訪問到不在主存的段時再將其動態(tài)裝入。請求段頁式虛擬存儲管理:對段式存儲和頁式存儲的優(yōu)點結(jié)合。2.5程序清單清單2-5了解和檢測進程的虛擬內(nèi)存空間//工程vmwalker#include<windows.h>#include<iostream>#include<shlwapi.h>#include<iomanip>#pragmacomment(lib,"Shlwapi.lib")//以可讀方式對用戶顯示保護的輔助方法。//保護標記表示允許應(yīng)用程序?qū)?nèi)存進行訪問的類型//以及操作系統(tǒng)強制訪問的類型inlineboolTestSet(DWORDdwTarget,DWORDdwMask){return((dwTarget&dwMask)==dwMask);}#defineSHOWMASK(dwTarget,type)\if(TestSet(dwTarget,PAGE_##type))\{std::cout<<","<<#type;}voidShowProtection(DWORDdwTarget){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,NOACCESS);}//遍歷整個虛擬內(nèi)存并對用戶顯示其屬性的工作程序的方法voidWalkVM(HANDLEhProcess){//首先,獲得系統(tǒng)信息SYSTEM_INFOsi;::ZeroMemory(&si,sizeof(si));::GetSystemInfo(&si);//分配要存放信息的緩沖區(qū)MEMORY_BASIC_INFORMATIONmbi;::ZeroMemory(&mbi,sizeof(mbi));//循環(huán)整個應(yīng)用程序地址空間LPCVOIDpBlock=(LPVOID)si.lpMinimumApplicationAddress;while(pBlock<si.lpMaximumApplicationAddress){//獲得下一個虛擬內(nèi)存塊的信息if(::VirtualQueryEx(hProcess, //相關(guān)的進程pBlock,//開始位置 &mbi,//緩沖區(qū)sizeof(mbi))==sizeof(mbi)) //大小的確認{//計算塊的結(jié)尾及其大小LPCVOIDpEnd=(PBYTE)pBlock+mbi.RegionSize; TCHARszSize[MAX_PATH];::StrFormatByteSize(mbi.RegionSize,szSize,MAX_PATH);//顯示塊地址和大小std::cout.fill('0');std::cout<<std::hex<<std::setw(8)<<(DWORD)pBlock<<"-"<<std::hex<<std::setw(8)<<(DWORD)pEnd<<(::strlen(szSize)==7?"(":"(")<<szSize<<")";//顯示塊的狀態(tài)switch(mbi.State){caseMEM_COMMIT: std::cout<<"Committed"; break;caseMEM_FREE: std::cout<<"Free"; break;caseMEM_RESERVE: std::cout<<"Reserved"; break;}//顯示保護 if(mbi.Protect==0&&mbi.State!=MEM_FREE){mbi.Protect=PAGE_READONLY;} ShowProtection(mbi.Protect);//顯示類型switch(mbi.Type){caseMEM_IMAGE: std::cout<<",Image"; break; caseMEM_MAPPED: std::cout<<",Mapped"; break;caseMEM_PRIVATE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西省吉安市遂川縣2024年中考模擬數(shù)學(xué)試題附答案
- 部編小學(xué)語文-一年級下全冊教案
- 科學(xué)育種技術(shù)提升作物光合作用效率
- 園林景觀工程施工組織設(shè)計技術(shù)標
- 高一化學(xué)二專題化學(xué)科學(xué)與人類文明練習(xí)
- 2024屆北京海淀外國語高三(最后沖刺)化學(xué)試卷含解析
- 2024屆江蘇鹽城市時楊中學(xué)高考臨考沖刺化學(xué)試卷含解析
- 2024高中地理第2章區(qū)域生態(tài)環(huán)境建設(shè)第1節(jié)第2課時荒漠化的人為原因和防治學(xué)案新人教版必修3
- 2024高中物理第三章相互作用5力的分解課后作業(yè)含解析新人教版必修1
- 2024高中語文第7單元韓非子蚜第1課鄭人有且買履者練習(xí)含解析新人教版選修先秦諸子蚜
- 山東省臨沂市2023-2024學(xué)年高二上學(xué)期期末考試英語試題 含答案
- 關(guān)于加快建設(shè)區(qū)域產(chǎn)業(yè)科技創(chuàng)新中心和創(chuàng)新型城市建設(shè)的政策措施
- 三級口腔科醫(yī)院基本標準(2024年版)
- 第四章 圖形的平移與旋轉(zhuǎn) 綜合測試
- 實驗室安全教育課件
- 四川省食品生產(chǎn)企業(yè)食品安全員理論考試題庫(含答案)
- 2024年四川省成都市中考數(shù)學(xué)試卷(含解析)
- 【人民日報】72則金句期末評語模板-每頁4張
- 《中國潰瘍性結(jié)腸炎診治指南(2023年)》解讀
- DB-T29-74-2018天津市城市道路工程施工及驗收標準
- 小學(xué)一年級20以內(nèi)加減法混合運算3000題(已排版)
評論
0/150
提交評論