版權(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)一 WINDOWS 進(jìn)程初識(shí) 3. 1 、實(shí)驗(yàn)?zāi)康?3. 2 、實(shí)驗(yàn)內(nèi)容和步驟 3. 3 、實(shí)驗(yàn)結(jié)論 5. 4 、程序清單 5. 實(shí)驗(yàn)二 進(jìn)程管理 6. 背景知識(shí) 6. 1 、實(shí)驗(yàn)?zāi)康?1.2 2、實(shí)驗(yàn)內(nèi)容和步驟 1. 2 3 、實(shí)驗(yàn)結(jié)論 1.7 4、程序清單 錯(cuò)誤 ! 未定義書(shū)簽。 實(shí)驗(yàn)三 進(jìn)程同步的經(jīng)典算法 17 背景知識(shí) 1.8 1 、實(shí)驗(yàn)?zāi)康?2.0 2、實(shí)驗(yàn)內(nèi)容和步驟 2. 0 3 、實(shí)驗(yàn)結(jié)論 2.3 4、程序清單 錯(cuò)誤 ! 未定義書(shū)簽。 實(shí)驗(yàn)四 存儲(chǔ)管理 2. 4 背景知識(shí) 2.4 1 、實(shí)驗(yàn)?zāi)康?3.2 2、實(shí)驗(yàn)內(nèi)容和步驟 3. 2 3 、實(shí)驗(yàn)結(jié)論 4 、程序清單 實(shí)驗(yàn)
2、五 文件和設(shè)備管理 4.9 .錯(cuò)誤!未定義書(shū)簽。 5. 0 背景知識(shí) 5.0 2、實(shí)驗(yàn)內(nèi)容與步驟 錯(cuò)誤!未定義書(shū)簽 3、實(shí)驗(yàn)結(jié)論 錯(cuò)誤!未定義書(shū)簽 1 、實(shí)驗(yàn)?zāi)康?5.4 實(shí)驗(yàn)一 WINDOWS進(jìn)程初識(shí) 1、實(shí)驗(yàn)?zāi)康?(1) 學(xué)會(huì)制使用應(yīng)VVC程序?qū)懟镜?Win32 Consol Application (2) 掌握WINDOWS AP勺使用方法。 (3) 編寫(xiě)測(cè)試程序,理解用戶態(tài)運(yùn)行和核心態(tài)運(yùn)行。 2、實(shí)驗(yàn)內(nèi)容和步驟 (1)編寫(xiě)基本的 Win32 Consol Application 步驟1 :登錄進(jìn)入 Windows,啟動(dòng) VC+ 6.0。 步驟2:在“FILE”菜單中單擊“NEW子菜單
3、,在“projects ” 選項(xiàng)卡 中選擇 “ Win32 Consol Application ” ,然后在 “Project name ”處輸入工程名,在“ Location ” 處輸入 工程目錄。創(chuàng)建一個(gè)新的控制臺(tái)應(yīng)用程序工程。 步驟3:在“FILE”菜單中單擊“NEW”子菜單,在“Files ” 選項(xiàng)卡中選擇“ C+ Source File ” ,然后在“ File ”處輸 入C/C+源程序的文件名。 步驟4:將清單1-1所示的程序清單復(fù)制到新創(chuàng)建的C/C+ 源程序中。編譯成可執(zhí)行文件。 步驟5:在“開(kāi)始”菜單中單擊“程序”-“附件”-“命 令提示符”命令,進(jìn)入Windows “命令提
4、示符”窗口,然后 進(jìn)入工程目錄中的debug子目錄,執(zhí)行編譯好的可執(zhí)行程序: 課程 os 課os 實(shí)驗(yàn) 程序 os11debughello.exe 運(yùn)行結(jié)果(如果運(yùn)行不成功,則可能的原因是什 么?): EB命令提示符 Hcrosoft Uindow? ifc本 6.2.9200 2012 nicrosoft Coloration保留浙有權(quán)開(kāi)U* C: Usei*swshsse : F : cd皿葉咖 Flits Cx86)Mic*osoft Uiiiia Scud io NyProMlfibug E : ProgVAm Files CxHbf1ici*O5Oft VlfUhltes tMl M
5、)ehujtts tU丄 He lla IJin 32 Cori-sa 1 A ppiion E : Progiraii Files M1icrosof t UisuLal StudLioMlyProijectsXtestWl JDeibuLg (2)計(jì)算進(jìn)程在核心態(tài)運(yùn)行和用戶態(tài)運(yùn)行的時(shí)間 步驟1按照(1)中的步驟創(chuàng)建一個(gè)新的“ Win32 Consol Application ”工程,然后將清單1-2中的程序拷貝過(guò)來(lái), 編譯成可執(zhí)行文件。 步驟 2:在創(chuàng)建一個(gè)新的 “Win32 Consol Application ” 工程,程序的參考程序如清單1-3所示,編譯成可執(zhí)行文件 并執(zhí)行。 步驟3
6、:在“命令提示符”窗口中運(yùn)行步驟1中生成的 可執(zhí)行文件,測(cè)試步驟 2中可執(zhí)行文件在核心態(tài)運(yùn)行和用戶 態(tài)運(yùn)行的時(shí)間。 課程 os 課 os 實(shí)驗(yàn) 程序 os12debugtime TEST.exe 步驟4 :運(yùn)行結(jié)果(如果運(yùn)行不成功,則可能的原因是 什么?): Uindws【肢本 6”2萼92日01 kcJ 3B1Z Ficrosoft Gorporation,律留所有權(quán)利* C:MJsei*swshsse: E ;Xcd Pi*uyrni Flics M1iciusuf t Visual Stud Lut sM,es C 92 DcbUfj EzxPirogriani Files Mlicro
7、soFt Uifual EtudioXMyProjcctstest02Mebuytest02 te st93.exe IDs b. szCmdL in e,; c. NULL ; d. NULL ; e. FALSE; f. CREATE_NEW_CONSOLE; g. NULL ; h. NULL。 步驟5:按源程序中注釋中的提示,修改源程序 2-2,編 譯執(zhí)行。運(yùn)行結(jié)果: Creating the child process. Telling the child process to quit. 步驟 6:參考 MSDN 中的幫助文件CreateMutex()、 OpenMutex()、R
8、eleaseMutex()和 WaitForSingleObject()的使用 方法,理解父子進(jìn)程如何利用互斥體進(jìn)行同步的。給出父子 進(jìn)程同步過(guò)程的一個(gè)大概描述: 首先,進(jìn)程創(chuàng)建一個(gè)互斥體,打開(kāi)互斥體,如遇到互斥,則進(jìn)行處理, 處理完后,釋放互斥體,下面便是進(jìn)程等待下一個(gè)要處理的項(xiàng)目。 3、實(shí)驗(yàn)結(jié)論 每個(gè)進(jìn)程都從調(diào)用CreateProcess() API函數(shù)開(kāi)始,該函數(shù)的任務(wù)是在 對(duì)象管理器子系統(tǒng)內(nèi)初始化進(jìn)程對(duì)象。每一進(jìn)程都以調(diào)用 ExitProcess()或TerminateProcess() AP函數(shù)終止。通常應(yīng)用程序的框 架負(fù)責(zé)調(diào)用ExitProcess()函數(shù)。進(jìn)程都是有始有終,其中有
9、中斷, 還有處理進(jìn)程間互斥的函數(shù),已達(dá)到進(jìn)程的完成后自然終止。 實(shí)驗(yàn)三 進(jìn)程同步的經(jīng)典算法 背景知識(shí) Windows 2000提供的常用對(duì)象可分成三類: 核心應(yīng)用服 務(wù)、線程同步和線程間通訊。其中,開(kāi)發(fā)人員可以使用線程 同步對(duì)象來(lái)協(xié)調(diào)線程和進(jìn)程的工作,以使其共享信息并執(zhí)行 任務(wù)。此類對(duì)象包括互鎖數(shù)據(jù)、臨界段、事件、互斥體和信 號(hào)等。 多線程編程中關(guān)鍵的一步是保護(hù)所有的共享資源,工具 主要有互鎖函數(shù)、臨界段和互斥體等;另一個(gè)實(shí)質(zhì)性部分是 協(xié)調(diào)線程使其完成應(yīng)用程序的任務(wù),為此,可利用內(nèi)核中的 事件對(duì)象和信號(hào)。 在進(jìn)程內(nèi)或進(jìn)程間實(shí)現(xiàn)線程同步的最方便的方法是使 用事件對(duì)象,這一組內(nèi)核對(duì)象允許一個(gè)線程對(duì)
10、其受信狀態(tài)進(jìn) 行直接控制(見(jiàn)表3-1)。 而互斥體則是另一個(gè)可命名且安全的內(nèi)核對(duì)象,其主要 目的是引導(dǎo)對(duì)共享資源的訪問(wèn)。擁有單一訪問(wèn)資源的線程創(chuàng) 建互斥體,所有想要訪問(wèn)該資源的線程應(yīng)該在實(shí)際執(zhí)行操作 之前獲得互斥體,而在訪問(wèn)結(jié)束時(shí)立即釋放互斥體,以允許 下一個(gè)等待線程獲得互斥體,然后接著進(jìn)行下去。 與事件對(duì)象類似,互斥體容易創(chuàng)建、打開(kāi)、使用并清除。 利用CreateMutex() API可創(chuàng)建互斥體,創(chuàng)建時(shí)還可以指定一 個(gè)初始的擁有權(quán)標(biāo)志,通過(guò)使用這個(gè)標(biāo)志,只有當(dāng)線程完成 了資源的所有的初始化工作時(shí),才允許創(chuàng)建線程釋放互斥 體。 表3-1用于管理事件對(duì)象的 API API名稱 描述 Creat
11、eEven t() 在內(nèi)核中創(chuàng)建一個(gè)新的事件對(duì)象。此函 數(shù)允許有安全性設(shè)置、手工還是自動(dòng)重 置的標(biāo)志以及初始時(shí)已接受還是未接受 信號(hào)狀態(tài)的標(biāo)志 OpenEvent () 創(chuàng)建對(duì)已經(jīng)存在的事件對(duì)象的引用。此 API函數(shù)需要名稱、繼承標(biāo)志和所需的訪 問(wèn)級(jí)別 SetEvent() 將手工重置事件轉(zhuǎn)化為已接受信號(hào)狀態(tài) ResetEvent () 將手工重置事件轉(zhuǎn)化為非接受信號(hào)狀態(tài) PulseEvent () 將自動(dòng)重置事件對(duì)象轉(zhuǎn)化為已接受信號(hào) 狀態(tài)。當(dāng)系統(tǒng)釋放所有的等待它的線程 時(shí)此種轉(zhuǎn)化立即發(fā)生 為了獲得互斥體,首先,想要訪問(wèn)調(diào)用的線程可使用 OpenMutex() API來(lái)獲得指向?qū)ο蟮木浔蝗缓?/p>
12、,線程將這 個(gè)句柄提供給一個(gè)等待函數(shù)。當(dāng)內(nèi)核將互斥體對(duì)象發(fā)送給等 待線程時(shí),就表明該線程獲得了互斥體的擁有權(quán)。當(dāng)線程獲 得擁有權(quán)時(shí),線程控制了對(duì)共享資源的訪問(wèn)一一必須設(shè)法盡 快地放棄互斥體。放棄共享資源時(shí)需要在該對(duì)象上調(diào)用 ReleaseMute() API。然后系統(tǒng)負(fù)責(zé)將互斥體擁有權(quán)傳遞給下 一個(gè)等待著的線程(由到達(dá)時(shí)間決定順序)。 1、實(shí)驗(yàn)?zāi)康?1) 回顧系統(tǒng)進(jìn)程、 線程的有關(guān)概念, 加深對(duì) Windows 2000 線程的理解。 2) 了解互斥體對(duì)象,通過(guò)對(duì)生產(chǎn)者消費(fèi)者等進(jìn)程間同步 與互斥經(jīng)典算法的實(shí)現(xiàn),加深對(duì)P、V 原語(yǔ)以及利用 P、V 原語(yǔ)進(jìn)行進(jìn)程間同步與互斥操作的理解。 2、實(shí)驗(yàn)內(nèi)
13、容和步驟 ( 1). 生產(chǎn)者消費(fèi)者問(wèn)題 步驟 1:創(chuàng)建一個(gè)“ Win32 Consol Application ”工程, 然后拷貝清單 3-1 中的程序,編譯成可執(zhí)行文件。 步驟 2:在“命令提示符”窗口運(yùn)行步驟1 中生成的可 執(zhí)行文件。運(yùn)行結(jié)果: 范例: 課程os課os實(shí)驗(yàn) 程序os11debugos31 ( 假設(shè)編譯生成的可執(zhí)行文件是 os31.exe) 步驟 3:仔細(xì)閱讀源程序, 找出創(chuàng)建線程的 WINDOWASPI 函數(shù),回答下列問(wèn)題:線程的第一個(gè)執(zhí)行函數(shù)是什么(從哪 里開(kāi)始執(zhí)行)?它位于創(chuàng)建線程的API函數(shù)的第幾個(gè)參數(shù) 中? 第一個(gè)執(zhí)行函數(shù)是:DWORD WINAPI Produce
14、r(LPVOID IpPara) Produce。; 它位于創(chuàng)建線程的API函數(shù)的第3個(gè)參數(shù)中。 步驟4:修改清單3-1中的程序,調(diào)整生產(chǎn)者線程和消 費(fèi)者線程的個(gè)數(shù),使得消費(fèi)者數(shù)目大與生產(chǎn)者,看看結(jié)果有 何不同。運(yùn)行結(jié)果: 從中你可以得出什么結(jié)論: 進(jìn)程執(zhí)行中,有一定的次序,如程序運(yùn)行結(jié)果是:首先是consuming, 然后 producing,其次是 appending,最后是 taking aproduct, 步驟5:修改清單3-1中的程序,按程序注釋中的說(shuō)明 修改信號(hào)量EmptySemaphore的初始化方法,看看結(jié)果有何 不同。運(yùn)行結(jié)果: 步驟6:根據(jù)步驟4的結(jié)果,并查看MSDN回答下
15、列問(wèn)題 1) CreateMutex中有幾個(gè)參數(shù),各代表什么含義。 三個(gè):IpMutexAttributesSECURITYATTRIBUTES ,指定一個(gè) S ECURITY ATTRIBUTES 結(jié)構(gòu),或傳遞零值,表示使用不允許繼 承的默認(rèn)描述符 .-予bF ;bInitialOwnerLong,如創(chuàng)建進(jìn)程希望立即擁有 互斥體,則設(shè)為 TRUE。一個(gè)互斥體同時(shí)只能由一個(gè)線程擁有;l pName String,指定互斥體對(duì)象的名字。 2)CreateSemaphore中有幾個(gè)參數(shù),各代表什么含義, 信號(hào)量的初值在第幾個(gè)參數(shù)中。 四個(gè):IpSemaphoreAttributes SECURIT
16、Y_ATTRIBUTES .指定 一個(gè)SECURITY ATTRIBUTES結(jié)構(gòu),或傳遞零值 一- 表示采用 不允許繼承的默認(rèn)描述符。該參數(shù)定義了信號(hào)機(jī)的安全特性 ;lI ni tialCount Long,設(shè)置信號(hào)機(jī)的初始計(jì)數(shù)??稍O(shè)置零到 lMaximum Count之間的一個(gè)值 :IMaximumCount Long .設(shè)置信號(hào) 機(jī)的最大 計(jì)數(shù):lpName String,指定信號(hào)機(jī)對(duì)象的名稱。 3)程序中P、V原語(yǔ)所對(duì)應(yīng)的實(shí)際 Windows API函數(shù)是什 么,寫(xiě)出這幾條語(yǔ)句 HANDLE Mutex; HANDLE FullSemaphore; HANDLE EmptySemapho
17、re; DWORD WINAPI Producer(LPVOID); DWORD WINAPI Co nsumer(LPVOID); 4)CreateMutex 能用 CreateSemaphore 替代嗎?嘗試修 改程序3-1,將信號(hào)量 Mutex完全用 CreateSemaphore及相 關(guān)函數(shù)實(shí)現(xiàn)。寫(xiě)出要修改的語(yǔ)句: 1、可以。 2、修改的語(yǔ)句為:Mutex = CreateSemaphore(NULL,0,0,NULL); (2).讀者寫(xiě)者問(wèn)題 根據(jù)實(shí)驗(yàn)(1)中所熟悉的P、V原語(yǔ)對(duì)應(yīng)的實(shí)際 Windows API函數(shù),并參考教材中讀者、寫(xiě)者問(wèn)題的算法原理,嘗試 利用Windows AP
18、I函數(shù)實(shí)現(xiàn)第一類讀者寫(xiě)者問(wèn)題(讀者優(yōu) 先)。 3、實(shí)驗(yàn)結(jié)論 通過(guò)對(duì)牛產(chǎn)者、消費(fèi)者問(wèn)題的處理,加深理解了講程是可并發(fā)執(zhí)行的 程序在某個(gè)數(shù)據(jù)集合上的一次計(jì)算活動(dòng),也是操作系統(tǒng)進(jìn)行資源分配 和保護(hù)的基本單位。 線程是繼進(jìn)程之后引進(jìn)的, 為了減少程序并發(fā)執(zhí) 行的時(shí)空開(kāi)銷,使得并發(fā)粒度更細(xì),并發(fā)性更好。生產(chǎn)者、消費(fèi)者不 但解決進(jìn)程間同步,還解決了進(jìn)程的互斥,其算法思想很經(jīng)典,對(duì)P, V原語(yǔ)的理解有很大的幫助 實(shí)驗(yàn)四 存儲(chǔ)管理 背景知識(shí) 耗盡內(nèi)存是 Windows 2000/XP 系統(tǒng)中最常見(jiàn)的問(wèn)題之一。 當(dāng)系統(tǒng)耗盡內(nèi)存時(shí),所有進(jìn)程對(duì)內(nèi)存的總需求超出了系統(tǒng)的 物理內(nèi)存總量。隨后, Windows 2000
19、/XP 必須借助它的虛擬 內(nèi)存來(lái)維持系統(tǒng)和進(jìn)程的運(yùn)行。虛擬內(nèi)存機(jī)制是 Windows 2000/XP 操作系統(tǒng)的重要組成部分,但它的速度比物理內(nèi)存 慢得多,因此,應(yīng)該盡量避免耗盡物理內(nèi)存資源,以免導(dǎo)致 性能下降。 解決內(nèi)存不足問(wèn)題的一個(gè)有效的方法就是添加更多的內(nèi) 存。但是,一旦提供了更多的內(nèi)存, Windows 2000/XP 很可 以會(huì)立即“吞食” 。而事實(shí)上,添加更多的內(nèi)存并非總是可 行的, 也可能只是推遲了實(shí)際問(wèn)題的發(fā)生。 因此, 應(yīng)該相信, 優(yōu)化所擁有的內(nèi)存是非常關(guān)鍵的。 1. 分頁(yè)過(guò)程 當(dāng) Windows 2000/XP 求助于硬盤以獲得虛擬內(nèi)存時(shí), 這個(gè) 過(guò)程被稱為分頁(yè) (pagi
20、ng) 。分頁(yè)就是將信息從主內(nèi)存移動(dòng)到 磁盤進(jìn)行臨時(shí)存儲(chǔ)的過(guò)程。應(yīng)用程序?qū)⑽锢韮?nèi)存和虛擬內(nèi)存 視為一個(gè)獨(dú)立的實(shí)體, 甚至不知道 Windows 2000/XP 使用了 兩種內(nèi)存方案,而認(rèn)為系統(tǒng)擁有比實(shí)際內(nèi)存更多的內(nèi)存。例 如,系統(tǒng)的內(nèi)存數(shù)量可能只有 16MB ,但每一個(gè)應(yīng)用程序仍 然認(rèn)為有 4GB 內(nèi)存可供使用。 使用分頁(yè)方案帶來(lái)了很多好處, 不過(guò)這是有代價(jià)的。 當(dāng)進(jìn) 程需要已經(jīng)交換到硬盤上的代碼或數(shù)據(jù)時(shí),系統(tǒng)要將數(shù)據(jù)送 回物理內(nèi)存,并在必要時(shí)將其他信息傳輸?shù)接脖P上,而硬盤 與物理內(nèi)存在性能上的差異極大。例如,硬盤的訪問(wèn)時(shí)間通 常大約為4-10毫秒,而物理內(nèi)存的訪問(wèn)時(shí)間為60 us,甚至 更快
21、。 2. 內(nèi)存共享 應(yīng)用程序經(jīng)常需要彼此通信和共享信息。 為了提供這種能 力, Windows 2000/XP 必須允許訪問(wèn)某些內(nèi)存空間而不危及 它和其他應(yīng)用程序的安全性和完整性。從性能的角度來(lái)看, 共享內(nèi)存的能力大大減少了應(yīng)用程序使用的內(nèi)存數(shù)量。運(yùn)行 一個(gè)應(yīng)用程序的多個(gè)副本時(shí),每一個(gè)實(shí)例都可以使用相同的 代碼和數(shù)據(jù),這意味著不必維護(hù)所加載應(yīng)用程序代碼的單獨(dú) 副本并使用相同的內(nèi)存資源。無(wú)論正在運(yùn)行多少個(gè)應(yīng)用程序 實(shí)例,充分支持應(yīng)用程序代碼所需求的內(nèi)存數(shù)量都相對(duì)保持 不變。 3. 未分頁(yè)合并內(nèi)存與分頁(yè)合并內(nèi)存 Windows 2000/XP 決定了系統(tǒng)內(nèi)存組件哪些可以以及哪 些不可以交換到磁盤上
22、。顯然,不應(yīng)該將某些代碼 (例如內(nèi) 核) 交換出主內(nèi)存。因此, Windows 2000/XP 將系統(tǒng)使用的 內(nèi)存進(jìn)一步劃分為未分頁(yè)合并內(nèi)存和分頁(yè)合并內(nèi)存。 分頁(yè)合并內(nèi)存是存儲(chǔ)遲早需要的可分頁(yè)代碼或數(shù)據(jù)的內(nèi) 存部分。雖然可以將分頁(yè)合并內(nèi)存中的任何系統(tǒng)進(jìn)程交換到 磁盤上,但是它臨時(shí)存儲(chǔ)在主內(nèi)存的這一部分,以防系統(tǒng)立 刻需要它。在將系統(tǒng)進(jìn)程交換到磁盤上之前,Windows 2000/XP 會(huì)交換其他進(jìn)程。 未分頁(yè)合并內(nèi)存包含必須駐留在內(nèi)存中的占用代碼或數(shù) 據(jù)。這種結(jié)構(gòu)類似于早期的 MS-DOS 程序使用的結(jié)構(gòu),在 MS-DOS 中,相對(duì)較小的終止并駐留程序 (Terminate and Stay
23、Resident, TSR) 在啟動(dòng)時(shí)加載到內(nèi)存中。這些程序在系 統(tǒng)重新啟動(dòng)或關(guān)閉之前一直駐留在內(nèi)存的特定部分中。例 如,防病毒程序?qū)⒓虞d為 TSR 程序,以預(yù)防可能的病毒襲擊。 未分頁(yè)合并內(nèi)存中包含的進(jìn)程保留在主內(nèi)存中, 并且不能 交換到磁盤上。物理內(nèi)存的這個(gè)部分用于內(nèi)核模式操作(例 如,驅(qū)動(dòng)程序)和必須保留在主內(nèi)存中才能有效工作的其他 進(jìn)程。沒(méi)有主內(nèi)存的這個(gè)部分,內(nèi)核組件就將是可分頁(yè)的, 系統(tǒng)本身就有變得不穩(wěn)定的危險(xiǎn)。 分配到未分頁(yè)內(nèi)存池的主內(nèi)存數(shù)量取決于服務(wù)器擁有的 物理內(nèi)存數(shù)量以及進(jìn)程對(duì)系統(tǒng)上的內(nèi)存地空間的需求。不 過(guò), Windows 2000/XP 將未分頁(yè)合并內(nèi)存限制為 256M
24、B ( 在 Windows NT 4 中的限制為 128MB) 。根據(jù)系統(tǒng)中的物理內(nèi) 存數(shù)量, 復(fù)雜的算法在啟動(dòng)時(shí)動(dòng)態(tài)確定 Windows 2000/XP 系 統(tǒng)上的未分頁(yè)合并內(nèi)存的最大數(shù)量。 Windows 2000/XP 內(nèi)部 的這一自我調(diào)節(jié)機(jī)制可以根據(jù)當(dāng)前的內(nèi)存配置自動(dòng)調(diào)整大 小。例如,如果增加或減少系統(tǒng)中的內(nèi)存數(shù)量,那么 Windows2000 將自動(dòng)調(diào)整未分頁(yè)合并內(nèi)存的大小,以反映這 一更改。 4. 提高分頁(yè)性能 只有一個(gè)物理硬盤驅(qū)動(dòng)器的系統(tǒng)限制了優(yōu)化分頁(yè)性能的 能力。驅(qū)動(dòng)器必須處理系統(tǒng)和應(yīng)用程序的請(qǐng)求以及對(duì)分頁(yè)文 件的訪問(wèn)。雖然物理驅(qū)動(dòng)器可能有多個(gè)分區(qū),但是將分頁(yè)文 件分布到多個(gè)分
25、區(qū)的分頁(yè)文件并不能提高硬盤驅(qū)動(dòng)器的能 力。只有當(dāng)一個(gè)分區(qū)沒(méi)有足夠的空間來(lái)包含整個(gè)分頁(yè)文件 時(shí),才將分頁(yè)文件放在同一個(gè)硬盤的多個(gè)分區(qū)上。 擁有多個(gè)物理驅(qū)動(dòng)器的服務(wù)器可以使用多個(gè)分頁(yè)文件來(lái) 提高分頁(yè)性能。關(guān)鍵是將分頁(yè)請(qǐng)求的負(fù)載分布到多個(gè)物理硬 盤上。實(shí)際上,使用獨(dú)立物理驅(qū)動(dòng)器上的分頁(yè)文件,系統(tǒng)可 以同時(shí)處理多個(gè)分頁(yè)請(qǐng)求。各個(gè)物理驅(qū)動(dòng)器可以同時(shí)訪問(wèn)它 自己的分頁(yè)文件并寫(xiě)入信息,這將增加可以傳輸?shù)男畔⒘俊?多個(gè)分頁(yè)文件的最佳配置是將各個(gè)分頁(yè)文件放在擁有自己 的控制器的獨(dú)立驅(qū)動(dòng)器上。不過(guò),由于額外的費(fèi)用并且系統(tǒng) 上的可用中斷很有限,因此對(duì)于大多數(shù)基于服務(wù)器的配置來(lái) 說(shuō),這可能是不切實(shí)際的解決方案。 分頁(yè)
26、文件最重要的配置參數(shù)是大小。無(wú)論系統(tǒng)中有多少個(gè) 分頁(yè)文件,如果它們的大小不合適,那么系統(tǒng)就可能遇到性 能問(wèn)題。 如果初始值太小,那么系統(tǒng)可能必須擴(kuò)大分頁(yè)文件,以補(bǔ) 償額外的分頁(yè)活動(dòng)。當(dāng)系統(tǒng)臨時(shí)增加分頁(yè)文件時(shí),它必須在 處理分頁(yè)請(qǐng)求的同時(shí)創(chuàng)建新的空間。這時(shí),系統(tǒng)將出現(xiàn)大量 的頁(yè)面錯(cuò)誤,甚至可能出現(xiàn)系統(tǒng)失效。當(dāng)系統(tǒng)必須在進(jìn)程的 工作區(qū)外部(在物理內(nèi)存或分頁(yè)文件中的其他位置)查找信 息時(shí),就會(huì)出現(xiàn)頁(yè)面錯(cuò)誤。當(dāng)系統(tǒng)缺乏存儲(chǔ)資源(物理內(nèi)存 及虛擬內(nèi)存)來(lái)滿足使用需求,從而遇到過(guò)多的分頁(yè)時(shí),就 會(huì)出現(xiàn)系統(tǒng)失效。系統(tǒng)將花更多的時(shí)間來(lái)分頁(yè)而不是執(zhí)行應(yīng) 用程序。當(dāng)系統(tǒng)失效時(shí),Memory : Pages/see
27、計(jì)數(shù)器將持續(xù) 高于每秒100頁(yè)。系統(tǒng)失效嚴(yán)重降低了系統(tǒng)的性能。此外, 動(dòng)態(tài)擴(kuò)展分頁(yè)文件將導(dǎo)致碎片化。分頁(yè)文件將散布在整個(gè)磁 盤上而不是在啟動(dòng)時(shí)的連續(xù)空間中創(chuàng)建,從而增加了系統(tǒng)的 開(kāi)銷,并導(dǎo)致系統(tǒng)性能降低。因此,應(yīng)該盡量避免系統(tǒng)增加 分頁(yè)文件的大小。 提示: 1)WINDOWS中采用的虛擬存儲(chǔ)管理方案是請(qǐng)求 頁(yè)式存儲(chǔ)管理,分頁(yè)文件就是我們?cè)碚n中所說(shuō)的交 換/對(duì)換文件,存放的內(nèi)容是暫時(shí)被交換到外存中的進(jìn) 程頁(yè)面。UNIX使用的是交換分區(qū), WINDOWS 使用 的是交換文件。 2)在NTFS驅(qū)動(dòng)器上,總是至少保留25%的空閑 驅(qū)動(dòng)器空間,以確??梢栽谶B續(xù)的空間中創(chuàng)建分頁(yè)文 件。 3)Window
28、s 2000使用內(nèi)存數(shù)量的 1.5倍作為分頁(yè) 文件的最小容量,這個(gè)最小容量的兩倍作為最大容量。 它減少了系統(tǒng)因?yàn)殄e(cuò)誤配置的分頁(yè)文件而崩潰的可能 性。系統(tǒng)在崩潰之后能夠?qū)?nèi)存轉(zhuǎn)儲(chǔ)寫(xiě)入磁盤,所以 系統(tǒng)分區(qū)必須有一個(gè)至少等于物理內(nèi)存數(shù)量加上1的 分頁(yè)文件。 5. Windows虛擬內(nèi)存 Windows 2000是32位的操作系統(tǒng),它使計(jì)算機(jī) CPU可 以用32位地址對(duì)32位內(nèi)存塊進(jìn)行操作。內(nèi)存中的每一個(gè)字 節(jié)都可以用一個(gè) 32位的指針來(lái)尋址。這樣,最大的存儲(chǔ)空 間就是232字節(jié)或4000兆字節(jié)(4GB)。這樣,在 Windows 下運(yùn)行的每一個(gè)應(yīng)用程序都認(rèn)為能獨(dú)占可能的4GB大小的 空間。 而另一方
29、面,實(shí)際上沒(méi)有幾臺(tái)機(jī)器的RAM能達(dá)到4GB, 更不必說(shuō)讓每個(gè)進(jìn)程都獨(dú)享4GB內(nèi)存了。Windows在幕后將 虛擬內(nèi)存(virtual memory, VM)地址映射到了各進(jìn)程的物 理內(nèi)存地址上。而所謂物理內(nèi)存是指計(jì)算機(jī)的RAM 和由 Windows分配到用戶驅(qū)動(dòng)器根目錄上的換頁(yè)文件。物理內(nèi)存 完全由系統(tǒng)管理。 在Windows 2000環(huán)境下,4GB的虛擬地址空間被劃分成 兩個(gè)部分:低端2GB提供給進(jìn)程使用,高端 2GB提供給系 統(tǒng)使用。這意味著用戶的應(yīng)用程序代碼,包括DLL以及進(jìn)程 使用的各種數(shù)據(jù)等,都裝在用戶進(jìn)程地址空間內(nèi)(低端 2GB)。用戶進(jìn)程的虛擬地址空間也被分成三部分: 1)虛擬內(nèi)
30、存的已調(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)限。 3)虛擬內(nèi)存的自由區(qū) (free):不限定其用途,有相應(yīng)的 PAGE_NOACCESS 權(quán)限。 與虛擬內(nèi)存區(qū)相關(guān)的訪問(wèn)權(quán)限告知系統(tǒng)進(jìn)程可在內(nèi)存中 進(jìn)行何種類型的操作。例如,用戶不能在只有 PAGE_READONLY 權(quán)限的區(qū)域上進(jìn)行寫(xiě)操作或執(zhí)行程序; 也不能在只有PAGE_EXECUTE權(quán)限的區(qū)域里進(jìn)行讀、寫(xiě)操 作。而具有PAGE_ NOACCESS權(quán)限的特殊區(qū)域,則意味著 不允
31、許進(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)聯(lián)。 程序清單4-1還顯示了如何理解 Virtual QueryEX() API填 充的 MEMORY_BASIC_ INFORMATION 結(jié)構(gòu),如表 4-1 所 示。此數(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)
32、則包含了 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è)。 表 4-1 MEMORY BASICNFORMATION構(gòu)的成員 成員名稱 目的 PVOID BaseAddress 虛擬內(nèi)存區(qū)域開(kāi)始處的指針 PVOID AllocationBase 如果這個(gè)特定的區(qū)域?yàn)樽臃峙鋮^(qū)的 話,貝y為虛擬內(nèi)存外面區(qū)域的指針; 否則此值與BaseAddress相同 DWORD 虛擬內(nèi)存最初分配區(qū)域的保護(hù)屬性。 AllocationPro
33、tec t 其可能值包括: PAGE_NOACCESS, PAGE_READONLY, PAGE_READWRITE和PAGE _EXECUTE_READ DWORD RegionSize 虛擬內(nèi)存區(qū)域的字節(jié)數(shù) DWORD State 區(qū)域的當(dāng)前分配狀態(tài)。其可能值為 MEM_COMMIT , MEM_FREE 和 MEM_RESERVE DWORD Protect 虛擬內(nèi)存當(dāng)前區(qū)域的保護(hù)屬性??赡?值與 AllocationProtect成員的相同 DWORD Type 虛擬內(nèi)存區(qū)域中出現(xiàn)的頁(yè)面類型???能 值 為MEMMAGE, MEM_MAPPED 和 MEM_PRIV ATE Windo
34、ws還提供了一整套能使用戶精確控制應(yīng)用程序的 虛擬地址空間的虛擬內(nèi)存API。一些用于虛擬內(nèi)存操作及檢 測(cè)的API見(jiàn)表4-2所示。 提供虛擬內(nèi)存分配功能的是VirtualAlloc() 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) 定義這些方式,用戶可以通知Wind
35、ows按只讀、讀寫(xiě)、不可 讀寫(xiě)、執(zhí)行或特殊方式來(lái)處理新的虛擬內(nèi)存。 與VirtualAlloc() 函數(shù)對(duì)應(yīng)的是 VirtualFree()函數(shù),其作 用是釋放虛擬內(nèi)存中的已調(diào)配頁(yè)或保留頁(yè)。用戶可利用 dwFree Type參數(shù)將已調(diào)配頁(yè)修改成保留頁(yè)屬性。 VirtualProtect()是 VirtualAlloc()的一個(gè)輔助函數(shù),利用 它可以改變虛擬內(nèi)存區(qū)的保護(hù)規(guī)范。 表4-2 虛擬內(nèi)存的API API名稱 描述 VirtualQuery Ex() 通過(guò)填充 MEMORY_BASICNF ORMATION結(jié) 構(gòu)檢測(cè)進(jìn)程內(nèi)虛擬內(nèi)存的區(qū)域 VirtualAlloc () 保留或調(diào)配進(jìn)程的部分
36、虛擬內(nèi)存,設(shè)置 分配和保護(hù)標(biāo)志 VirtualFree() 釋放或收回應(yīng)用程序使用的部分虛擬地 址 VirtualProte ct() 改變虛擬內(nèi)存區(qū)域保護(hù)規(guī)范 VirtualLock( ) 防止系統(tǒng)將虛擬內(nèi)存區(qū)域通過(guò)系統(tǒng)交換 到頁(yè)面文件中 VirtualUnloc k() 釋放虛擬內(nèi)存的鎖定區(qū)域,必要時(shí),允 許系統(tǒng)將其父換到頁(yè)面文件中 1、實(shí)驗(yàn)?zāi)康?(1)通過(guò)對(duì) Windows 2000 “任務(wù)管理器”、“計(jì)算機(jī)管理”、 “我的電腦”屬性、“系統(tǒng)信息”、“系統(tǒng)監(jiān)視器”等程 序的應(yīng)用,學(xué)習(xí)如何察看和調(diào)整Windows的內(nèi)存性能, 加深對(duì)操作系統(tǒng)存儲(chǔ)管理、虛擬存儲(chǔ)管理等理論知識(shí)的 理解。 (2)
37、 了解 Windows 2000的內(nèi)存結(jié)構(gòu)和虛擬內(nèi)存的管理,理 解進(jìn)程的虛擬內(nèi)存空間和物理內(nèi)存的映射關(guān)系。 2、實(shí)驗(yàn)內(nèi)容和步驟 (1)觀察和調(diào)整 Windows 2000/XP的內(nèi)存性能。 步驟1:閱讀“背景知識(shí)”,請(qǐng)回答: 1)什么是“分頁(yè)過(guò)程”? 當(dāng) Windows 2000/XP求助于硬盤以獲得虛擬內(nèi)存時(shí),這個(gè) 過(guò)程被稱為分頁(yè) (paging)。分頁(yè)就是將信息從主內(nèi)存移動(dòng)到 磁盤進(jìn)行臨時(shí)存儲(chǔ)的過(guò)程。 2)什么是“內(nèi)存共享”? Windows 2000/XP 必須允許訪問(wèn)某些內(nèi)存空間而不危及 它和其他應(yīng)用程序的安全性和完整性。 3)什么是“未分頁(yè)合并內(nèi)存”和“分頁(yè)合并內(nèi)存”? 未分頁(yè)合并內(nèi)
38、存 包含必須駐留在內(nèi)存中的占用代碼或數(shù) 據(jù)。 分頁(yè)合并內(nèi)存 是存儲(chǔ)遲早需要的可分頁(yè)代碼或數(shù)據(jù)的內(nèi) 存部分。雖然可以將分頁(yè)合并內(nèi)存中的任何系統(tǒng)進(jìn)程交換到 磁盤上,但是它臨時(shí)存儲(chǔ)在主內(nèi)存的這一部分,以防系統(tǒng)立 刻需要它。在將系統(tǒng)進(jìn)程交換到磁盤上之前,Windows 2000/XP會(huì)交換其他進(jìn)程。 Windows 2000中,未分頁(yè)合并內(nèi)存的最大限制是多少? Windows 2000/XP 將未分頁(yè)合并內(nèi)存限制為 256MB (在 Windows NT 4 中的限制為 128MB)。 4)Windows 2000分頁(yè)文件默認(rèn)設(shè)置的最小容量和最大容 量是多少? Windows 2000使用內(nèi)存數(shù)量的
39、1.5倍作為分頁(yè)文件的最 小容量,這個(gè)最小容量的兩倍作為最大容量。 步驟 2:登錄進(jìn)入 Windows 2000 Professional。 步驟3:查看包含多個(gè)實(shí)例的應(yīng)用程序的內(nèi)存需求。 1)啟動(dòng)想要監(jiān)視的應(yīng)用程序,例如 Word。 2)右鍵單擊任務(wù)欄以啟動(dòng)“任務(wù)管理器” 。 3)在“ Windows任務(wù)管理器”對(duì)話框中選定“進(jìn)程”選 項(xiàng)卡。 4)向下滾動(dòng)在系統(tǒng)上運(yùn)行的進(jìn)程列表,查找想要監(jiān)視的 應(yīng)用程序。 請(qǐng)?jiān)诒?-3中記錄: 表4-3 實(shí)驗(yàn)記錄 映像名稱 PID CPU CPU時(shí)間 內(nèi)存使用 Winword.ex e 4036 02 0 : 02 : 51 28448k “內(nèi)存使用”列顯示
40、了該應(yīng)用程序的一個(gè)實(shí)例正在使用的 內(nèi)存數(shù)量。 5)啟動(dòng)應(yīng)用程序的另一個(gè)實(shí)例并觀察它的內(nèi)存需求。 請(qǐng)描述使用第二個(gè)實(shí)例占用的內(nèi)存與使用第一個(gè)實(shí)例時(shí) 的內(nèi)存對(duì)比情況: 沒(méi)什么太大的變化 步驟4:未分頁(yè)合并內(nèi)存。 估算未分頁(yè)合并內(nèi)存大小的最簡(jiǎn)單方法是使用 “任務(wù)管理 器”。未分頁(yè)合并內(nèi)存的估計(jì)值顯示在 “任務(wù)管理器”的“性 能”選項(xiàng)卡的“核心內(nèi)存”部分。 總數(shù)(K) :64736 分頁(yè)數(shù):48932 未分頁(yè)(K) : 15804 還可以使用“任務(wù)管理器”查看一個(gè)獨(dú)立進(jìn)程正在使用的 未分頁(yè)合并內(nèi)存數(shù)量和分頁(yè)合并內(nèi)存數(shù)量。操作步驟如下: 1)單擊“ Windows任務(wù)管理器”的“進(jìn)程”選項(xiàng)卡,然 后從“
41、查看”菜單中選擇“選擇列”命令,顯示“進(jìn)程”選 項(xiàng)卡的可查看選項(xiàng)。 2)在“選擇列”對(duì)話框中,選定“頁(yè)面緩沖池”選項(xiàng)和 “非頁(yè)面緩沖池”選項(xiàng)旁邊的復(fù)選框,然后單擊“確定”按 鈕。 返回Windows 2000 “任務(wù)管理器”的“進(jìn)程”選項(xiàng)卡時(shí), 將看到其中增加顯示了各個(gè)進(jìn)程占用的分頁(yè)合并內(nèi)存數(shù)量 和未分頁(yè)合并內(nèi)存數(shù)量。 仍以剛才打開(kāi)觀察的應(yīng)用程序(例如Word)為例,請(qǐng)?jiān)诒?4-4中記錄: 表4-4實(shí)驗(yàn)記錄 映像名稱 PID 內(nèi)存使用 頁(yè)面緩沖 池 非頁(yè)面緩 沖池 winword 4036 37460k 1188k 20k 從性能的角度來(lái)看,未分頁(yè)合并內(nèi)存越多, 可以加載到這 個(gè)空間的數(shù)據(jù)就越
42、多。擁有的物理內(nèi)存越多,未分頁(yè)合并內(nèi) 存就越多。但未分頁(yè)合并內(nèi)存被限制為256MB,因此添加超 出這個(gè)限制的內(nèi)存對(duì)未分頁(yè)合并內(nèi)存沒(méi)有影響。 步驟5:提高分頁(yè)性能。 在Windows 2000的安裝過(guò)程中,將使用連續(xù)的磁盤空間 自動(dòng)創(chuàng)建分頁(yè)文件(pagefile.sys)。用戶可以事先監(jiān)視變化的 內(nèi)存需求并正確配置分頁(yè)文件,使得當(dāng)系統(tǒng)必須借助于分頁(yè) 時(shí)的性能達(dá)到最高。 雖然分頁(yè)文件一般都放在系統(tǒng)分區(qū)的根目錄下面,但這并 不總是該文件的最佳位置。要想從分頁(yè)獲得最佳性能,應(yīng)該 首先檢查系統(tǒng)的磁盤子系統(tǒng)的配置,以了解它是否有多個(gè)物 理硬盤驅(qū)動(dòng)器。 1)在“開(kāi)始”菜單中單擊“設(shè)置”-“控制面板”命令,
43、雙擊“管理工具”圖標(biāo),再雙擊“計(jì)算機(jī)管理”圖標(biāo)。 2)在“計(jì)算機(jī)管理”窗口的左格選擇“磁盤管理”管理 單元來(lái)查看系統(tǒng)的磁盤配置。 如果系統(tǒng)只有一個(gè)硬盤,那么建議應(yīng)該盡可能為系統(tǒng)配置 額外的驅(qū)動(dòng)器。這是因?yàn)椋篧indows 2000最多可以支持在多 個(gè)驅(qū)動(dòng)器上分布的 16個(gè)獨(dú)立的分頁(yè)文件。為系統(tǒng)配置多個(gè) 分頁(yè)文件可以實(shí)現(xiàn)對(duì)不同磁盤I/O請(qǐng)求的并行處理,這將大 大提高I/O請(qǐng)求的分頁(yè)文件性能。 請(qǐng)?jiān)诒?-5中記錄: 表4-5 實(shí)驗(yàn)記錄 卷 布局 類型 文件系 統(tǒng) 容量 狀態(tài) (C:) 磁盤分 區(qū) 基本 FAT32 48.82G 狀態(tài)良好 (系統(tǒng)) (d:) 磁盤 分區(qū) 基本 FAT32 7.60G
44、 狀態(tài)良好 (良好) Lenov o_part 磁盤 分區(qū) 基本 FAT32 305M 狀態(tài)良好 (EISA 配 置) 步驟6:計(jì)算分頁(yè)文件的大小。 要想更改分頁(yè)文件的位置或大小配置參數(shù),可按以下步驟 進(jìn)行: 1)右鍵單擊桌面上的“我的電腦”圖標(biāo)并選定“屬性”。 2)在“高級(jí)”選項(xiàng)卡上單擊“性能選項(xiàng)”按鈕。 3)單擊對(duì)話框中的“虛擬內(nèi)存”區(qū)域中的“更改”按鈕。 請(qǐng)記錄: 所選驅(qū)動(dòng)器(C:)的頁(yè)面文件大?。?驅(qū)動(dòng)器:C: 可用空間:17656 MB 初始大?。∕B) : 1000 最大值(MB) : 4000 所選驅(qū)動(dòng)器(D:)的頁(yè)面文件大?。海ㄈ绻械脑挘?驅(qū)動(dòng)器:D: 可用空間:1830 M
45、B 初始大小(MB): 最大值(MB): 所有驅(qū)動(dòng)器頁(yè)面文件大小的總數(shù): 允許的最小值:2MB 推薦:754MB 當(dāng)前已分配:1000MB 4)要想將另一個(gè)分頁(yè)文件添加到現(xiàn)有配置,在“虛擬內(nèi) 存”對(duì)話框中選定一個(gè)還沒(méi)有分頁(yè)文件的驅(qū)動(dòng)器,然后指定 分頁(yè)文件的初始值和最大值(以兆字節(jié)表示),單擊“設(shè)置”, 然后單擊“確定” 。 5) 要想更改現(xiàn)有分頁(yè)文件的最大值和最小值,可選定分 頁(yè)文件所在的驅(qū)動(dòng)器。然后指定分頁(yè)文件的初始值和最大 值,單擊“設(shè)置”按鈕,然后單擊“確定”按鈕。 6) 在“性能選項(xiàng)”對(duì)話框中單擊“確定”按鈕。 7) 單擊“確定”按鈕以關(guān)閉“系統(tǒng)特性”對(duì)話框。 步驟 7: 使用任務(wù)管理
46、器。 可以使用 “任務(wù)管理器” 來(lái)簡(jiǎn)單地檢查分頁(yè)文件是否配置 了正確容量。這樣可以實(shí)時(shí)提供系統(tǒng)正在使用分頁(yè)文件的方 式以及其他重要系統(tǒng)信息的準(zhǔn)確描述。 通過(guò)右鍵單擊任務(wù)欄運(yùn)行“任務(wù)管理器” ,選定“性能” 選項(xiàng)卡查看實(shí)時(shí)的系統(tǒng)統(tǒng)計(jì)數(shù)據(jù)。與分頁(yè)文件大小最有關(guān)的 信息位于“認(rèn)可用量”區(qū)域。這一區(qū)域顯示了認(rèn)可“峰值” 是否達(dá)到或超過(guò)了認(rèn)可“限制” ,以及它是否超過(guò)了系統(tǒng)上 的物理內(nèi)存數(shù)量。認(rèn)可“峰值”是指系統(tǒng)迄今為止向進(jìn)程分 配的最大物理內(nèi)存和虛擬內(nèi)存數(shù)量。 請(qǐng)記錄: 物理內(nèi)存 (K) 總數(shù): 515372 可用數(shù) : 209440 系統(tǒng)緩存: 268112 認(rèn)可用量 (K) 總數(shù): 760860
47、限制: 1508300 峰值: 825976 當(dāng)系統(tǒng)遇到分頁(yè)活動(dòng)增加的情況時(shí),提交的內(nèi)存數(shù)量 (“認(rèn)可總數(shù)” ) 就會(huì)增加。一旦它達(dá)到了“認(rèn)可限制”值, 系統(tǒng)就需要擴(kuò)展分頁(yè)文件。 “認(rèn)可限制”值指出在不必?cái)U(kuò)展 分頁(yè)文件的情況下可以向內(nèi)存提交的虛擬內(nèi)存數(shù)量。因?yàn)槟繕?biāo)是避免擴(kuò)展分頁(yè)文件,所以必須保持“認(rèn)可總數(shù)”和“認(rèn) 可限制”值相差較大。如果這兩個(gè)值接近了,那么系統(tǒng)必須 動(dòng)態(tài)增加分頁(yè)文件的大小。 “任務(wù)管理器”的“認(rèn)可用量”區(qū)域顯示的信息還說(shuō)明了 系統(tǒng)的主內(nèi)存是否足以滿足系統(tǒng)執(zhí)行的任務(wù)。如果認(rèn)可“總 數(shù)”值經(jīng)常超過(guò)系統(tǒng)中的內(nèi)存數(shù)量,那么系統(tǒng)的物理內(nèi)存可 能不足。 (2) 了解和檢測(cè)進(jìn)程的虛擬內(nèi)存空
48、間。 步驟 1:創(chuàng)建一個(gè)“ Win32 Consol Application ” 工程, 然后拷貝清單4-1中的程序,編譯成可執(zhí)行文件。 步驟2:在VC的工具欄單擊“ Execute Program”(執(zhí)行 程序)按鈕,或者按Ctrl + F5鍵,或者在“命令提示符”窗 口運(yùn)行步驟1中生成的可執(zhí)行文件 范例: 課程 os 課os 實(shí)驗(yàn) 程序 os11debugos41 (假設(shè)編譯生成的可執(zhí)行文件是os41.exe) 步驟3:根據(jù)運(yùn)行結(jié)果,回答下列問(wèn)題 Uii*tnailpaye nine - 4 = 10 KE MjLnxnuini applicaLt ion |Ma.xj.mjini apy
49、hlxuat lurn addreifs - 0k7ef f f f To Lal d*也丄 Ldliltf virtual nmiiurii 3 .U KH; 0B02S8B-B3G218O0 4- 00 MB: 000210SB-B3B3G0Q0 G0.0 KB) 0B03SS8B-B312C0B0 0_ 98 HB) mi2cnnn-imis(innFi &010080-03012800KB QB12dRflB-Cl 2 國(guó) KH) 0B13SBOB-B31230O0 12.0 Committed, KEflWElTE. Private Free, NOACCECii Cammltted
50、, REfiiWRiTE,. Prinjate Free. NOACCESS Reserued, READONLV, Pviuate Comniitted, GIJftRD, REfiDUBITE, Priuate Cominiitteiid, REDIMJR1IPviuate 00133BOB-O3146000 Comm:!七七歸d* READONLV, Mapped Free, NOACCESS 0314BOB B314G0O0 Cnmnixtied# REflDWRITE, 闔丄 46C0-97 Ci!4.0 KBJ 00246 6QB-B325 0000 0
51、B25 080-0325 3080 OB25 3 0QB-0326. B0O0 0026 S8Q 0-03276000 40. C12.0 52.0 CB8.Q 40 .a KB) KB) KB) EB) Fin Res erue d , REH DONIiY # Piiuat e Cgnmltred# KERDWKITE, Prlyate Reserued, READOHLY# Private ComriiREADWRITEp Mapped Reerued READONLY, Happed Connitted. FtEADONLV w Mavped NOflCCFSS (028 80QQ-0
52、02bd0OB p02hd0G0-032c 6003 Comitted READONLV, Mapped N00CCE6S BB2c60Q0 033010B0 00301000-09)31 000 Confittvd霞 RER&OHIiy, Kep嚴(yán)d Free, HOACCESS 虛擬內(nèi)存每頁(yè)容量為:4.00kb 最小應(yīng)用地址:0 x0001 0000 最大應(yīng)用地址:0 x7ffeffff 當(dāng)前可供應(yīng)用程序使用的內(nèi)存空間為:1.99gb 當(dāng)前計(jì)算機(jī)的實(shí)際內(nèi)存大小為:504mb 理論上每個(gè)Windows應(yīng)用程序可以獨(dú)占的最大存儲(chǔ)空間 是: 提示:可供應(yīng)用程序使用的內(nèi)存空間實(shí)際上已經(jīng) 減去了開(kāi)頭
53、與結(jié)尾兩個(gè) 64KB的保護(hù)區(qū)。虛擬內(nèi)存空 間中的64KB保護(hù)區(qū)是防止編程錯(cuò)誤的一種Windows 方式。任何對(duì)內(nèi)存中這一區(qū)域的訪問(wèn)(讀、寫(xiě)、執(zhí)行)都 將引發(fā)一個(gè)錯(cuò)誤陷阱,從而導(dǎo)致錯(cuò)誤并終止程序的執(zhí) 行。 按committed、reserved、free等三種虛擬地址空間分別記 錄實(shí)驗(yàn)數(shù)據(jù)。其中“描述”是指對(duì)該組數(shù)據(jù)的簡(jiǎn)單描述,例 如,對(duì)下列一組數(shù)據(jù): 00010000 -00012000Committed, READWRITE, Private 可描述為:具有READWRITE權(quán)限的已調(diào)配私有內(nèi)存區(qū)。 將系統(tǒng)當(dāng)前的自由區(qū)(free)虛擬地址空間填入表4-6中 地址 大小 虛擬 地址 空間 類型
54、 訪問(wèn)權(quán) 限 描述 00012000-00 020000 (56.0 KB) free NOAC CESS 00021000-00 030000 (60.0 KB) free 00133000-00 140000 (52.0 KB) free 00276000-00 280000 40.0 free 002bd000-00 2c0000 12.0 free 00301000-00 310000 60.0 free 00316000-00 320000 40 free 00361000-00 370000 60 free 00391000-00 3a0000 60 free 003a1000-0
55、0 3b0000 60 free 003b3000-00 3c0000 52 free 003d0000-00 400000 192 free 00485000-00 490000 44 free 00558000-00 560000 32 free 00663000-00 670000 52 free 00a70000-62 c20000 1.53g free 62c29000-73 fa0000 275 mb free 7400b000-76 300000 3409 mb free 7631d000-77 be0000 2407 mb free 77c38000-77 d10000 864
56、 free 77e49000-77 e50000 28 free 77ee1000-77 ef0000 60 free 77f38000-77 f40000 32 free 77fb6000-7c 800000 72.2 mb free 7c91d000-7c 920000 12.0 free 提示:詳細(xì)記錄實(shí)驗(yàn)數(shù)據(jù)在實(shí)驗(yàn)活動(dòng)中是必要的, 但想想是否可以簡(jiǎn)化記錄的辦法? 將系統(tǒng)當(dāng)前的已調(diào)配區(qū)(committed)虛擬地址空間填入 表4-7中。 表4-7 實(shí)驗(yàn)記錄 地址 大小 虛擬 地址 空間 類型 訪問(wèn)權(quán)限 描述 00010000-00 012000 8.00 KB com mitte d R
57、EADWRITE, Private 00020000-00 021000 4.00 KB com mitte READWRITE, Private d 0012c000-00 4.00 com GUARD, Private 12d000 mitte KB d READWRITE com 0012d000-00 12.0 mitte READWRITE, Private 130000 KB d com 00130000-00 12.0 mitte READONLY , 133000 KB d Mapped 00140000-00 24.0 com 146000 mitte READWRITE P
58、rivate KB d 00240000-00 24.0 com 246000 mitte READWRITE Private KB d 00250000-00 12.0 com READWRITE, 253000 mitte KB d Mapped 00260000-00 88.0 com READONLY , 276000 mitte KB d Mapped 00280000-00 2bd000 244K B com mitte d READONLY , Mapped 002c0000-00 301000 260K B com mitte d READONLY, Mapped 003100
59、00-00 316000 24.0 KB com mitte d READONLY , Mapped 00320000-00 361000 260K B com mitte d READONLY , Mapped 00370000-00 378000 320K B com mitte d READWRITE Private 00380000-00 388000 320K B com mitte d READWRITE Private 00390000-00 391000 4.00 KB com mitte d READWRITE Private 003a0000-00 4.00 com REA
60、DWRITE Private 3a1000 KB mitte d 003b0000-00 3b3000 12.0 KB com mitte d READONLY , Mapped 003c0000-00 3c4000 16.0 KB com mitte d READWRITE Private 00400000-00 401000 4.00 KB com mitte d READONLY , Image, Module: ex4_1.exe 00401000-00 470000 444K B com mitte d EXECUTE. READ, Image 00470000-00 478000
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人水泥合同范本
- 免租金3個(gè)月租賃合同范本
- 2024年秋初中科學(xué)九年級(jí)下冊(cè)同步課件(浙教版)3.2.2 來(lái)自微生物的威脅
- 兒童嗆痰急救護(hù)理
- 噴灑服務(wù)合同范本
- 北京市公寓出租合同范本
- 有償獨(dú)家委托賣房合同范本
- 《白介素27、35及其共同亞基EBI3在尋常型銀屑病、白癜風(fēng)發(fā)病機(jī)制中作用的研究》
- 《JM化工存貨內(nèi)部控制優(yōu)化研究》
- 天然石材銷售合同三篇
- 2022年蘇教版四年級(jí)上冊(cè)數(shù)學(xué)計(jì)算題專項(xiàng)習(xí)題
- 高速公路交通安全設(shè)施工程施工組織設(shè)計(jì)
- 幼師專業(yè)職業(yè)生涯規(guī)劃書(shū)PPT課件(PPT 13頁(yè))
- 校園道路的施工設(shè)計(jì)方案
- 外研版(2019)書(shū)面表達(dá) 話題作文歸納12篇(含答案)
- 小學(xué)生個(gè)人簡(jiǎn)歷表(空表)【范本模板】
- 地表能量平衡
- 課題結(jié)題專家鑒定意見(jiàn)
- 快樂(lè)英語(yǔ)校本課程
- 軍事理論論文——我國(guó)周邊安全形勢(shì)及應(yīng)對(duì)策略
- 安利會(huì)員管理制度
評(píng)論
0/150
提交評(píng)論