版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、操作系統(tǒng)實(shí)驗(yàn)報(bào)告(windows部分)班級(jí):XX:學(xué)號(hào):3.1Windows“任務(wù)管理器”的進(jìn)程管理(實(shí)驗(yàn)估計(jì)時(shí)間:60分鐘)背景知識(shí)實(shí)驗(yàn)?zāi)康墓ぞ?準(zhǔn)備工作實(shí)驗(yàn)內(nèi)容與步驟背景知識(shí)Windows2000的任務(wù)管理器提供了用戶計(jì)算機(jī)上正在運(yùn)行的程序和進(jìn)程的相關(guān)信息,也顯示了最常用的度量進(jìn)程性能的單位。使用任務(wù)管理器,可以打開(kāi)監(jiān)視計(jì)算機(jī)性能的關(guān)鍵指示器,快速查看正在運(yùn)行的程序的狀態(tài),或者終止已停止響應(yīng)的程序。也可以使用多個(gè)參數(shù)評(píng)估正在運(yùn)行的進(jìn)程的活動(dòng),以及查看CPU和內(nèi)存使用情況的圖形和數(shù)據(jù)。其中:1)“應(yīng)用程序”選項(xiàng)卡顯示正在運(yùn)行程序的狀態(tài),用戶能夠結(jié)束、切換或者啟動(dòng)程序。2)“進(jìn)程”選項(xiàng)卡顯示正
2、在運(yùn)行的進(jìn)程信息。例如,可以顯示關(guān)于CPU和內(nèi)存使用情況、頁(yè)面錯(cuò)誤、句柄計(jì)數(shù)以及許多其他參數(shù)的信息。3)“性能”選項(xiàng)卡顯示計(jì)算機(jī)動(dòng)態(tài)性能,包括CPU和內(nèi)存使用情況的圖表,正在運(yùn)行的句柄、線程和進(jìn)程的總數(shù),物理、核心和認(rèn)可的內(nèi)存總數(shù)(KB)等。實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)在Windows任務(wù)管理器中對(duì)程序進(jìn)程進(jìn)行響應(yīng)的管理操作,熟悉操作系統(tǒng)進(jìn)程管理的概念,學(xué)習(xí)觀察操作系統(tǒng)運(yùn)行的動(dòng)態(tài)性能。工具/準(zhǔn)備工作在開(kāi)始本實(shí)驗(yàn)之前,請(qǐng)回顧教科書(shū)的相關(guān)內(nèi)容。需要準(zhǔn)備一臺(tái)運(yùn)行Windows2000Professional操作系統(tǒng)的計(jì)算機(jī)。實(shí)驗(yàn)內(nèi)容與步驟1.使用任務(wù)管理器終止進(jìn)程2.顯示其他進(jìn)程計(jì)數(shù)器3.更改正在運(yùn)行的程序的優(yōu)先級(jí)
3、啟動(dòng)并進(jìn)入Windows環(huán)境,單擊Ctrl+Alt+Del鍵,或者右鍵單擊任務(wù)欄,在快捷菜單中單擊“任務(wù)管理器”命令,打開(kāi)“任務(wù)管理器”窗口。在本次實(shí)驗(yàn)中,你使用的操作系統(tǒng)版本是:MicrosoftWindow20005.00.2195ServicePack4當(dāng)前機(jī)器中由你打開(kāi),正在運(yùn)行的應(yīng)用程序有:3.1Windows“任務(wù)管理器”的進(jìn)程管理,Windows部分Windows“任務(wù)管理器”的窗口由3個(gè)選項(xiàng)卡組成,分別是:應(yīng)用程序,進(jìn)程,性能當(dāng)前“進(jìn)程”選項(xiàng)卡顯示的欄目分別是(可移動(dòng)窗口下方的游標(biāo)/箭頭,或使窗口最大化進(jìn)行觀察):映像名稱,PID,CPU,CPU時(shí)間,內(nèi)存使用1.使用任務(wù)管理器
4、終止進(jìn)程步驟1:?jiǎn)螕簟斑M(jìn)程”選項(xiàng)卡,一共顯示了_22_個(gè)進(jìn)程。請(qǐng)?jiān)囍鴧^(qū)分一下,其中:系統(tǒng)(SYSTEM)進(jìn)程有_13_個(gè),填入表3-1中。表3-1實(shí)驗(yàn)記錄映像名稱用戶名CPU內(nèi)存使用MDM.exeSYSTEM002448Kspoolsv.exeSYSTEM001968Klsass.exeSYSTEM001568Kservices.exeSYSTEM003460Kwinlogon.exeSYSTEM001436Kcsrss.exeSYSTEM003556Ksmss.exeSYSTEM00384Knutsrv4.exeSYSTEM001036KsystemSYSTEM00180KSystemidl
5、eprocessSYSTEM9716Ksvchost.exeSYSTEM002036Kinetinfo.exeSYSTEM001756Ksmss.exeSYSTEM0052K服務(wù)(SERVICE)進(jìn)程有_3_個(gè),填入表3-2中。表3-2實(shí)驗(yàn)記錄映像名稱用戶名CPU內(nèi)存使用svchost.exeLOCALSERVICE001676Ksvchost.exeNETWORKSERVICE003124K00svchost.exeNETWORKSERVICE003744K用戶進(jìn)程有_6_個(gè),填入表3-3中。表3-3實(shí)驗(yàn)記錄映像名稱用戶名CPU內(nèi)存使用360tray.exestudents0015Kctfm
6、on.exestudents002204Kiexplore.exestudents0433244KExplorer.exestudents008524Ktaskmgr.exestudents002500KWINWORD.EXEstudents0326984K提示:在WindowsXP的“任務(wù)管理器”中,“進(jìn)程”選項(xiàng)卡增加了一個(gè)“用戶名”欄目,其中區(qū)分了SYSTEM、NETWORKSERVICE、LOCALSERVICE和用戶的不同進(jìn)程類別。步驟2:?jiǎn)螕粢K止的進(jìn)程,然后單擊“結(jié)束進(jìn)程”按鈕。注意:終止進(jìn)程時(shí)要小心。終止進(jìn)程有可能導(dǎo)致不希望發(fā)生的結(jié)果,包括數(shù)據(jù)丟失和系統(tǒng)不穩(wěn)定等。因?yàn)樵诒唤K止前,
7、進(jìn)程將沒(méi)有機(jī)會(huì)保存其狀態(tài)和數(shù)據(jù)。如果結(jié)束應(yīng)用程序,您將丟失未保存的數(shù)據(jù)。如果結(jié)束系統(tǒng)服務(wù),系統(tǒng)的某些部分可能無(wú)法正常工作。終止進(jìn)程,將結(jié)束它直接或間接創(chuàng)建的所有子進(jìn)程。例如,如果終止了電子程序(如Outlook98)的進(jìn)程樹(shù),那么同時(shí)也終止了相關(guān)的進(jìn)程,如MAPI后臺(tái)處理程序mapisp32.exe。請(qǐng)將終止某進(jìn)程后的操作結(jié)果與原記錄數(shù)據(jù)對(duì)比,發(fā)生了什么:結(jié)束進(jìn)程WINWORD.EXE,MicrosoftWord關(guān)閉了2.顯示其他進(jìn)程記數(shù)器在“進(jìn)程”選項(xiàng)卡上單擊“查看”菜單,然后單擊“選擇列”命令。單擊要增加顯示為列標(biāo)題的項(xiàng)目,然后單擊“確定”。為對(duì)進(jìn)程列表進(jìn)行排序,可在“進(jìn)程”選項(xiàng)卡上單擊要
8、根據(jù)其進(jìn)行排序的列標(biāo)題。而為了要反轉(zhuǎn)排序順序,可再次單擊列標(biāo)題。經(jīng)過(guò)調(diào)整,“進(jìn)程”選項(xiàng)卡現(xiàn)在顯示的項(xiàng)目分別是:映像名稱,PID,CPU時(shí)間,內(nèi)存使用,I/O寫(xiě)入,線程計(jì)數(shù)。通過(guò)對(duì)“查看”菜單的選擇操作,可以在“任務(wù)管理器”中更改顯示選項(xiàng):在“應(yīng)用程序”選項(xiàng)卡上,可以按詳細(xì)信息、大圖標(biāo)或小圖標(biāo)查看。在“性能”選項(xiàng)卡上,可以更改CPU記錄圖,并顯示內(nèi)核時(shí)間?!帮@示內(nèi)核時(shí)間”選項(xiàng)在“CPU使用”和“CPU使用記錄”圖表上添加紅線。紅線指示內(nèi)核操作占用的CPU資源數(shù)量。3.更改正在運(yùn)行的程序的優(yōu)先級(jí)要查看正在運(yùn)行的程序的優(yōu)先級(jí),可單擊“進(jìn)程”選項(xiàng)卡,單擊“查看”菜單,單擊“選擇列”-“基本優(yōu)先級(jí)”命令
9、,然后單擊“確定”按鈕。為更改正在運(yùn)行的程序的優(yōu)先級(jí),可在“進(jìn)程”選項(xiàng)卡上右鍵單擊您要更改的程序,指向“設(shè)置優(yōu)先級(jí)”,然后單擊所需的選項(xiàng)。更改進(jìn)程的優(yōu)先級(jí)可以使其運(yùn)行更快或更慢(取決于是提升還是降低了優(yōu)先級(jí)),但也可能對(duì)其他進(jìn)程的性能有相反的影響。記錄操作后所體會(huì)的結(jié)果:更改后速度略微加快,但效果并不明顯,因?yàn)镾ystemidleprocess代表系統(tǒng)空閑進(jìn)程,CPU顯示為97,證明計(jì)算機(jī)基本處于空閑狀態(tài),但如果太多的進(jìn)程同時(shí)占用CPU和內(nèi)存的話,調(diào)整優(yōu)先級(jí)會(huì)有效的提高或降低速度。在多處理器計(jì)算機(jī)上,用戶還可以給處理器指派進(jìn)程,將程序或進(jìn)程的執(zhí)行限制在選定的處理器上,但這有可能導(dǎo)致總體性能的下
10、降。3.1提高Windows2000內(nèi)存性能(實(shí)驗(yàn)估計(jì)時(shí)間:60分鐘)背景知識(shí)1.分頁(yè)過(guò)程2.內(nèi)存共享3.未分頁(yè)合并內(nèi)存與分頁(yè)合并內(nèi)存4.提高分頁(yè)性能耗盡內(nèi)存是Windows2000系統(tǒng)中最常見(jiàn)的問(wèn)題之一。當(dāng)系統(tǒng)耗盡內(nèi)存時(shí),所有進(jìn)程對(duì)內(nèi)存的總需求超出了系統(tǒng)的物理內(nèi)存總量。隨后,Windows2000必須借助它的虛擬內(nèi)存來(lái)維持系統(tǒng)和進(jìn)程的運(yùn)行。虛擬內(nèi)存機(jī)制是Windows2000操作系統(tǒng)的重要組成部分,但它的速度比物理內(nèi)存慢得多,因此,應(yīng)該盡量避免耗盡物理內(nèi)存資源,以免導(dǎo)致性能下降。解決內(nèi)存不足問(wèn)題的一個(gè)有效的方法就是添加更多的內(nèi)存。但是,一旦提供了更多的內(nèi)存,Windows2000很可以會(huì)立即
11、“吞食”。而事實(shí)上,添加更多的內(nèi)存并非總是可行的,也可能只是推遲了實(shí)際問(wèn)題的發(fā)生。因此,應(yīng)該相信,優(yōu)化所擁有的內(nèi)存是非常關(guān)鍵的。1.分頁(yè)過(guò)程當(dāng)Windows2000求助于硬盤(pán)以獲得虛擬內(nèi)存時(shí),這個(gè)過(guò)程被稱為分頁(yè)(paging)。分頁(yè)就是將信息從主內(nèi)存移動(dòng)到磁盤(pán)進(jìn)行臨時(shí)存儲(chǔ)的過(guò)程。應(yīng)用程序?qū)⑽锢韮?nèi)存和虛擬內(nèi)存視為一個(gè)獨(dú)立的實(shí)體,甚至不知道Windows2000使用了兩種內(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)交換到硬盤(pán)上的代碼或數(shù)據(jù)時(shí),系統(tǒng)要將數(shù)據(jù)
12、送回物理內(nèi)存,并在必要時(shí)將其他信息傳輸?shù)接脖P(pán)上,而硬盤(pán)與物理內(nèi)存在性能上的差異極大。例如,硬盤(pán)的訪問(wèn)時(shí)間通常大約為4-10毫秒,而物理內(nèi)存的訪問(wèn)時(shí)間為60us,甚至更快。2.內(nèi)存共享應(yīng)用程序經(jīng)常需要彼此通信和共享信息。為了提供這種能力,Windows2000必須允許訪問(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)用程序?qū)嵗浞种С謶?yīng)用程序代碼所需求的內(nèi)存數(shù)量都相對(duì)保
13、持不變。3.未分頁(yè)合并內(nèi)存與分頁(yè)合并內(nèi)存Windows2000決定了系統(tǒng)內(nèi)存組件哪些可以以及哪些不可以交換到磁盤(pán)上。顯然,不應(yīng)該將某些代碼(例如內(nèi)核)交換出主內(nèi)存。因此,Windows2000將系統(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)程交換到磁盤(pán)上,但是它臨時(shí)存儲(chǔ)在主內(nèi)存的這一部分,以防系統(tǒng)立刻需要它。在將系統(tǒng)進(jìn)程交換到磁盤(pán)上之前,Windows2000會(huì)交換其他進(jìn)程。未分頁(yè)合并內(nèi)存包含必須駐留在內(nèi)存中的占用代碼或數(shù)據(jù)。這種結(jié)構(gòu)類似于早期的MS-DOS程序使用的結(jié)構(gòu),在MS-DOS中,相
14、對(duì)較小的終止并駐留程序(TerminateandStayResident,TSR)在啟動(dòng)時(shí)加載到內(nèi)存中。這些程序在系統(tǒng)重新啟動(dòng)或關(guān)閉之前一直駐留在內(nèi)存的特定部分中。例如,防病毒程序?qū)⒓虞d為T(mén)SR程序,以預(yù)防可能的病毒襲擊。未分頁(yè)合并內(nèi)存中包含的進(jìn)程保留在主內(nèi)存中,并且不能交換到磁盤(pán)上。物理內(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ò),Windows2000將未分頁(yè)合并內(nèi)存限
15、制為256MB(在WindowsNT4中的限制為128MB)。根據(jù)系統(tǒng)中的物理內(nèi)存數(shù)量,復(fù)雜的算法在啟動(dòng)時(shí)動(dòng)態(tài)確定Windows2000系統(tǒng)上的未分頁(yè)合并內(nèi)存的最大數(shù)量。Windows2000內(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è)物理硬盤(pán)驅(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è)分區(qū)的分頁(yè)文件并不能提高硬盤(pán)驅(qū)動(dòng)器的能力。只有當(dāng)一個(gè)分區(qū)沒(méi)
16、有足夠的空間來(lái)包含整個(gè)分頁(yè)文件時(shí),才將分頁(yè)文件放在同一個(gè)硬盤(pán)的多個(gè)分區(qū)上。擁有多個(gè)物理驅(qū)動(dòng)器的服務(wù)器可以使用多個(gè)分頁(yè)文件來(lái)提高分頁(yè)性能。關(guān)鍵是將分頁(yè)請(qǐng)求的負(fù)載分布到多個(gè)物理硬盤(pán)上。實(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è)文件最重要的配置參數(shù)是大小。無(wú)論系統(tǒng)中有多少個(gè)分頁(yè)文件,如果它們的大小不合適,那
17、么系統(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計(jì)數(shù)器將持續(xù)高于每秒100頁(yè)。系統(tǒng)失效嚴(yán)重降低了系統(tǒng)的性能。此外,動(dòng)態(tài)擴(kuò)展分頁(yè)文件將導(dǎo)致碎片化。分頁(yè)文件將
18、散布在整個(gè)磁盤(pán)上而不是在啟動(dòng)時(shí)的連續(xù)空間中創(chuàng)建,從而增加了系統(tǒng)的開(kāi)銷,并導(dǎo)致系統(tǒng)性能降低。因此,應(yīng)該盡量避免系統(tǒng)增加分頁(yè)文件的大小。提示:1)在NTFS驅(qū)動(dòng)器上,總是至少保留25的空閑驅(qū)動(dòng)器空間,以確??梢栽谶B續(xù)的空間中創(chuàng)建分頁(yè)文件。2)Windows2000使用內(nèi)存數(shù)量的1.5倍作為分頁(yè)文件的最小容量,這個(gè)最小容量的兩倍作為最大容量。它減少了系統(tǒng)因?yàn)殄e(cuò)誤配置的分頁(yè)文件而崩潰的可能性。系統(tǒng)在崩潰之后能夠?qū)?nèi)存轉(zhuǎn)儲(chǔ)寫(xiě)入磁盤(pán),所以系統(tǒng)分區(qū)必須有一個(gè)至少等于物理內(nèi)存數(shù)量加上1的分頁(yè)文件。實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)對(duì)Windows2000“任務(wù)管理器”、“計(jì)算機(jī)管理”、“我的電腦”屬性、“系統(tǒng)信息”、“系統(tǒng)監(jiān)視器”
19、等程序的應(yīng)用,學(xué)習(xí)提高Windows內(nèi)存的性能,加深理解Windows操作系統(tǒng)的內(nèi)存管理功能,理解操作系統(tǒng)存儲(chǔ)管理、虛擬存儲(chǔ)管理的知識(shí)。工具/準(zhǔn)備工作在開(kāi)始本實(shí)驗(yàn)之前,請(qǐng)回顧教科書(shū)的相關(guān)內(nèi)容。需要準(zhǔn)備一臺(tái)運(yùn)行Windows2000Professional操作系統(tǒng)的計(jì)算機(jī)。實(shí)驗(yàn)內(nèi)容與步驟判斷和維護(hù)Windows2000的內(nèi)存性能有許多方法。步驟1:閱讀“背景知識(shí)”,請(qǐng)回答:1)什么是“分頁(yè)過(guò)程”?當(dāng)Windows2000求助于硬盤(pán)以獲得虛擬內(nèi)存時(shí),這個(gè)過(guò)程被稱為分頁(yè)(paging)。分頁(yè)就是將信息從主內(nèi)存移動(dòng)到磁盤(pán)進(jìn)行臨時(shí)存儲(chǔ)的過(guò)程。2)什么是“內(nèi)存共享”?是指兩個(gè)或多個(gè)進(jìn)程共用內(nèi)存中的相同區(qū)域
20、,其目的是節(jié)省內(nèi)存空間,實(shí)現(xiàn)進(jìn)程間通信,提高內(nèi)存空間的利用率。3)什么是“未分頁(yè)合并內(nèi)存”和“分頁(yè)合并內(nèi)存”?Windows2000中,未分頁(yè)合并內(nèi)存的最大限制是多少?分頁(yè)合并內(nèi)存是存儲(chǔ)遲早需要的可分頁(yè)代碼或數(shù)據(jù)的內(nèi)存部分。未分頁(yè)合并內(nèi)存包含必須駐留在內(nèi)存中的占用代碼或數(shù)據(jù)。Windows2000將未分頁(yè)合并內(nèi)存限制為256MB4)Windows2000分頁(yè)文件默認(rèn)設(shè)置的最小容量和最大容量是多少?Windows2000使用內(nèi)存數(shù)量的1.5倍作為分頁(yè)文件的最小容量,這個(gè)最小容量的兩倍作為最大容量。步驟2:登錄進(jìn)入Windows2000Professional。步驟3:查看包含多個(gè)實(shí)例的應(yīng)用程序的
21、內(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)诒?-1中記錄:表5-1實(shí)驗(yàn)記錄映像名稱PIDCPUCPU時(shí)間內(nèi)存使用WINWORD.EXE820060:00:1034848K“內(nèi)存使用”列顯示了該應(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ì)比情況:?jiǎn)?dòng)360安全衛(wèi)士,內(nèi)存使用量為2264K,遠(yuǎn)小于MicrosoftWord的內(nèi)容
22、使用量。步驟4:未分頁(yè)合并內(nèi)存。估算未分頁(yè)合并內(nèi)存大小的最簡(jiǎn)單方法是使用“任務(wù)管理器”。未分頁(yè)合并內(nèi)存的估計(jì)值顯示在“任務(wù)管理器”的“性能”選項(xiàng)卡的“核心內(nèi)存”部分??倲?shù)(K):56552分頁(yè)數(shù):45828未分頁(yè)(K):10724還可以使用“任務(wù)管理器”查看一個(gè)獨(dú)立進(jìn)程正在使用的未分頁(yè)合并內(nèi)存數(shù)量和分頁(yè)合并內(nèi)存數(shù)量。操作步驟如下:1)單擊“Windows任務(wù)管理器”的“進(jìn)程”選項(xiàng)卡,然后從“查看”菜單中選擇“選擇列”命令,顯示“進(jìn)程”選項(xiàng)卡的可查看選項(xiàng)。2)在“選擇列”對(duì)話框中,選定“頁(yè)面緩沖池”選項(xiàng)和“非頁(yè)面緩沖池”選項(xiàng)旁邊的復(fù)選框,然后單擊“確定”按鈕。返回Windows2000“任務(wù)管理
23、器”的“進(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)诒?-2中記錄:表5-2實(shí)驗(yàn)記錄映像名稱PID內(nèi)存使用頁(yè)面緩沖池非頁(yè)面緩沖池WINWORD.EXE82032276K241K24K從性能的角度來(lái)看,未分頁(yè)合并內(nèi)存越多,可以加載到這個(gè)空間的數(shù)據(jù)就越多。擁有的物理內(nèi)存越多,未分頁(yè)合并內(nèi)存就越多。但未分頁(yè)合并內(nèi)存被限制為256MB,因此添加超出這個(gè)限制的內(nèi)存對(duì)未分頁(yè)合并內(nèi)存沒(méi)有影響。步驟5:提高分頁(yè)性能。在Windows2000的安裝過(guò)程中,將使用連續(xù)的磁盤(pán)空間自動(dòng)創(chuàng)建分頁(yè)文件(pagefile.sys
24、)。用戶可以事先監(jiān)視變化的內(nèi)存需求并正確配置分頁(yè)文件,使得當(dāng)系統(tǒng)必須借助于分頁(yè)時(shí)的性能達(dá)到最高。雖然分頁(yè)文件一般都放在系統(tǒng)分區(qū)的根目錄下面,但這并不總是該文件的最佳位置。要想從分頁(yè)獲得最佳性能,應(yīng)該首先檢查系統(tǒng)的磁盤(pán)子系統(tǒng)的配置,以了解它是否有多個(gè)物理硬盤(pán)驅(qū)動(dòng)器。1)在“開(kāi)始”菜單中單擊“設(shè)置”“控制面板”命令,雙擊“管理工具”圖標(biāo),再雙擊“計(jì)算機(jī)管理”圖標(biāo)。2)在“計(jì)算機(jī)管理”窗口的左格選擇“磁盤(pán)管理”管理單元來(lái)查看系統(tǒng)的磁盤(pán)配置。請(qǐng)?jiān)诒?-3中記錄:表5-3實(shí)驗(yàn)記錄卷布局類型文件系統(tǒng)容量狀態(tài)C:磁盤(pán)分區(qū)基本FAT3219.52G狀態(tài)良好(系統(tǒng))D:磁盤(pán)分區(qū)基本FAT493M狀態(tài)良好E:磁盤(pán)
25、分區(qū)基本FAT3210.29G狀態(tài)良好如果系統(tǒng)只有一個(gè)硬盤(pán),那么建議應(yīng)該盡可能為系統(tǒng)配置額外的驅(qū)動(dòng)器。這是因?yàn)椋篧indows2000最多可以支持在多個(gè)驅(qū)動(dòng)器上分布的16個(gè)獨(dú)立的分頁(yè)文件。為系統(tǒng)配置多個(gè)分頁(yè)文件可以實(shí)現(xiàn)對(duì)不同磁盤(pán)I/O請(qǐng)求的并行處理,這將大大提高I/O請(qǐng)求的分頁(yè)文件性能。步驟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可用空間:8160MB初始大
26、小(MB):384MB最大值(MB):768MB所有驅(qū)動(dòng)器頁(yè)面文件大小的總數(shù):允許的最小值:2MB推薦:382MB當(dāng)前已分配:384MB4)要想將另一個(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ù)管理器??梢允褂谩叭蝿?wù)管理器”來(lái)簡(jiǎn)單地
27、檢查分頁(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ù):261616K可用數(shù):38304K系統(tǒng)緩存:66840K認(rèn)可用量(K)總數(shù):367380K限制:632708K峰值:425612K當(dāng)系統(tǒng)遇到分頁(yè)活動(dòng)增加的情況時(shí),提交的內(nèi)存數(shù)量
28、(“認(rèn)可總數(shù)”)就會(huì)增加。一旦它達(dá)到了“認(rèn)可限制”值,系統(tǒng)就需要擴(kuò)展分頁(yè)文件?!罢J(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)存可能不足。3.2Windows2000編程(實(shí)驗(yàn)估計(jì)時(shí)間:120分鐘)背景知識(shí)實(shí)驗(yàn)?zāi)康墓ぞ?準(zhǔn)備工作實(shí)驗(yàn)內(nèi)容與步驟背景知識(shí)Windows2000可以識(shí)別的應(yīng)用程序
29、包括控制臺(tái)應(yīng)用程序、GUI應(yīng)用程序和服務(wù)應(yīng)用程序。控制臺(tái)應(yīng)用程序可以創(chuàng)建GUI,GUI應(yīng)用程序可以作為服務(wù)來(lái)運(yùn)行,服務(wù)也可以向標(biāo)準(zhǔn)的輸出流寫(xiě)入數(shù)據(jù)。不同類型應(yīng)用程序間的惟一重要區(qū)別是其啟動(dòng)方法。Windows2000是以NT的技術(shù)構(gòu)建的,它提供了創(chuàng)建控制臺(tái)應(yīng)用程序的能力,使用戶可以利用標(biāo)準(zhǔn)的C+工具,如iostream庫(kù)中的cout和cin對(duì)象,來(lái)創(chuàng)建小型應(yīng)用程序。當(dāng)系統(tǒng)運(yùn)行時(shí),Windows2000的服務(wù)通常要向系統(tǒng)用戶提供所需功能。服務(wù)應(yīng)用程序類型需要ServiceMail()函數(shù),由服務(wù)控制管理器(SCM)加以調(diào)用。SCM是操作系統(tǒng)的集成部分,負(fù)責(zé)響應(yīng)系統(tǒng)啟動(dòng)以開(kāi)始服務(wù)、指導(dǎo)用戶控制或從
30、另一個(gè)服務(wù)中來(lái)的請(qǐng)求。其本身負(fù)責(zé)使應(yīng)用程序的行為像一個(gè)服務(wù)。通常,服務(wù)登錄到特殊的LocalSystem賬號(hào)下,此賬號(hào)具有與開(kāi)發(fā)人員創(chuàng)建的服務(wù)不同的權(quán)限。當(dāng)令C+編譯器創(chuàng)建可執(zhí)行程序時(shí),編譯器將源代碼編譯成OBJ文件,然后將其與標(biāo)準(zhǔn)庫(kù)相。產(chǎn)生的EXE文件是裝載器指令、機(jī)器指令和應(yīng)用程序的數(shù)據(jù)的集合。裝載器指令告訴系統(tǒng)從哪里裝載機(jī)器代碼。另一個(gè)裝載器指令告訴系統(tǒng)從哪里開(kāi)始執(zhí)行進(jìn)程的主線程。在進(jìn)行某些設(shè)置后,進(jìn)入開(kāi)發(fā)者提供的main()、ServiceMain()或WinMain()函數(shù)的低級(jí)入口點(diǎn)。機(jī)器代碼中包括有控制邏輯,它所做的事包括跳轉(zhuǎn)到WindowsAPI函數(shù),進(jìn)行計(jì)算或向磁盤(pán)寫(xiě)入數(shù)據(jù)等
31、。Windows允許開(kāi)發(fā)人員將大型應(yīng)用程序分為較小的、互相有關(guān)系的服務(wù)模塊,即動(dòng)態(tài)鏈接庫(kù)(DLL)代碼塊,在其中包含應(yīng)用程序所使用的機(jī)器代碼和應(yīng)用程序的數(shù)據(jù)。實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)對(duì)Windows2000編程,進(jìn)一步熟悉操作系統(tǒng)的基本概念,較好地理解Windows2000的結(jié)構(gòu)。工具/準(zhǔn)備工作在開(kāi)始本實(shí)驗(yàn)之前,請(qǐng)回顧教科書(shū)的相關(guān)內(nèi)容。需要做以下準(zhǔn)備:1)一臺(tái)運(yùn)行Windows2000Professional操作系統(tǒng)的計(jì)算機(jī)。2)計(jì)算機(jī)中需安裝VisualC+6.0專業(yè)版或企業(yè)版。實(shí)驗(yàn)內(nèi)容與步驟1.簡(jiǎn)單的控制臺(tái)應(yīng)用程序2.GUI應(yīng)用程序3.進(jìn)程對(duì)象1.簡(jiǎn)單的控制臺(tái)應(yīng)用程序我們先來(lái)創(chuàng)建一個(gè)名為“Hello,
32、World”的應(yīng)用程序。步驟1:登錄進(jìn)入Windows2000Professional。步驟2:在“開(kāi)始”菜單中單擊“程序”-“附件”-“記事本”命令,將清單3-l中的程序鍵入記事本中,并把代碼保存為Hello.cpp。清單3-1一個(gè)簡(jiǎn)單的Windows2000控制臺(tái)應(yīng)用程序/hello項(xiàng)目#includevoidmain()std:cout“Hello,Windows2000”CLHello.cpp來(lái)創(chuàng)建可執(zhí)行的Hello.EXE。操作能否正常進(jìn)行?如果不行,則可能的原因是什么?運(yùn)行不正常。缺少M(fèi)SPDB60.dll文件步驟4:運(yùn)行Hello.EXE程序,產(chǎn)生用戶鍵入的一行文字。運(yùn)行結(jié)果(如
33、果運(yùn)行不成功,則可能的原因是什么?):運(yùn)行不成功,connotexecute“clxx”.2.GUI應(yīng)用程序在下面的實(shí)驗(yàn)中,C+編譯器創(chuàng)建一個(gè)GUI應(yīng)用程序,代碼中包括了WinMain()方法,這是GUI類型的應(yīng)用程序的標(biāo)準(zhǔn)入口點(diǎn)。步驟5:在“開(kāi)始”菜單中單擊“程序”-“附件”-“記事本”命令,將清單3-2中的程序鍵入記事本中,并把代碼保存為3-2.cpp。清單3-2Windows2000的GUI應(yīng)用程序/msgbox項(xiàng)目#include/標(biāo)準(zhǔn)的include/告訴連接器與包括MessageBoxAPI函數(shù)的user32庫(kù)進(jìn)行連接#pragmacomment(lib,“user32.lib”)
34、/這是一個(gè)可以彈出信息框然后退出的筒單的應(yīng)用程序intAPIENTRYWinMain(HINSTANCE/*hInstance*/,HINSTANCE/*hPrevInstance*/,LPSTR/*lpCmdLine*/,int/*nCmdShow*/):MessageBox(NULL,/沒(méi)有父窗口“Hello,Windows2000”,/消息框中的文本Greetings”,/消息框標(biāo)題MB_OK);/其中只有一個(gè)OK按鈕/返回0以便通知系統(tǒng)不進(jìn)入消息循環(huán)return(0);也可以利用任何其他文本編輯器鍵入程序代碼,如果這樣,例如使用WORD來(lái)鍵入和編輯程序,則應(yīng)該注意什么問(wèn)題?標(biāo)點(diǎn)符號(hào)的中
35、英文切換。步驟6:在“命令提示符”窗口運(yùn)行CL.EXE,產(chǎn)生3-2.EXE文件:C:CL3-2.cpp在清單3-2的GUI應(yīng)用程序中,首先需要Windows.h頭文件,以便獲得傳送給WinMain()和MessageBox()API函數(shù)的數(shù)據(jù)類型定義。接著的pragma指令指示編譯器/連接器找到User32.LIB庫(kù)文件并將其與產(chǎn)生的EXE文件連接起來(lái)。這樣就可以運(yùn)行簡(jiǎn)單的命令行命令CLMsgBox.CPP來(lái)創(chuàng)建這一應(yīng)用程序,如果沒(méi)有pragma指令,則MessageBox()API函數(shù)就成為未定義的了。這一指令是VisualStudioC+編譯器特有的。接下來(lái)是WinMain()方法。其中有
36、四個(gè)由實(shí)際的低級(jí)入口點(diǎn)傳遞來(lái)的參數(shù)。hInstance參數(shù)用來(lái)裝入與代碼相連的圖標(biāo)或位圖一類的資源,無(wú)論何時(shí),都可用GetModuleHandle()API函數(shù)將這些資源提取出來(lái)。系統(tǒng)利用實(shí)例句柄來(lái)指明代碼和初始的數(shù)據(jù)裝在內(nèi)存的何處。句柄的數(shù)值實(shí)際上是EXE文件映像的基地址,通常為0 x00400000。下一個(gè)參數(shù)hPrevInstance是為向后兼容而設(shè)的,現(xiàn)在系統(tǒng)將其設(shè)為NULL。應(yīng)用程序的命令行(不包括程序的名稱)是lpCmdLine參數(shù)。另外,系統(tǒng)利用nCmdShow參數(shù)告訴應(yīng)用程序如何顯示它的主窗口(選項(xiàng)包括最小化、最大化和正常)。最后,程序調(diào)用MessageBox()API函數(shù)并退
37、出。如果在進(jìn)入消息循環(huán)之前就結(jié)束運(yùn)行的話,最后必須返回0。運(yùn)行結(jié)果(試將其中的信息與清單3-1程序的運(yùn)行結(jié)果進(jìn)行比較):Hello,Windows2000Greetings3.進(jìn)程對(duì)象操作系統(tǒng)將當(dāng)前運(yùn)行的應(yīng)用程序看作是進(jìn)程對(duì)象。利用系統(tǒng)提供的惟一的稱為句柄(HANDLE)的,就可與進(jìn)程對(duì)象交互。這一只對(duì)當(dāng)前進(jìn)程有效。本實(shí)驗(yàn)表示了一個(gè)簡(jiǎn)單的進(jìn)程句柄的應(yīng)用。在系統(tǒng)中運(yùn)行的任何進(jìn)程都可調(diào)用GetCurrentProcess()API函數(shù),此函數(shù)可返回標(biāo)識(shí)進(jìn)程本身的句柄。然后就可在Windows需要該進(jìn)程的有關(guān)情況時(shí),利用這一句柄來(lái)提供。步驟7:將清單3-3.cpp程序鍵入記事本中,并把代碼保存為3-
38、3.cpp。清單3-3獲得和使用進(jìn)程的句柄/prochandle項(xiàng)目#include#include/確定自己的優(yōu)先權(quán)的簡(jiǎn)單應(yīng)用程序voidmain()/從當(dāng)前進(jìn)程中提取句柄HANDLEhProcessThis=:GetCurrentProcess();/請(qǐng)求內(nèi)核提供該進(jìn)程所屬的優(yōu)先權(quán)類DWORDdwPriority=:GetPriorityClass(hProcessThis);/發(fā)出消息,為用戶描述該類std:cout“Currentprocesspriority:”;switch(dwPriority)caseHIGH_PRIORITY_CLASS:std:cout“High”;brea
39、k;caseNORMAL_PRIORITY_CLASS:std:cout“Normal”;break;caseIDLE_PRIORITY_CLASS:std:cout“Idle”;break;caseREALTIME_PRIORITY_CLASS:std:cout“Realtime”;break;default:std:cout“”;break;std:coutCL3-3.cpp運(yùn)行結(jié)果:HighMormalIdleRealtimeunknown步驟9:將清單3-4.cpp程序鍵入記事本中,并把代碼保存為3-4.cpp。清單3-4顯示如何找出系統(tǒng)中正在運(yùn)行的所有進(jìn)程,如何利用OpenProce
40、ss()API函數(shù)來(lái)獲得每一個(gè)訪問(wèn)進(jìn)程的進(jìn)一步信息。清單3-4利用句柄查出進(jìn)程的詳細(xì)信息/proclist項(xiàng)目#include#include#include/當(dāng)在用戶模式機(jī)內(nèi)核模式下都提供所耗時(shí)間時(shí),在內(nèi)核模式下進(jìn)行所耗時(shí)間的64位計(jì)算的幫助方法DWORDGetKernelModePercentage(constFILETIME&ftKernel,constFILETIME&ftUser)/將FILETIME結(jié)構(gòu)轉(zhuǎn)化為64位整數(shù)ULONGLONGqwKernel=(ULONGLONG)ftKernel.dwHighDateTime)32)+ftKernel.dwLowDateTime;ULO
41、NGLONGqwUser=(ULONGLONG)ftUser.dwHighDateTime)32)+ftUser.dwLowDateTime;/將消耗時(shí)間相加,然后計(jì)算消耗在內(nèi)核模式下的時(shí)間百分比ULONGLONGqwTotal=qwKernel+qwUser;DWORDdwPct=(DWORD)(ULONGLONG)100*qwKernel)/qwTotal);return(dwPct);/以下是將當(dāng)前運(yùn)行進(jìn)程名和消耗在內(nèi)核模式下的時(shí)間百分?jǐn)?shù)都顯示出來(lái)的應(yīng)用程序voidmain()/對(duì)當(dāng)前系統(tǒng)中運(yùn)行的進(jìn)程拍取“快照”HANDLEhSnapshot=:CreateToolhelp32Snaps
42、hot(TH32CSSNAPPROCESS,/提取當(dāng)前進(jìn)程0);/如果是當(dāng)前進(jìn)程,就將其忽略/初始化進(jìn)程入口PROCESSENTRY32pe;:ZeroMemory(&pe,sizeof(pe);pe.dwSize=sizeof(pe);/按所有進(jìn)程循環(huán)BOOLbMore=:Process32First(hSnapshot,&pe);while(bMore)/打開(kāi)用于讀取的進(jìn)程HANDLEhProcess=:OpenProcess(PROCESS_QUERY_INFORMATION,/指明要得到信息FALSE,/不必繼承這一句柄pe.th32ProcessID);/要打開(kāi)的進(jìn)程if(hProc
43、ess!=NULL)/找出進(jìn)程的時(shí)間FILETIMEftCreation,ftExit,ftKernelMode,ftUserMode;:GetProcessTimes(hProcess,/所感興趣的進(jìn)程&ftCreation,/進(jìn)程的啟動(dòng)時(shí)間(絕對(duì)的)&ftExit,/結(jié)束時(shí)間(如果有的話)&ftKernelMode,/在內(nèi)核模式下消耗的時(shí)間&ftUserMode);/在用戶模式下消耗的時(shí)間/計(jì)算內(nèi)核模式消耗的時(shí)間百分比DWORDdwPctKernel=:GetKernelModePercentage(ftKernelMode,/在內(nèi)核模式上消耗的時(shí)間ftUserMode);/在用戶模式下消
44、耗的時(shí)間/向用戶顯示進(jìn)程的某些信息std:cout“ProcessIDp:e.th3”2ProcessID“,EXEfile:”pe.szExeFile“,%inkernelmode:”dwPctKernelCL3-4.cpp運(yùn)行結(jié)果:ProcessID:,EXEfile:,%inkemelmode:3.2Windows2000內(nèi)存結(jié)構(gòu)(實(shí)驗(yàn)估計(jì)時(shí)間:120分鐘)背景知識(shí)實(shí)驗(yàn)?zāi)康墓ぞ?準(zhǔn)備工作實(shí)驗(yàn)內(nèi)容與步驟背景知識(shí)Windows2000是32位的操作系統(tǒng),它使計(jì)算機(jī)CPU可以用32位地址對(duì)32位內(nèi)存塊進(jìn)行操作。內(nèi)存中的每一個(gè)字節(jié)都可以用一個(gè)32位的指針來(lái)尋址。這樣,最大的存儲(chǔ)空間就是232字節(jié)
45、或4000兆字節(jié)(4GB)。這樣,在Windows下運(yùn)行的每一個(gè)應(yīng)用程序都認(rèn)為能獨(dú)占可能的4GB大小的空間。而另一方面,實(shí)際上沒(méi)有幾臺(tái)機(jī)器的RAM能達(dá)到4GB,更不必說(shuō)讓每個(gè)進(jìn)程都獨(dú)享4GB內(nèi)存了。Windows在幕后將虛擬內(nèi)存(virtualmemory,VM)地址映射到了各進(jìn)程的物理內(nèi)存地址上。而所謂物理內(nèi)存是指計(jì)算機(jī)的RAM和由Windows分配到用戶驅(qū)動(dòng)器根目錄上的換頁(yè)文件。物理內(nèi)存完全由系統(tǒng)管理。實(shí)驗(yàn)?zāi)康?)通過(guò)實(shí)驗(yàn)了解Windows2000內(nèi)存的使用,學(xué)習(xí)如何在應(yīng)用程序中管理內(nèi)存,體會(huì)Windows應(yīng)用程序內(nèi)存的簡(jiǎn)單性和自主防護(hù)能力。2)了解Windows2000的內(nèi)存結(jié)構(gòu)和虛擬內(nèi)
46、存的管理,進(jìn)而了解進(jìn)程堆和Windows為使用內(nèi)存而提供的一些擴(kuò)展功能。工具/準(zhǔn)備工作在開(kāi)始本實(shí)驗(yàn)之前,請(qǐng)回顧教科書(shū)的相關(guān)內(nèi)容。您需要做以下準(zhǔn)備:1)一臺(tái)運(yùn)行Windows2000Professional操作系統(tǒng)的計(jì)算機(jī)。2)計(jì)算機(jī)中需安裝VisualC+6.0專業(yè)版或企業(yè)版。實(shí)驗(yàn)內(nèi)容與步驟Windows提供了一個(gè)API即GetSystemInfo(),以便用戶能檢查系統(tǒng)中虛擬內(nèi)存的一些特性。清單5-1顯示了如何調(diào)用該函數(shù)以及顯示系統(tǒng)中當(dāng)前內(nèi)存的參數(shù)。步驟1:登錄進(jìn)入Windows2000Professional。步驟2:在“開(kāi)始”菜單中單擊“程序-MicrosoftVisualStudio6
47、.0MicrosoftVisualC+6.0”命令,進(jìn)入VisualC+窗口。步驟3:在工具欄單擊“打開(kāi)”按鈕,在“打開(kāi)”對(duì)話框中找到并打開(kāi)實(shí)驗(yàn)源程序5-1.cpp。清單5-1獲取有關(guān)系統(tǒng)的內(nèi)存設(shè)置的信息/工程vmeminfo#include#include#include#include#pragmacomment(lib,“shlwapi.lib”)voidmain()/首先獲得系統(tǒng)信息SYSTEM_INFOsi;:ZeroMemory(&si,sizeof(si);:GetSystemInfo(&si);/使用外殼輔助程序?qū)σ恍┏叽邕M(jìn)行格式化TCHARszPageSizeMAX_PATH
48、;:StrFormatByteSize(si.dwPageSize,szPageSize,MAX_PATH);DWORDdwMemSize=(DWORD)si.lpMaximumApplicationAddress-(DWORD)si.lpMinimumApplicationAddress;TCHARszMemSizeMAX_PATH;:StrFormatByteSize(dwMemSize,szMemSize,MAX_PATH);/將內(nèi)存信息顯示出來(lái)std:cout“Virtualmemorypagesize:”szPageSizestd:endl;std:cout.fill(,0?);st
49、d:cout“Minimumapplicationaddress:0 x”std:hexstd:setw(8)(DWORD)si.lpMinimumApplicationAddressstd:endl;std:cout“Maximumapplicationaddress:0 x”std:hexstd:setw(8)(DWORD)si.lpMaximumApplicationAddressstd:endl;std:cout“Totalavailablevirtualmemory:”szMemSizestd:endl;步驟4:?jiǎn)螕簟癇uild”菜單中的“Compile5-1.cpp”命令,并單擊“
50、是”按鈕確認(rèn)。系統(tǒng)對(duì)5-1.cpp進(jìn)行編譯。步驟5:編譯完成后,單擊“Build”菜單中的“Build5-1.exe”命令,建立5-1.exe可執(zhí)行文件。操作能否正常進(jìn)行?如果不行,則可能的原因是什么?直接復(fù)制源程序會(huì)出錯(cuò)。原因:標(biāo)點(diǎn)不是英文輸入法下半角的標(biāo)點(diǎn)。更改后可以正常運(yùn)行。結(jié)果是:步驟6:在工具欄單擊“ExecuteProgram”(執(zhí)行程序)按鈕,執(zhí)行5-1.exe程序。運(yùn)行結(jié)果(如果運(yùn)行不成功,則可能的原因是什么?):1)虛擬內(nèi)存每頁(yè)容量為:4.00kb2)最小應(yīng)用地址:0 x000100003)最大應(yīng)用地址:0 x7ffeffff4)當(dāng)前可供應(yīng)用程序使用的內(nèi)存空間為:1.99GB
51、5)當(dāng)前計(jì)算機(jī)的實(shí)際內(nèi)存大小為:閱讀和分析程序5-1,請(qǐng)回答問(wèn)題:1)理論上每個(gè)Windows應(yīng)用程序可以獨(dú)占的最大存儲(chǔ)空間是:2GB在清單5-1程序中,用于檢查系統(tǒng)中虛擬內(nèi)存特性的API函數(shù)是:GetSystemInfo()2)提示:可供應(yīng)用程序使用的內(nèi)存空間實(shí)際上已經(jīng)減去了開(kāi)頭與結(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í)行。也就是說(shuō),假如用戶有一個(gè)NULL指針(地址為0),但仍試圖在此之前很近的地址處使用另一個(gè)指針,這將因?yàn)樵噲D從更低的保留區(qū)域讀寫(xiě)
52、數(shù)據(jù),從而產(chǎn)生意外錯(cuò)誤并終止程序的執(zhí)行。3.3Windows2000進(jìn)程的“一生”(實(shí)驗(yàn)估計(jì)時(shí)間:120分鐘)背景知識(shí)實(shí)驗(yàn)?zāi)康墓ぞ?準(zhǔn)備工作實(shí)驗(yàn)內(nèi)容與步驟背景知識(shí)1.創(chuàng)建進(jìn)程2.正在運(yùn)行的進(jìn)程3.終止進(jìn)程Windows所創(chuàng)建的每個(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()API函數(shù)終止。通常應(yīng)用程序的框架負(fù)責(zé)調(diào)用ExitProcess()函數(shù)。對(duì)于C+運(yùn)行庫(kù)來(lái)說(shuō),這一調(diào)用發(fā)生在應(yīng)用程序的main()函數(shù)返回之后。1.創(chuàng)建進(jìn)程CreateProcess
53、()調(diào)用的核心參數(shù)是可執(zhí)行文件運(yùn)行時(shí)的文件名及其命令行。表3-4詳細(xì)地列出了每個(gè)參數(shù)的類型和名稱。表3-4CreateProcess()函數(shù)的參數(shù)參數(shù)名稱使用目的LPCTSTRlpApplivationName全部或部分地指明包括可執(zhí)行代碼的EXE文件的文件名LPCTSTRlpCommandLine向可執(zhí)行文件致的參數(shù)LPSECURIITY_ATTRIBUTES返回進(jìn)程句柄的安全屬性。主要指明這一句柄是否應(yīng)該由其他lpProcessAttributes子進(jìn)程所繼承LPSECURIITY_ATTRIBUTES返回進(jìn)程的主線程的句柄的安全屬性lpThreadAttributesBOOLbInher
54、itHandle一種標(biāo)志,告訴系統(tǒng)允許新進(jìn)程繼承創(chuàng)建者進(jìn)程的句柄DWORDdwCreationFlage特殊的創(chuàng)建標(biāo)志(如CREATE_SUSPENDED)的位標(biāo)記LPVOIDlpEnvironment向新進(jìn)程致的一套環(huán)境變量;如為null值則致調(diào)用者環(huán)境LPCTSTRlpCurrentDirectory新進(jìn)程的啟動(dòng)目錄STARTUPINFOlpStartupInfoSTARTUPINFO結(jié)構(gòu),包括新進(jìn)程的輸入和輸出配置的詳情L(zhǎng)PPROCESS_INFORMATION調(diào)用的結(jié)果塊;致新應(yīng)用程序的進(jìn)程和主線程的句柄和IDlpProcessInformation可以指定第一個(gè)參數(shù),即應(yīng)用程序的名稱
55、,其中包括相對(duì)于當(dāng)前進(jìn)程的當(dāng)前目錄的全路徑或者利用搜索方法找到的路徑;lpCommandLine參數(shù)允許調(diào)用者向新應(yīng)用程序致數(shù)據(jù);接下來(lái)的三個(gè)參數(shù)與進(jìn)程和它的主線程以及返回的指向該對(duì)象的句柄的安全性有關(guān)。然后是標(biāo)志參數(shù),用以在dwCreationFlags參數(shù)中指明系統(tǒng)應(yīng)該給予新進(jìn)程什么行為。經(jīng)常使用的標(biāo)志是CREATE_SUSPNDED,告訴主線程立刻暫停。當(dāng)準(zhǔn)備好時(shí),應(yīng)該使用ResumeThread()API來(lái)啟動(dòng)進(jìn)程。另一個(gè)常用的標(biāo)志是CREATE_NEW_CONSOLE,告訴新進(jìn)程啟動(dòng)自己的控制臺(tái)窗口,而不是利用父窗口。這一參數(shù)還允許設(shè)置進(jìn)程的優(yōu)先級(jí),用以向系統(tǒng)指明,相對(duì)于系統(tǒng)中所有其
56、他的活動(dòng)進(jìn)程來(lái)說(shuō),給此進(jìn)程多少CPU時(shí)間。接著是CreateProcess()函數(shù)調(diào)用所需要的三個(gè)通常使用缺省值的參數(shù)。第一個(gè)參數(shù)是lpEnvironment參數(shù),指明為新進(jìn)程提供的環(huán)境;第二個(gè)參數(shù)是lpCurrentDirectory,可用于向主創(chuàng)進(jìn)程致與缺省目錄不同的新進(jìn)程使用的特殊的當(dāng)前目錄;第三個(gè)參數(shù)是STARTUPINFO數(shù)據(jù)結(jié)構(gòu)所必需的,用于在必要時(shí)指明新應(yīng)用程序的主窗口的外觀。CreateProcess()的最后一個(gè)參數(shù)是用于新進(jìn)程對(duì)象及其主線程的句柄和ID的返回值緩沖區(qū)。以PROCESS_INFORMATION結(jié)構(gòu)中返回的句柄調(diào)用CloseHandle()API函數(shù)是重要的,因
57、為如果不將這些句柄關(guān)閉的話,有可能危及主創(chuàng)進(jìn)程終止之前的任何未釋放的資源。2.正在運(yùn)行的進(jìn)程如果一個(gè)進(jìn)程擁有至少一個(gè)執(zhí)行線程,則為正在系統(tǒng)中運(yùn)行的進(jìn)程。通常,這種進(jìn)程使用主線程來(lái)指示它的存在。當(dāng)主線程結(jié)束時(shí),調(diào)用ExitProcess()API函數(shù),通知系統(tǒng)終止它所擁有的所有正在運(yùn)行、準(zhǔn)備運(yùn)行或正在掛起的其他線程。當(dāng)進(jìn)程正在運(yùn)行時(shí),可以查看它的許多特性,其中少數(shù)特性也允許加以修改。首先可查看的進(jìn)程特性是系統(tǒng)進(jìn)程標(biāo)識(shí)符(PID),可利用GetCurrentProcessId()API函數(shù)來(lái)查看,與GetCurrentProcess()相似,對(duì)該函數(shù)的調(diào)用不能失敗,但返回的PID在整個(gè)系統(tǒng)中都可使
58、用。其他的可顯示當(dāng)前進(jìn)程信息的API函數(shù)還有GetStartupInfo()和GetProcessShutdownParameters(),可給出進(jìn)程存活期內(nèi)的配置詳情。通常,一個(gè)進(jìn)程需要它的運(yùn)行期環(huán)境的信息。例如API函數(shù)GetModuleFileName()和GetCommandLine(),可以給出用在CreateProcess()中的參數(shù)以啟動(dòng)應(yīng)用程序。在創(chuàng)建應(yīng)用程序時(shí)可使用的另一個(gè)API函數(shù)是IsDebuggerPresent()??衫肁PI函數(shù)GetGuiResources()來(lái)查看進(jìn)程的GUI資源。此函數(shù)既可返回指定進(jìn)程中的打開(kāi)的GUI對(duì)象的數(shù)目,也可返回指定進(jìn)程中打開(kāi)的USE
59、R對(duì)象的數(shù)目。進(jìn)程的其他性能信息可通過(guò)GetProcessIoCounters()、GetProcessPriorityBoost()、GetProcessTimes()和GetProcessWorkingSetSize()API得到。以上這幾個(gè)API函數(shù)都只需要具有PROCESS_QUERY_INFORMATION訪問(wèn)權(quán)限的指向所感興趣進(jìn)程的句柄。另一個(gè)可用于進(jìn)程信息查詢的API函數(shù)是GetProcessVersion()。此函數(shù)只需感興趣進(jìn)程的PID(進(jìn)程標(biāo)識(shí)號(hào))。本實(shí)驗(yàn)程序清單3-6中列出了這一API函數(shù)與GetVersionEx()的共同作用,可確定運(yùn)行進(jìn)程的系統(tǒng)的版本號(hào)。3.終止進(jìn)程
60、所有進(jìn)程都是以調(diào)用ExitProcess()或者TerminateProcess()函數(shù)結(jié)束的。但最好使用前者而不要使用后者,因?yàn)檫M(jìn)程是在完成了它的所有的關(guān)閉“職責(zé)”之后以正常的終止方式來(lái)調(diào)用前者的。而外部進(jìn)程通常調(diào)用后者即突然終止進(jìn)程的進(jìn)行,由于關(guān)閉時(shí)的途徑不太正常,有可能引起錯(cuò)誤的行為。TerminateProcess()API函數(shù)只要打開(kāi)帶有PROCESS_TERMINATE訪問(wèn)權(quán)的進(jìn)程對(duì)象,就可以終止進(jìn)程,并向系統(tǒng)返回指定的代碼。這是一種“野蠻”的終止進(jìn)程的方式,但是有時(shí)卻是需要的。如果開(kāi)發(fā)人員確實(shí)有機(jī)會(huì)來(lái)設(shè)計(jì)“謀殺”(終止別的進(jìn)程的進(jìn)程)和“受害”進(jìn)程(被終止的進(jìn)程)時(shí),應(yīng)該創(chuàng)建一個(gè)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 調(diào)解會(huì)統(tǒng)計(jì)報(bào)送制度
- 行政處罰告知結(jié)果反饋時(shí)效制度
- 2026上半年黑龍江省海員總醫(yī)院(黑龍江省第六醫(yī)院)事業(yè)單位招聘8人參考考試題庫(kù)附答案解析
- 河南輔警考試試題及答案
- 2026福建福州經(jīng)濟(jì)技術(shù)開(kāi)發(fā)區(qū)機(jī)關(guān)事務(wù)服務(wù)中心招聘編外聘用人員1人備考考試試題附答案解析
- 2026新疆北京銀行烏魯木齊分行招聘?jìng)淇伎荚囋囶}附答案解析
- 2026廣東警官學(xué)院保衛(wèi)工作部校衛(wèi)隊(duì)隊(duì)員招聘?jìng)淇伎荚囶}庫(kù)附答案解析
- 2026春季夢(mèng)想靠岸招商銀行佛山分行校園招聘參考考試題庫(kù)附答案解析
- 2026陜西西安交通大學(xué)第一附屬醫(yī)院肝膽外科招聘派遣制助理醫(yī)生參考考試題庫(kù)附答案解析
- 2026廣西梧州市面向社會(huì)公開(kāi)考試招聘中小學(xué)(幼兒園)教師260人參考考試題庫(kù)附答案解析
- 病毒性肺炎診療指南(2025年版)
- 2026年度新疆兵團(tuán)草湖項(xiàng)目區(qū)公安局招聘警務(wù)輔助人員工作(100人)筆試參考題庫(kù)及答案解析
- GB/T 46778-2025精細(xì)陶瓷陶瓷造粒粉壓縮強(qiáng)度試驗(yàn)方法
- 工程管理費(fèi)合同協(xié)議
- 協(xié)助審計(jì)協(xié)議書(shū)范本
- 采購(gòu)主管年終工作總結(jié)
- 電力公司安全第一課課件
- 物業(yè)現(xiàn)場(chǎng)管理培訓(xùn)課件
- 數(shù)據(jù)訪問(wèn)控制策略分析報(bào)告
- 2025年市場(chǎng)監(jiān)管局招聘崗位招聘面試模擬題及案例分析解答
- 子宮內(nèi)膜異位癥病因課件
評(píng)論
0/150
提交評(píng)論