操作系統(tǒng)教程_第1頁
操作系統(tǒng)教程_第2頁
操作系統(tǒng)教程_第3頁
操作系統(tǒng)教程_第4頁
操作系統(tǒng)教程_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

操作系統(tǒng)教程實(shí)驗(yàn)報(bào)告學(xué)號(hào):姓名:班級(jí):計(jì)123指導(dǎo)教師:實(shí)驗(yàn)一WINDOWS進(jìn)程初識(shí)1、 實(shí)驗(yàn)?zāi)康模?) 學(xué)會(huì)使用VC編寫基本的Win32ConsolApplication(控制臺(tái)應(yīng)用程序)。(2) 掌握WINDOWSAPI的使用方法。(3) 編寫測(cè)試程序,理解用戶態(tài)運(yùn)行和核心態(tài)運(yùn)行。2、 實(shí)驗(yàn)內(nèi)容和步驟(1)編寫基本的Win32ConsolApplication步驟1:登錄進(jìn)入Windows,啟動(dòng)VC++6.0。步驟2:在“FILE”菜單中單擊“NEW”子菜單,在“projects”選項(xiàng)卡中選擇“Win32ConsolApplication”,然后在“Projectname”處輸入工程名,在“Location”處輸入工程目錄。創(chuàng)建一個(gè)新的控制臺(tái)應(yīng)用程序工程。步驟3:在“FILE”菜單中單擊“NEW”子菜單,在“Files”選項(xiàng)卡中選擇“C++SourceFile”,然后在“File”處輸入C/C++源程序的文件名。步驟4:將清單1-1所示的程序清單復(fù)制到新創(chuàng)建的C/C++源程序中。編譯成可執(zhí)行文件。步驟5:在“開始”菜單中單擊“程序”-“附件”-“命令提示符”命令,進(jìn)入Windows“命令提示符”窗口,然后進(jìn)入工程目錄中的debug子目錄,執(zhí)行編譯好的可執(zhí)行程序:運(yùn)行結(jié)果(如果運(yùn)行不成功,則可能的原因是什么?):Hello,Win32ConsolApplication(2)計(jì)算進(jìn)程在核心態(tài)運(yùn)行和用戶態(tài)運(yùn)行的時(shí)間步驟1:按照(1)中的步驟創(chuàng)建一個(gè)新的“Win32ConsolApplication^X程,然后將清單1-2中的程序拷貝過來,編譯成可執(zhí)行文件。步驟2:在創(chuàng)建一個(gè)新的“Win32ConsolApplication”工程,程序的參考程序如清單1-3所示,編譯成可執(zhí)行文件并執(zhí)行。步驟3:在“命令提示符”窗口中運(yùn)行步驟1中生成的可執(zhí)行文件,測(cè)試步驟2中可執(zhí)行文件在核心態(tài)運(yùn)行和用戶態(tài)運(yùn)行的時(shí)間。步驟4:運(yùn)行結(jié)果(如果運(yùn)行不成功,則可能的原因是什么?):步驟5:分別屏蔽While循環(huán)中的兩個(gè)for循環(huán),或調(diào)整兩個(gè)for循環(huán)的次數(shù),寫出運(yùn)行結(jié)果。C:Misers\pc>K: -Search\GeaFch2kDebug-M-a.exe1_3.屏蔽i循環(huán):processID=8032,EKEflie=1_3.exeinKerne1mode:66屏蔽i循環(huán):Ic:Misers\pc>K: -Gearch arch2KDebugM._2_exe1_3_exeproGcssID=2916,EKEfile=1_3.axe,inKernelmode=36屏蔽j循環(huán)::MJsers\pc>K;、操作系統(tǒng)實(shí)驗(yàn)SOS-Scare驗(yàn)1\Sbhi'(;1i2\DeliugpocessID:5480,EXEFile:1_3_exe,zdinKernelmode:60調(diào)整循環(huán)變量調(diào)整循環(huán)變量i的循環(huán)次數(shù):i<10調(diào)整循環(huán)變量j的循環(huán)次數(shù):j<10C:UJs:&i"s\pc:>K:、操作系統(tǒng)實(shí)驗(yàn)\OG-Geapch\^驗(yàn)調(diào)整循環(huán)變量j的循環(huán)次數(shù):j<10C:UJs:&i"s\pc:>K:、操作系統(tǒng)實(shí)驗(yàn)\OG-Geapch\^驗(yàn)L\Geai*cjli2M)eljU!ID:4700,EKEFile=i_3.exe,KdinKernelmode=633、 實(shí)驗(yàn)結(jié)論核心態(tài)是操作系統(tǒng)內(nèi)核所運(yùn)行的模式,運(yùn)行在該模式的代碼,可以無限制地對(duì)系統(tǒng)存儲(chǔ)、外部設(shè)備進(jìn)行訪問;操作系統(tǒng)的用戶態(tài)通常是在相應(yīng)的CPU用戶態(tài)中運(yùn)行代碼。核心態(tài)就是一個(gè)直接的代碼運(yùn)行,即win32consolApplication下代碼運(yùn)行;而用戶態(tài)是在DOS下運(yùn)行的,對(duì)編譯好的程序進(jìn)行的運(yùn)行,核心態(tài)速度較快,而用戶態(tài)的運(yùn)行需要時(shí)間較長(zhǎng)。也就是說核心態(tài)就是當(dāng)CPU正在運(yùn)行內(nèi)核代碼的時(shí)候,用戶態(tài)就是CPU正運(yùn)行用戶代碼的時(shí)候。實(shí)驗(yàn)二進(jìn)程管理1、 實(shí)驗(yàn)?zāi)康?) 通過創(chuàng)建進(jìn)程、觀察正在運(yùn)行的進(jìn)程和終止進(jìn)程的程序設(shè)計(jì)和調(diào)試操作,進(jìn)一步熟悉操作系統(tǒng)的進(jìn)程概念,理解Windows進(jìn)程的“一生”。2) 通過閱讀和分析實(shí)驗(yàn)程序,學(xué)習(xí)創(chuàng)建進(jìn)程、觀察進(jìn)程、終止進(jìn)程以及父子進(jìn)程同步的基本程序設(shè)計(jì)方法。2、 實(shí)驗(yàn)內(nèi)容和步驟(1).創(chuàng)建進(jìn)程本實(shí)驗(yàn)顯示了創(chuàng)建子進(jìn)程的基本框架。該程序只是再一次地啟動(dòng)自身,顯示它的系統(tǒng)進(jìn)程ID和它在進(jìn)程列表中的位置。步驟1:創(chuàng)建一個(gè)“Win32ConsolApplication”工程,然后拷貝清單2-1中的程序,編譯成可執(zhí)行文件。步驟2:在“命令提示符”窗口運(yùn)行步驟1中生成的可執(zhí)行文件。運(yùn)行結(jié)果:彰U:\廿口山1_1廿3姑盜氣-JJ:\庠作歡芍t買撤機(jī)怛-踞C:XDocumentsandSettings\jszx>D:、探rch2ProcessID:2724,CloneID:0Process1^=2720,Clone13):1ProcessID:3152.Clone1B=2ProcessID:2768CloneID:3*rocessID:2772,CloneID:4process10=2792,CloneID=5按下ctrl+alt+del,調(diào)用windows的任務(wù)管理器,記錄進(jìn)程相關(guān)的行為屬性:仔務(wù) 狀態(tài)正猝行正在運(yùn)行正在遠(yuǎn)行正在運(yùn)行正在運(yùn)行正在運(yùn)行正在運(yùn)行IE茬運(yùn)行正在運(yùn)行正在遙行C:\WI]HKhfS\5y5tem32\.Giid.ex:a-D:Y操作系統(tǒng)實(shí)馳\。37磨此涕1一一一I■)盹成芯M -Mi C++-[2-l.epp]翌g實(shí)驗(yàn)指導(dǎo)書(新)1.doe-MicrQSofttferdDrvsin函^:l麋住系妹實(shí)驗(yàn)如色arehl實(shí)驗(yàn)?“由豈at 一也戲B:k麋住系統(tǒng)賣姓山粉Marehl賣Ifewi曜電ar^hZ.礎(chǔ)磨D:'噪住系統(tǒng)實(shí)驗(yàn)1。$~腿8^&\實(shí)驗(yàn)5:\麋佳系統(tǒng)實(shí)珍hOS-如arch、實(shí)驗(yàn)。磨c:iG'\映摘名禰nt僉引cru或間內(nèi)存便用頁而錯(cuò)誤虛甜內(nèi)」..豆面鰥"赫數(shù)AUG.EXE1102-0000:00:00228虹tOOT1.32BK B9K1015ClSillIt.金室電[蹬000ftiOOlOiM泗ug,蛔L&0S6K 117K217S§4Cfhd.1$S2-0009:00:0093?K1,1922,136K 5ftK3014CSRSS.EHE7M000o:oo-比4,49&K13,011<068E 伐&KU71176emu.sem000o;oocoB23KuoeL也3K SOK&31£8EXPIOEEEEXE網(wǎng)0005.11?K9B.STS峪哄E 角1KT4515察LSA5S.ESSE旬40000:00:0297&K&595碼34$K B9iK300154HlEiieV.之蹈000由:oc:頃3,4I4BK20,H314,血K 1施K226?4浸mmui-exeSOT000?!00:003,032K4.039168K )14K34,996J64rvsio.exe29=830009:00:00?,26<K£5茹1.300K 59K106227,m遷1ch2.職定1齡Q00?;QO;OQ1,禎普K£992£0K 15K會(huì)唯Ll] □fitftrchZ.tx.t26000fitftrchZ.tx.t26000CDo:no:oo904K221KCftTChZ.ZM400D由:oo:glj19?K2995€UTCh2.電用自2M0000o:oo;oo1,炭K£99seurchZ.eseg0on0:00:001,19?K299SFAYKES.EKE000a:QQ;£lfJSIK86.911SfflSS.EXE000(J;0000WK遇16SE12K1010260KISK1110湖KISK1110湖E15K1110<572K7?K用9ITq176K5K£13a步驟3:在“命令提示符”窗口加入?yún)?shù)重新運(yùn)行生成的可執(zhí)行文件。運(yùn)行結(jié)果:G:KDocumentsand.rch238e11ings\jszx>D:、操作系統(tǒng)實(shí)驗(yàn)MOS一3已己-ch、實(shí)驗(yàn)2Xsearc112XDebiigXseaCloneID:3 pFDCESgID:2056,ProcessID:2052,CloneI]);4ProcessID:2288,CloneID:5按下ctrl+alt+del,調(diào)用windows的任務(wù)官理器,記錄進(jìn)程相關(guān)的仃為屬性:任務(wù)狀態(tài)函C:\tfINDOWS\SyStem32\ciidexe一D:l操作系統(tǒng)實(shí)縊&-Searc:K...正在運(yùn)行Debug正在運(yùn)行See:di-cti2一MiorosoftViEU:dlC++-[2-1.cpj]正在運(yùn)行也”實(shí)曜指導(dǎo)節(jié)(■新J:血c-MicrosDftWord正在壓勺K^rvsin正在話虧函DC操ft系或更驗(yàn)T3而*ch\實(shí)驗(yàn)2'i.searehZ'i.Debug'i.sea£ch2.exe正在運(yùn),亍D:L操作系茹實(shí)驗(yàn)'MJS-Se-arch、.實(shí)驗(yàn)E1醇arcli2\Debiig1''.s4cK2.txe正在運(yùn)廳*像堀彌ECPVrrv時(shí)間內(nèi)存值用IR面錯(cuò)謖虛抄沏?-英面稚.,-基本…鼬程魏W工…Wj&.EKH1192000:00:00226EC1/007lr^0EC紋EC10154ClF■航牌q1832000:00:013,216K土66916,056K1ITK標(biāo)準(zhǔn)217594end.屹就占165£moo0:00:0013SK979碼13&KSBK有推14CSJiSSEXJ7200000:00:16傾K11,9543,520K14?K41211T6CHIQK.EXEsacQ0000;QQ心KLdIQSL暗K&0K1蹈E3CPLD迎R.EKE1&9ED000:01il耳舛fiK迎48842^104K蹴K1431S829LSASS.EXE6040000:00:0217&SOK5,3672,3?K6$K300154mdgv?事網(wǎng)000C:00;OTg翊K20.002l4r(J7&K13&K2X8422113(0EH500D000:00:00&83ZKloss3^168K3UK%,颯1S4rvsim.港0O00;0&;OQ孔湘KL.sqs1,300K淋K106ZE7|^?arch2.exe2052000o:oo;oo64K299260K15K111 0Msi-<rdh2.*kc2058D000:00:0064K2902@0K15K610seareh2.exe22880000:00:00904K221188K12K1010SERVICES.EKE7波0000:00:21£J64K86,OT14r5T2K73K制1T4SNtSS.Eli6&40000:00:0060K2363.76KSK2130SPOOLSV.EXE1532D00OlOOlOO744jKL,S4?33&邛K@4EC112104SVCM&ST.EXE53S&30:0&:00<5SSKL.5962r6S6K%KIS54SlflCNUST.JXE9&0Q000;印;印L&lfiKMB#3,380K73K2231?4步驟4:修改程序,將nClone的定義和初始化方法按程序注釋中的修改方法進(jìn)行修改,編譯成可執(zhí)行文件(執(zhí)行前請(qǐng)先保存已經(jīng)完成的工作)。再按步驟2中的方式運(yùn)行,看看結(jié)果會(huì)有什么不一樣。運(yùn)行結(jié)果:任與 技志I操作.恭統(tǒng)實(shí)驗(yàn)、匚1日-3己火匚hl實(shí)驗(yàn)2L*斗匚KS'Il■:bug'xar匚性己 正在恒口^^31D:'?操作,系統(tǒng)8E 正在;1.二:口國ID:、擇fE系貌實(shí)驗(yàn)\OS~Searchi實(shí)驗(yàn)e口arc]i3\Debug\search2.exe 正在運(yùn)行囪I口:'■操作\OS-Se:hi-ch^^^Z\ee:xrch3\Debug.\se:xfchE.e 正在運(yùn)行^SD:L操ft系統(tǒng)實(shí)驗(yàn)、英-弟aiehY實(shí)驗(yàn)?\5eari2h3LLliHbug\2aich£.exe 正在運(yùn)行[^|I1:'.操作系統(tǒng)實(shí)寵''■.US-£c-orMiA實(shí)驗(yàn)g白-jrahS1''.!!<:Lug\z*--oi-ch2.邳c(diǎn)- 正囪|D: \OS_Search^^3m2\eearch3\Debus\search2.exe 正荏運(yùn)行^JD:'攜ft系統(tǒng)買懸\D3-Searehl^^EN\mearch3Elkbug\mearehZ.exe^yii:'操ft系統(tǒng)實(shí)\OS°Sestrchk^^Z'i.eearchS'i.Debug\sestrch£.exe 正在運(yùn)行[^|D:l操作系統(tǒng)實(shí)驗(yàn)''■.U£-5eormhl實(shí)驗(yàn)W、qeorchSLlleBug\scoichS.邳g 正在j由1函|D: \0S~Search^SE3m2\search3\DeLus\search2.exe 正荏運(yùn)行Q3|U:操作系統(tǒng)實(shí)鴕\口3-5白:11血1實(shí)驗(yàn)E'\EHaiph3\Ikbug'lEEarchZ.e:.:e正注運(yùn)行^3工|:1操作系統(tǒng)實(shí)\OS~Seai-chki^^Z'i.searchS'i.Debug\eearch£.exeRlli正注運(yùn)行映像名稱 PID甕CPUCPUR1間 內(nèi)存使用 頁面皓詼虛撞內(nèi)…頁面緩..芟本...句柄教踐程數(shù)GDIstareh2.searchZ.exestarehS.空普search2.exestarehS.wsc*search2.exeifrareh2.exesearch2.esee -stareh2.searchZ.exestarehS.空普search2.exestarehS.wsc*search2.exeifrareh2.exesearch2.esee -Et^ehS.search2.exe£*urch2-searehZ.txeiearelh2.exeOB4-2O4O-426O40O4_^B4_446700223344488226-21222222222222Z3230000-00000000000000.QDooOGQOoaMQOoaOGoooooooooooclODoooo0:00:000:00:000:00:000:00:000:00:000:00:000:00:000:00:000:00:000:00:000.00.000:00:000:00:000.00.000:00:000:00:000:00:000:00:00QBO6OO286B2092092£|2021!999O6-2093013013012913013013013013013013013Q4304301301301301301KKKKKKKKKKKKKKKKKE5S55S55S55S5S55SS5_JJ1AIfc1A-1A—11x-la11.IXIfcrixaxBL--■.E一b£F-」-U-J-tEI-一rh-I-二一fcEfcfc避推Tfiyg推濯地推Tfi遂推用避推?茫推也4標(biāo)標(biāo)標(biāo)標(biāo)標(biāo)標(biāo)標(biāo)標(biāo)株稼標(biāo)標(biāo)標(biāo)標(biāo)標(biāo)標(biāo)標(biāo)標(biāo)一IIIIII1111II1111II121112L111IILt1110oo0000o0000000000從中你可以得出什么結(jié)論:改為:intnClone;將會(huì)無限循環(huán),直至溢出內(nèi)存。nCl。ne的作用:控制ID的起始值,并控制其輸出窗口的數(shù)量。變量的定義和初始化方法(位置)對(duì)程序的執(zhí)行結(jié)果有影響嗎?為什么?有影響,變量的定義影響程序的結(jié)果數(shù)目,還影響ID的起始位置,由于變量的初始化使程序的循環(huán)次數(shù)發(fā)生改變,直接改變結(jié)果,所以結(jié)果由變量的不同而不同。(2).父子進(jìn)程的簡(jiǎn)單通信及終止進(jìn)程步驟1:創(chuàng)建一個(gè)“Win32ConsolApplication”工程,然后拷貝清單2-2中的程序,編譯成可執(zhí)行文件。步驟2:在VC的工具欄單擊“ExecuteProgram"(執(zhí)行程序)按鈕,或者按Ctrl+F5鍵,或者在“命令提示符”窗口運(yùn)行步驟1中生成的可執(zhí)行文件。運(yùn)行結(jié)果:quul:theIdprocess?tliechildqarccess:t:quul:liildwaitingforsineideinstructions步驟3:按源程序中注釋中的提示,修改源程序,編譯執(zhí)行(執(zhí)行前請(qǐng)先保存已經(jīng)完成的工作)。運(yùn)行結(jié)果:更改后是個(gè)死循環(huán),程序一直運(yùn)行,不停地創(chuàng)建進(jìn)程。在程序中加入跟蹤語句,或調(diào)試運(yùn)行程序,同時(shí)參考MSDN中的幫助文件CreateProcess()的使用方法,理解父子進(jìn)程如何傳遞參數(shù)。給出程序執(zhí)行過程的大概描述:通過main(intargc,char*argv[]M專遞參數(shù),每次運(yùn)行時(shí)先檢測(cè)argc的值,若小于1程序運(yùn)行結(jié)束,否則繼續(xù)彳主下執(zhí)行。步驟4:填空CreateProcess()函數(shù)有8 個(gè)核心參數(shù)?本實(shí)驗(yàn)程序中設(shè)詈的各個(gè)參數(shù)的值是:szFilename;szCmdLine;NULL:NULL:FALSE:CREATENEWCONSOLENULL:NULL。步驟5:按源程序中注釋中的提示,修改源程序2-2,編譯執(zhí)行。運(yùn)行結(jié)果:Mootingthechildprocess.ellinsfthechildprocesstoquit.步驟6:參考MSDN中的幫助文件CreateMutex()、OpenMutex()、ReleaseMutex()和WaitForSingleObject()的使用方法,理解父子進(jìn)程如何利用互斥體進(jìn)行同步的。給出父子進(jìn)程同步過程的一個(gè)大概描述:CreateMutex()創(chuàng)建互斥體,OpenMutex()打開互斥體,ReleaseMutex()釋放互斥體,WaitForSingleObject()檢測(cè)hHandle事件的信號(hào)狀態(tài),通過這些方法可實(shí)現(xiàn)當(dāng)前只有一個(gè)進(jìn)程被創(chuàng)建或使用,實(shí)現(xiàn)進(jìn)程的同步。3、 實(shí)驗(yàn)結(jié)論每個(gè)進(jìn)程都從調(diào)用CreateProcess()API函數(shù)開始,該函數(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ù)。進(jìn)程都是有始有終,其中有中斷,還有處理進(jìn)程間互斥的函數(shù),

實(shí)驗(yàn)三進(jìn)程同步的經(jīng)典算法1、 實(shí)驗(yàn)?zāi)康幕仡櫹到y(tǒng)進(jìn)程、線程的有關(guān)概念,加深對(duì)Windows2000線程的理解。了解互斥體對(duì)象,通過對(duì)生產(chǎn)者消費(fèi)者等進(jìn)程間同步與互斥經(jīng)典算法的實(shí)現(xiàn),加深對(duì)P、V原語以及利用P、V原語進(jìn)行進(jìn)程間同步與互斥操作的理解。2、 實(shí)驗(yàn)內(nèi)容和步驟(1).生產(chǎn)者消費(fèi)者問題步驟1:創(chuàng)建一個(gè)“Win32ConsolApplication”工程,然后拷貝清單3-1中的程序,編譯成可執(zhí)行文件。步驟2:在“命令提示符”窗口運(yùn)行步驟1中生成的可執(zhí)行文件。運(yùn)行結(jié)果:步驟3:仔細(xì)閱讀源程序,找出創(chuàng)建線程的WINDOWSAPI函數(shù),回答下列問題:線程的第一個(gè)執(zhí)行函數(shù)是什么(從哪里開始執(zhí)行)?它位于創(chuàng)建線程的API函數(shù)的第幾個(gè)參數(shù)中?DWORDWINAPIProducer(LPVOIDlpPara) 第三個(gè)參數(shù)hThreads「i]=CreateThread(NULL,0,Producer,NULL,0,&producerID「i]);步驟4:修改清單3-1中的程序,調(diào)整生產(chǎn)者線程和消費(fèi)者線程的個(gè)數(shù),使得消費(fèi)者數(shù)目大與生產(chǎn)者,看看結(jié)果有何不同。運(yùn)行結(jié)果:constunsignedshortPRODUCERSCOUNT=3;//生產(chǎn)者的個(gè)數(shù)constunsignedshortCONSUMERSCOUNT=6;//消費(fèi)者的個(gè)數(shù)從中你可以得出什么結(jié)論:消費(fèi)速度快,消費(fèi)者經(jīng)常等待生產(chǎn)者:反之,生產(chǎn)者經(jīng)常等待。步驟5:修改清單3-1中的程序,按程序注釋中的說明修改信號(hào)量EmptySemaphore的初始化方法,看看結(jié)果有何不同。運(yùn)行結(jié)果:EmptySemaphore=CreateSemaphore(NULL,SIZEOFBUFFER,SIZEOFBUFFER,NULL);改為EmptySemaphore=CreateSemaphore(NULL,0,SIZEOFBUFFER-1,NULL);D:\>八》操作系統(tǒng)實(shí)驗(yàn)\OS-Search、實(shí)驗(yàn)3VDebi無法執(zhí)行步驟6:根據(jù)步驟4的結(jié)果,并查看MSDN,回答下列問題CreateMutex中有幾個(gè)參數(shù),各代表什么含義。有三個(gè)參數(shù).LPSECURITYATTRIBUTESIpMutexAttributes代表安全屬性的指針BOOLbInitialOwner代表布爾bInitialOwnerLPCTSTRIpName代表LPCTSTR類型IpNameCreateSemaphore中有幾個(gè)參數(shù),各代表什么含義,信號(hào)量的初值在第幾個(gè)參數(shù)中。有4個(gè)參數(shù)lpSemaphoreAttributesSECURITYATTRIBUTES,指定一個(gè)SECURITYATTRIBUTES結(jié)構(gòu),或傳遞零值——表示采用不允許繼承的默認(rèn)描述符,該參數(shù)定義了信號(hào)機(jī)的安全特性;lInitialCountLong,設(shè)置信號(hào)機(jī)的初始計(jì)數(shù),可設(shè)詈零至UlMaximumCount之間的一個(gè)值;lMaximumCountLong,設(shè).置信號(hào)機(jī)的最大計(jì)數(shù);lpNameString,指定信號(hào)機(jī)對(duì)象的名稱。信號(hào)量的初值在第2個(gè)參數(shù)中程序中P、V原語所對(duì)應(yīng)的實(shí)際WindowsAPI函數(shù)是什么,寫出這幾條語句。WaitForSingleObject(EmptySemaphore,INFINITE);P操作WaitForSingleObject(Mutex,INFINITE); ReleaseMutex(Mutex);V操作ReleaseSemaphore(FullSemaphore,1,NULL);CreateMutex能用CreateSemaphore替代嗎?嘗試修改程序3-1,將信號(hào)量Mutex完全用CreateSemaphore及相關(guān)函數(shù)實(shí)現(xiàn)。寫出要修改的語句:可以,Mutex=CreateSemaphore(NULL,false,false,NULL);3、 實(shí)驗(yàn)結(jié)論將信號(hào)量看作生產(chǎn)或消費(fèi)的一個(gè)對(duì)象,對(duì)信號(hào)量的牛成和銷毀操作如同p操作和V操作一樣,生成者消費(fèi)者問題模擬的就是對(duì)信號(hào)量的牛成和銷毀,其中牽涉了信號(hào)量的同步,這也是該問題為何稱為同步的經(jīng)典問題的原因。實(shí)驗(yàn)四存儲(chǔ)管理1、 實(shí)驗(yàn)?zāi)康耐ㄟ^對(duì)Windows2000“任務(wù)管理器”、“計(jì)算機(jī)管理”、“我的電腦”屬性、“系統(tǒng)信息”、“系統(tǒng)監(jiān)視器”等程序的應(yīng)用,學(xué)習(xí)如何察看和調(diào)整Windows的內(nèi)存性能,加深對(duì)操作系統(tǒng)存儲(chǔ)管理、虛擬存儲(chǔ)管理等理論知識(shí)的理解。了解Windows2000的內(nèi)存結(jié)構(gòu)和虛擬內(nèi)存的管理,理解進(jìn)程的虛擬內(nèi)存空間和物理內(nèi)存的映射關(guān)系。2、 實(shí)驗(yàn)內(nèi)容和步驟(1)觀察和調(diào)整Windows2000/XP的內(nèi)存性能。步驟1:閱讀“背景知識(shí)”,請(qǐng)回答:什么是“分頁過程”?當(dāng)OS求助于硬盤以獲得虛擬內(nèi)存時(shí),這個(gè)過程被稱為分頁,即OS將信息從主內(nèi)存移動(dòng)到磁盤進(jìn)行臨時(shí)存儲(chǔ)的過程。什么是“內(nèi)存共享”?為提供應(yīng)用程序彼此通信和共享信息的能力,OS允許其訪問某些內(nèi)存空間而不危及它和其他應(yīng)用程序的安全性和完整性。運(yùn)行一個(gè)應(yīng)用程序的多個(gè)副本時(shí),每一個(gè)實(shí)例都可以使用相同的代碼和數(shù)據(jù),不必維護(hù)所加載應(yīng)用程序代碼的單獨(dú)副本并使用相同的內(nèi)存資源。什么是“未分頁合并內(nèi)存”和“分頁合并內(nèi)存”?Windows2000中,未分頁合并內(nèi)存的最大限制是多少?未分頁合并內(nèi)存指必須駐留在內(nèi)存中的占用代碼或數(shù)據(jù),其中包含的進(jìn)程保留在主內(nèi)存中,并且不能交換到磁盤上。分頁合并內(nèi)存是存儲(chǔ)遲早需要的可分頁代碼或數(shù)據(jù)的內(nèi)存部分。物理內(nèi)存數(shù)量以及進(jìn)程對(duì)系統(tǒng)上的內(nèi)存地空間的需求將會(huì)限制未分頁合并內(nèi)存,Windows2000未分頁合并內(nèi)存最大限制為256MB。Windows2000分頁文件默認(rèn)設(shè)置的最小容量和最大容量是多少?Windows2000使用內(nèi)存數(shù)量的1.5倍作為分頁文件的最小容量,這個(gè)最小容量的兩倍作為最大容量。步驟2:登錄進(jìn)入Windows2000Professional。步驟3:查看包含多個(gè)實(shí)例的應(yīng)用程序的內(nèi)存需求。啟動(dòng)想要監(jiān)視的應(yīng)用程序,例如Word。右鍵單擊任務(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)記錄映像名稱PIDCPUCPU時(shí)間內(nèi)存使用WINWORD3732050:00:4926616KCMD2680000:00:00144KSystemIdleProcess0991:48:1028K“內(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ì)比情況:映像名稱PIDCPUCPU時(shí)間內(nèi)存使用WINWORD3732050:00:4926616KIEXPLORER2552010:00:0229792K相差不大步驟4:未分頁合并內(nèi)存。估算未分頁合并內(nèi)存大小的最簡(jiǎn)單方法是使用“任務(wù)管理器”。未分頁合并內(nèi)存的估計(jì)值顯示在“任務(wù)管理器”的“性能”選項(xiàng)卡的“核心內(nèi)存”部分。總數(shù)(K): 56176分頁數(shù):41588未分頁(K): 14588還可以使用“任務(wù)管理器”查看一個(gè)獨(dú)立進(jìn)程正在使用的未分頁合并內(nèi)存數(shù)量和分頁合并內(nèi)存數(shù)量。操作步驟如下:1) 單擊“Windows任務(wù)管理器”的“進(jìn)程”選項(xiàng)卡,然后從“查看”菜單中選擇“選擇列”命令,顯示“進(jìn)程”選項(xiàng)卡的可查看選項(xiàng)。2) 在“選擇列”對(duì)話框中,選定“頁面緩沖池”選項(xiàng)和“非頁面緩沖池”選項(xiàng)旁邊的復(fù)選框,然后單擊“確定”按鈕。返回Windows2000"任務(wù)管理器”的“進(jìn)程”選項(xiàng)卡時(shí),將看到其中增加顯示了各個(gè)進(jìn)程占用的分頁合并內(nèi)存數(shù)量和未分頁合并內(nèi)存數(shù)量。仍以剛才打開觀察的應(yīng)用程序(例如Word)為例,請(qǐng)?jiān)诒?-4中記錄:表4-4實(shí)驗(yàn)記錄映像名稱PID內(nèi)存使用頁面緩沖池非頁面緩沖池WINWORD37322937268218從性能的角度來看,未分頁合并內(nèi)存越多,可以加載到這個(gè)空間的數(shù)據(jù)就越多。擁有的物理內(nèi)存越多,未分頁合并內(nèi)存就越多。但未分頁合并內(nèi)存被限制為256MB,因此添加超出這個(gè)限制的內(nèi)存對(duì)未分頁合并內(nèi)存沒有影響。步驟5:提高分頁性能。在Windows2000的安裝過程中,將使用連續(xù)的磁盤空間自動(dòng)創(chuàng)建分頁文件(pagefile.sys)。用戶可以事先監(jiān)視變化的內(nèi)存需求并正確配置分頁文件,使得當(dāng)系統(tǒng)必須借助于分頁時(shí)的性能達(dá)到最高。雖然分頁文件一般都放在系統(tǒng)分區(qū)的根目錄下面,但這并不總是該文件的最佳位置。要想從分頁獲得最佳性能,應(yīng)該首先檢查系統(tǒng)的磁盤子系統(tǒng)的配置,以了解它是否有多個(gè)物理硬盤驅(qū)動(dòng)器。1) 在“開始”菜單中單擊“設(shè)置”-“控制面板”命令,雙擊“管理工具”圖標(biāo),再雙擊“計(jì)算機(jī)管理”圖標(biāo)。2) 在“計(jì)算機(jī)管理”窗口的左格選擇“磁盤管理”管理單元來查看系統(tǒng)的磁盤配置。如果系統(tǒng)只有一個(gè)硬盤,那么建議應(yīng)該盡可能為系統(tǒng)配置額外的驅(qū)動(dòng)器。這是因?yàn)椋篧indows2000最多可以支持在多個(gè)驅(qū)動(dòng)器上分布的16個(gè)獨(dú)立的分頁文件。為系統(tǒng)配置多個(gè)分頁文件可以實(shí)現(xiàn)對(duì)不同磁盤I/O請(qǐng)求的并行處理,這將大大提高I/O請(qǐng)求的分頁文件性能。請(qǐng)?jiān)诒?-5中記錄:卷 L布局 1斃沮L立件志曉1姓:此CC:) 瑟*FAT3EHLHHDVO—FKET 譽(yù)1盆分區(qū)是*TAT3Z 是J整部<D:)布?jí)悍郑╖基主FAT32 技南電肝C折J .BZ01313.曰L EO世 =S"CEI5A 305 3MMB IOQ% =&T.6DGB 376MB 4% *6 ■空□urrore_rjuitL國QBPAT32:投:態(tài)甚妙CETS*nT4.取g.S3GB狀志慰好匚哀毓}£4.StQEMWW1.T.G2GEKSLisfMiu-f?iirr >7哭>5EFKTT3&表4-5實(shí)驗(yàn)記錄卷布局類型文件系統(tǒng)容量狀態(tài)C磁盤分區(qū)基本FAT3248.82GB狀態(tài)良好(系統(tǒng))LENOVO_PART磁盤分區(qū)基本FAT32305M狀態(tài)良好(EISA配置)步驟6:計(jì)算分頁文件的大小。要想更改分頁文件的位置或大小配置參數(shù),可按以下步驟進(jìn)行:1) 右鍵單擊桌面上的“我的電腦”圖標(biāo)并選定“屬性”。2) 在“高級(jí)”選項(xiàng)卡上單擊“性能選項(xiàng)”按鈕。3) 單擊對(duì)話框中的“虛擬內(nèi)存”區(qū)域中的“更改”按鈕。請(qǐng)記錄:所選驅(qū)動(dòng)器(C:)的頁面文件大小:驅(qū)動(dòng)器:C:[WINXP]可用空間:23298MB初始大?。∕B):1524最大值(MB):30484) 要想將另一個(gè)分頁文件添加到現(xiàn)有配置,在“虛擬內(nèi)存”對(duì)話框中選定一個(gè)還沒有分頁文件的驅(qū)動(dòng)器,然后指定分頁文件的初始值和最大值(以兆字節(jié)表示),單擊“設(shè)置”,然后單擊“確定”。5) 要想更改現(xiàn)有分頁文件的最大值和最小值,可選定分頁文件所在的驅(qū)動(dòng)器。然后指定分頁文件的初始值和最大值,單擊“設(shè)置”按鈕,然后單擊“確定”按鈕。6) 在“性能選項(xiàng)”對(duì)話框中單擊“確定”按鈕。7) 單擊“確定”按鈕以關(guān)閉“系統(tǒng)特性”對(duì)話框。步驟7:使用任務(wù)管理器??梢允褂谩叭蝿?wù)管理器”來簡(jiǎn)單地檢查分頁文件是否配置了正確容量。這樣可以實(shí)時(shí)提供系統(tǒng)正在使用分頁文件的方式以及其他重要系統(tǒng)信息的準(zhǔn)確描述。通過右鍵單擊任務(wù)欄運(yùn)行“任務(wù)管理器”,選定“性能”選項(xiàng)卡查看實(shí)時(shí)的系統(tǒng)統(tǒng)計(jì)數(shù)據(jù)。與分頁文件大小最有關(guān)的信息位于“認(rèn)可用量”區(qū)域。這一區(qū)域顯示了認(rèn)可“峰值”是否達(dá)到或超過了認(rèn)可“限制”,以及它是否超過了系統(tǒng)上的物理內(nèi)存數(shù)量。認(rèn)可“峰值”是指系統(tǒng)迄今為止向進(jìn)程分配的最大物理內(nèi)存和虛擬內(nèi)存數(shù)量。請(qǐng)記錄:物理內(nèi)存(K)總數(shù):1039724可用數(shù):517644系統(tǒng)緩存:501940認(rèn)可用量(K)總數(shù):859572限制:2500780峰值:1238956當(dāng)系統(tǒng)遇到分頁活動(dòng)增加的情況時(shí),提交的內(nèi)存數(shù)量(“認(rèn)可總數(shù)”)就會(huì)增加。一旦它達(dá)到了“認(rèn)可限制”值,系統(tǒng)就需要擴(kuò)展分頁文件。“認(rèn)可限制”值指出在不必?cái)U(kuò)展分頁文件的情況下可以向內(nèi)存提交的虛擬內(nèi)存數(shù)量。因?yàn)槟繕?biāo)是避免擴(kuò)展分頁文件,所以必須保持“認(rèn)可總數(shù)”和“認(rèn)可限制”值相差較大。如果這兩個(gè)值接近了,那么系統(tǒng)必須動(dòng)態(tài)增加分頁文件的大小。“任務(wù)管理器”的“認(rèn)可用量”區(qū)域顯示的信息還說明了系統(tǒng)的主內(nèi)存是否足以滿足系統(tǒng)執(zhí)行的任務(wù)。如果認(rèn)可“總數(shù)”值經(jīng)常超過系統(tǒng)中的內(nèi)存數(shù)量,那么系統(tǒng)的物理內(nèi)存可能不足。(2)了解和檢測(cè)進(jìn)程的虛擬內(nèi)存空間。步驟1:創(chuàng)建一個(gè)“Win32ConsolApplication”工程,然后拷貝清單4-1中的程序,編譯成可執(zhí)行文件。步驟2:在VC的工具欄單擊“ExecuteProgram"(執(zhí)行程序)按鈕,或者按Ctrl+F5鍵,或者在“命令提示符”窗口運(yùn)行步驟1中生成的可執(zhí)行文件。步驟3:根據(jù)運(yùn)行結(jié)果,回答下列問題虛擬內(nèi)存每頁容量為:4.00KB最小應(yīng)用地址:0x00010000最大應(yīng)用地址:0x7ffeffff當(dāng)前可供應(yīng)用程序使用的內(nèi)存空間為:1.99GB當(dāng)前計(jì)算機(jī)的實(shí)際內(nèi)存大小為:0.99GB理論上每個(gè)Windows應(yīng)用程序可以獨(dú)占的最大存儲(chǔ)空間是:O."GB

按committed、reserved、free等三種虛擬地址空間分別記錄實(shí)驗(yàn)數(shù)據(jù)。其中“描述”是指對(duì)該組數(shù)據(jù)的簡(jiǎn)單描述,例如,對(duì)下列一組數(shù)據(jù):00010000-00012000 <8.00KB>Committed,READWRITE,Private可描述為:具有READWRITE權(quán)限的已調(diào)配私有內(nèi)存區(qū)。將系統(tǒng)當(dāng)前的自由區(qū)(free)虛擬地址空間填入表4-6中。表4-6實(shí)驗(yàn)記錄地址大小虛擬地址空間類型訪問權(quán)限描述00011000-00020000(60.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)00021000-00030000(60.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)00133000-00140000(52.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)00276000-00280000(40.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)002c1000-002d0000(60.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)00311000-00320000(60.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)00326000-00330000(40.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)00371000-00380000(60.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)00391000-003a0000(60.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)003a1000-003b0000(60.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)003c3000-003d0000(52.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)00485000-00490000(44.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)00558000-00560000(32.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)00663000-00670000(52.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)00970000-62c20000(1.53GB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)62c29000-73fa0000(275MB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)740034.9MB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)7631d000-77be0000(24.7MB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)7631d000-77be0000(24.7MB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)77c38000-77d10000(864KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)77e49000-77e50000(28.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)77ee2000-77ef0000(56.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)77f39000-77f40000(28.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)77fb6000-77fc0000(40.0KB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)77fd1000-7c800000(72.1MB)freeNOACCESS沒有任何權(quán)限的巳調(diào)配的共有內(nèi)存區(qū)將系統(tǒng)當(dāng)前的已調(diào)配區(qū)(committed)虛擬地址空間填入表4-7中。表4-7實(shí)驗(yàn)記錄地址大小虛擬地址空間類型訪問權(quán)限描述00010000-00011000(4.00KB)committedREADWRITE具有READWRITE權(quán)限的巳調(diào)配私有內(nèi)存區(qū)00020000-00021000(4.00KB)committedREADWRITE具有READWRITE權(quán)限的巳調(diào)配私有內(nèi)存區(qū)0012c000-0012d000(4.00KB)committedGUARD,READWRITE具有GUARD,READWRITE權(quán)限的巳調(diào)配私有內(nèi)存區(qū)001212.0KB)committedREADWRITE具有READWRITE權(quán)限的巳調(diào)配私有內(nèi)存區(qū)00130000-00133000(12.0KB)committedREADONLY具有READE權(quán)限的Mapped內(nèi)存區(qū)00140000-00145000(20.0KB)committedREADWRITE具有READWRITE權(quán)限的巳調(diào)配私有內(nèi)存區(qū)00240000-00246000(24.0KB)committedREADWRITE具有READWRITE權(quán)限的巳調(diào)配私有內(nèi)存區(qū)00250000-00253000(12.0KB)committedREADWRITE具有READWRITE權(quán)限的巳調(diào)配私有內(nèi)存區(qū)

00260000-00276000(88.0KB)committedREADONLY具有READ權(quán)限的巳調(diào)配私有內(nèi)存區(qū)00280000-002c1000(260KB)committedREADONLY具有READ權(quán)限的巳調(diào)配私有內(nèi)存區(qū)00320000-00326000(24.0KB)committedREADONLY具有READ權(quán)限的巳調(diào)配私有內(nèi)存區(qū)00330000-00371000(260KB)committedREADONLY具有READ權(quán)限的巳調(diào)配私有內(nèi)存區(qū)00380000-00388000(32.0KB)committedREADWRITE具有READWRITE權(quán)限的巳調(diào)配私有內(nèi)存區(qū)00390000-00391000(4.00KB)committedREADWRITE具有READWRITE權(quán)限的巳調(diào)配私有內(nèi)存區(qū)003a0000-003a1000(4.00KB)committedREADWRITE具有READWRITE權(quán)限的巳調(diào)配私有內(nèi)存區(qū)003b000

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論