版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
河北工業(yè)大學(xué)試驗一進程控制與描述通過對Windows編程,深入熟悉操作系統(tǒng)的基本概念,很好地理解Windows的構(gòu)造。通過創(chuàng)立進程、觀測正在運行的進程和WindowsProfessional下的GUI應(yīng)用程序,使用Vi施,該措施GUI類型的應(yīng)用程序的原則入口點。也可以運用任何其他文本編輯器鍵入程序代碼,假如這樣,例如使用WORD來鍵入在程序1-1的GUI應(yīng)用程序中,首先需要Windows.h頭文獻,以便獲得傳送給WinMainO和MessageBoxOAPI函數(shù)的數(shù)接著的pragma指令指示編譯器/連接器找到User32.LIB庫文獻并將其與產(chǎn)生的EXE文獻連接起來。這樣就可以運行簡樸的命令行命令CLMsgBox.CPP來創(chuàng)立這一應(yīng)用程序,假如沒有pragma指令,則MessageBox()API函數(shù)就成為未定義的了。這一指令是VisualStudioC++編譯器特有的。接下來是WinMainO)措施。其中有四個由實際的低級入口點傳遞來數(shù)據(jù)裝在內(nèi)存的何處。句柄的數(shù)值實際上是EXE文獻映像的基地址,一般為0x00400000。下一種參數(shù)hPrevInstance是為向后參數(shù)告訴應(yīng)用程序怎樣顯示它的主窗口(選項包括最小化、最大化和正常)。最終,程序調(diào)用MessageBox(OAPI函數(shù)并退出。假如在進入消息循環(huán)之前就結(jié)束運行的話彈出一種消息框,標(biāo)題為Grectings,內(nèi)容為Hello,WindowsXp,中間有一種確認按鈕。進程對象操作系統(tǒng)將目前運行的應(yīng)用程序看作是進程對象。運用系統(tǒng)提供的惟一的稱本試驗表達了一種簡樸的進程句柄的應(yīng)用。在系統(tǒng)中運行的任何進程都可調(diào)用GeiCurrentProcess()API函數(shù),此函數(shù)可返回標(biāo)識進程自身的句柄。然后就可在Windows需要該程序1-2:獲得和使用進程的句柄程序1-2中列出的是一種獲得進程句柄的措施。對于進程句柄可進行的惟一有用的操作是在API調(diào)用時,將其作為參數(shù)傳送給系統(tǒng),正如程序1-2中對GetPriorityClass)API函數(shù)的調(diào)用那樣。在這種狀況下,系統(tǒng)向進程對象內(nèi)“窺視”,以決定OpenProcess)和CreateProcessoAPI函數(shù)也可以用于提取進程句柄。前者提取的是已經(jīng)存在的進程的句柄,而后者創(chuàng)立Currentprocesspri進程優(yōu)先權(quán)為Normal。程序1-3顯示怎樣找出系統(tǒng)中正在運行的所有進程,怎樣運用OpenProcess()API函數(shù)來獲得每一種訪問進程的深入信息。程序1-3運用句柄查出進程的詳細信息程序1-3程序首先運用Windows的新特性,即工具協(xié)助庫來獲得目前運行的所有進程的快照。然后應(yīng)用程序進入快照中跟蹤每一進程的有關(guān)時間,示例中是通過打開的進程句柄和GetProcessTimesOAPI來直詢得到有關(guān)時間的。接下來,一種定制的協(xié)助函數(shù)獲得了幾種返回的數(shù)值,然后計算進程在內(nèi)核模式下消耗的時間占總時間的比例。程序的其他部分比較簡樸,只是將有關(guān)信息顯示給顧客,清除進程句柄,然后繼續(xù)循環(huán),直到所有進程都計算過為止?;鼗谻:\PrograFiles\IicrosoftYisualStudio\IyProjectProcessID:4.EXEfile:Systen,xinkernelProcessID:532,EXEfile:WINLOGON.EXE,xinkernelProcessID:576,EXEfile:SERUICESProcessID:588,EXEfile:LSASS.EXE,xProcessID:748,EXEfile:SUCHOST.EXE,xinkernelProcessID:804,EXEfile:SUCHOST.EXE,xinkeProcessID:868,EXEfile:SUCHOST.EXE,xinProcessID:956,EXEfile:SUCHOST.EXE,xinkernelProcessID:988,EXEfile:SUCHProcessID:1160,EXEfile:SPOOLSU.EXProcessID:EXEfile:EXPLORER.EXE,*inkeProcessID:1EXEfile:IGFXTRAYEXExinProcessID:1520,EXEfile:HKCHD.EXE,xinkernelmodProcessID:1528,EXEfile:GFXPERS.EXE,xinProcessID:1544,EXEfile:SHSTAT.ProcessID:1648,EXEfile:IGFXSRUC.EXE,xinProcessID:1696,EXEfile:CTFHONEXE,xinProcessID:1996,EXEfile:Mcshield.exe,xinkernelProcessID:172,EXEfile:HDM.EXE,xinkernelmoProcessID:336,EXEfile:sqlservr.exe,xinProcessID:948,EXEfile:UPHCLEANEXE,xinProcessID:2408,EXEfile:ALG.EXE,xinkernelmodeProcessID:2496,EXEfile:SUCHOSI.EXE,名in第二部分:進程的“畢生”1、創(chuàng)立進程創(chuàng)立子進程本程序展示的是一種簡樸的使用CreateProcesso)API函數(shù)的例子。首先形成簡樸的命令行,提供目前的EXE文獻的指定文獻名和代表生成克隆進程的號碼。大多數(shù)參數(shù)都可取缺省值,不過創(chuàng)立標(biāo)志參數(shù)使用了:行為像一種子進程的標(biāo)志,指示新進程分派它自己的控制臺,這使得運行示例程序時,在任務(wù)欄上產(chǎn)生許多活動標(biāo)識。然后該克隆進程的創(chuàng)立措施的句柄并返回mainO函數(shù)。在關(guān)閉程序之前,每一進程的執(zhí)行主線程暫停一下,以便讓顧客看到其中的至少一種窗口。CreateProcess(函數(shù)有5個關(guān)鍵參數(shù)?本試驗程序中設(shè)置的各個參數(shù)的值是:a.(LPCTSTRIpApplicationName)sz,/產(chǎn)生這個EXE的應(yīng)用程序的名稱:b.(LPTSTRIpCommandLine)szCmdLine,//告訴其行為像一種子進程的標(biāo)志:c.(BOOLblnheritHandles)FALSE,//不繼承句柄:d.(LPSTARTUPINFOIpStartuplnfo)&si,//啟動e.(LPPROCESS_INFORMATIONIpProcesslnformation)&pi://返回的進程信息;ProcessID:3180,CloneID:aProcessID:3180,CloneID:a2、正在運行的進程ProcessID:4004,requires0STaskManagershouldnownow目前PID信息:_4664系統(tǒng)提醒信息:TaskManagershouldnownowi接著,程序演示了怎樣使用GetVersionEx()API函數(shù)來提取OSVERSIONINFOEX構(gòu)造。這一數(shù)據(jù)塊中包括了操作系統(tǒng)的版本信息,其中,“OS:5.0”表達目前運行的操作系統(tǒng)是:Windows。最終一段程序運用了操作系統(tǒng)的版本信息,以確認運行的是Windows。代碼接著將目前進程的優(yōu)先級提高到比單擊Cul+Alt+Del鍵,進入“Windows任務(wù)管理器”,在“應(yīng)用程序”選項卡中右鍵單擊本任務(wù),在快捷菜單中選擇“轉(zhuǎn)到進程”命令。在“Windows任務(wù)管理器”的“進程”選項卡中,與本任務(wù)對應(yīng)的進程映像名稱是(為何?):右鍵單擊該進程名,在快捷菜單中選擇“設(shè)置優(yōu)先級”命令,可以調(diào)整該進程的優(yōu)先級。如設(shè)置為“高”后重新運行程序,屏幕顯示有變化嗎?沒有。3、終止進程在其他線程中進行別的處理工作,同步等待著父進程使用ReleaseMutexOAPI發(fā)出“死亡”信號。然后用SleepOAPI調(diào)用來模擬父進程處理其他工作,等完畢時,指令子進程終止。行期關(guān)閉(這是由編譯器提供的缺省行為)之后來調(diào)用這一函數(shù)。當(dāng)它轉(zhuǎn)向受信狀態(tài)時,一般可創(chuàng)立一種每個活動線程都可等待和停止的終止事件。在正常的終止操作中,進程的每個工作線程都要終止,由主線程調(diào)用ExitProcesso。接著,管理層對進程增長的所有對象釋放引用,并將用GetExitCodeProcsso)建立的退出代碼從STILLACTIVE變化為在ExitProcesso調(diào)用中返回的值。最終,主等到所有打開的句柄都關(guān)閉之后,管理層的對象管理器才銷毀進程對象自身。還沒有一種函數(shù)可獲得終止后的進程對象為其參數(shù),從而使其“復(fù)活”。當(dāng)進程對象引用一種終止了的對象時,有好幾種API函數(shù)仍然是有用的。進程可使用退出代碼將終止方式告知給調(diào)用GetExitCodeProcesso的其他進程。同步,GetProcessTimesOAPI函數(shù)可向主調(diào)1)_Creatingthec表達:_父進程正在創(chuàng)立子進程。子進程等待父進程2)Tellingthechildprocesstoqu本次試驗讓我明白進程是程序的一次執(zhí)行過程,是系統(tǒng)進行處理機調(diào)度和資源分派的基本單位。(未引入線程之前)。進程是操作系統(tǒng)構(gòu)造的基礎(chǔ):是一種正在執(zhí)行的程序:計算機中正在運行的程序?qū)嵗嚎梢苑峙山o處理器并由處理器執(zhí)行的一種實體;由單一次序的執(zhí)行顯示,一種目前狀態(tài)和一組有關(guān)的系統(tǒng)資源所描述的活動單元,對父進程理解。試驗二并發(fā)與調(diào)度1、試驗?zāi)康脑诒驹囼炛?,通過對事件和互斥體對象的理解,來加深對Windows線程同步的理解。通過度析試驗程序,理解管理事件對象的API。理解在進程中怎樣使用事件對象,在進程中怎樣使用互斥體對本程序中顯示的類CCountUpDown使用了一種互斥體來保證對兩個線程間單一數(shù)值的訪問。每個線程都企圖獲得控制權(quán)來變化該數(shù)值,然后將該數(shù)值寫入輸出流中。創(chuàng)立者實際上創(chuàng)立的是互斥體對象,計數(shù)措施執(zhí)行等待并釋放互斥體所需的資源(因而也就是共享資源)。分析程序的運行成果,可以看到線程(加和減線程)的交替執(zhí)行(由于SleepOAPI容許Windows切換線程)。在每次運行之后,數(shù)值應(yīng)當(dāng)返回初始值(0),由于在每次運行之后寫入線程在等待隊列中變成最終一種,內(nèi)核保證它在其他線程工作時不1)請描述運行成果(假如運行不成功,則也許1)請描述運行成果(假如運行不成功,則也許的原因是什么?):thread:228value:1acce thread:228value;Iaccthread:3480value:Baccthread:228value:1accthread:3480value:Baccthread:228value:1accthread:3400valuethread:3488value:Bacthread:228value:1accethread:3488value:Baccechread:228value:iaethread:3480value:Bacchread:228value:1acctluread:3488value:Bathread:3408value:Bacthread:228value:1acthread:3400value:Baccthread:228value:1acthread:3490value:Faccthread:3400value:Fa2)根據(jù)運行輸出成果,對照分析程序,可以看出程序運行的流程嗎?請簡樸描述:Windows提供的線程間通訊類內(nèi)查對象容許同一進程或跨進程的線程之間互相發(fā)送信息,包括文獻、文獻映射、郵件位和命名管道等,其中最常用的是文獻和文獻映射。此類對象容許一種線程很輕易地向同一進程或其他進程中運行成果(假如運行不成功,則也許的原因是什么?):運行成果(假如運行不成功,則也許的原因是什么?):C:\PrograFiles\IicrosoftYisualStudioLyProjects\sa\Debug\sa.exe1)程序中啟動了多少個單獨的讀寫線程?2)使用了哪個系統(tǒng)API函數(shù)來創(chuàng)立線程例程?3)文獻的讀和寫操作分別使用了哪個API函數(shù)?每次運行進程時,都可看到程序中的每個線程從前面的線程中讀取數(shù)據(jù)并將數(shù)據(jù)增長,文獻中的數(shù)值持續(xù)增長。這個示請注意程序中寫入之前文獻指針的重置。重置文獻指針是必要的,由于該指針在讀取結(jié)束時將處在前四個字節(jié)之后,同一指針還要用于向文獻寫入數(shù)據(jù)。假如函數(shù)向該處寫入新數(shù)值,則下次進程運行時,只能讀到本來的數(shù)值。那么:4)在程序中,重置文獻指針使用了哪一種函數(shù)?5)從輸出成果,對照分析程序,可以看出程序運行的流程嗎?請簡樸描述:首先創(chuàng)立一種線程,讀nValue的值,然后nValue值加一后,將nValue值重新寫入文獻。反復(fù)上述過程100次。1)程序中用來創(chuàng)立一種文獻映射對象的系統(tǒng)API函數(shù)是哪個?Create():2)在文獻映射上創(chuàng)立和關(guān)閉文獻視圖分別使用了哪一種系統(tǒng)函數(shù)?3)運行時,程序首先通過(MakeSharedFile0:)函數(shù)創(chuàng)立一種小型的文獻映射對象(hMapping),接著,使用系統(tǒng)API函數(shù)(CreateMutex0;)再創(chuàng)立一種保護其應(yīng)用的互斥體(g_hMutexMapping)。然后,應(yīng)用程序創(chuàng)立100個線程,每個都容許再通過函數(shù)(MapViewOfFile0:)操作將視圖映射到文獻,將高32位看作有符號整數(shù),將該數(shù)值增長(即命令:++(*pnData):)·再將新數(shù)值顯示在控制臺上。每個線程清除文獻的視圖并在退出之前釋放互斥體的語句是ReleaseMutex(g_hMutexMapping);4)將程序中的語句::Sleep(500);刪除(例如在語句前面加上“//”)后,重新編譯運行,成果有變化嗎?為何?有變化。100個線程一閃而過,不能看清成果。本次試驗讓我明白了操作系統(tǒng)中的事件和互斥體對象,以及線程同步的概念。學(xué)習(xí)了進程中怎樣使則他們可以任意并發(fā),當(dāng)這些進程沒有訪問互出現(xiàn)錯誤,這時我們必須通過某種手段來同步進程間并發(fā)的次序,這尚有,并發(fā)執(zhí)行的進程或線程間,有時為了需要,會互相之間進行數(shù)據(jù)的互換,即試驗三生產(chǎn)者-消費者算法模擬試驗一、試驗?zāi)康?、通過對“生產(chǎn)者-消費者”問題編程實現(xiàn),理解線程創(chuàng)立、同步信號量、互斥信號量、臨界區(qū)的創(chuàng)立和使用,初步理3、深入理解P、V原語和信號量在線程互斥和同步機制中的運用。嘗試變化某些參數(shù),例如:變化緩沖區(qū)數(shù)、增長(減少)線程數(shù)、變化延遲數(shù)、增長(減少)生產(chǎn)者進程、增長(減少)1、empty_semaphore=CreateSemaphore(NULL2、h_mutex=CreateMutex(NULL,F4、h_Thread[i]=CreateThread(NULL,0.(LP5、h_Thread[i]=CreateThread(NULL,0,(LP4、請補全上述程序,寫出程序的運行成果。程 P Pc生產(chǎn)者1發(fā)送生產(chǎn)請求信號.庫產(chǎn)者3愛送生產(chǎn)話求信號.座產(chǎn)暑1發(fā)送生產(chǎn)請求信號.審產(chǎn)暑1愛送生產(chǎn)語求信號:座產(chǎn)者3愛送生產(chǎn)語求信號.康產(chǎn)者4發(fā)送生產(chǎn)請求信號:座產(chǎn)者3并菇在緩沖區(qū)B生產(chǎn)產(chǎn)品.康產(chǎn)者1開始在絨沖區(qū)1車產(chǎn)產(chǎn)品.生產(chǎn)者4開始在緩沖區(qū)2生產(chǎn)產(chǎn)品.生產(chǎn)者3完成生產(chǎn)過程:生產(chǎn)者1完成生產(chǎn)過程:生產(chǎn)者4元成生產(chǎn)過程:薯1開菇磊掇產(chǎn)囂:匡產(chǎn)者3完成生產(chǎn)過程:生產(chǎn)者1完成生產(chǎn)過程:生產(chǎn)者4元成生產(chǎn)過程:緩沖區(qū)t11:1緩沖區(qū)t21:4?蜓者者52喬臟喬笙蜴銷遜?13開始5緩產(chǎn)按任意鍵返回:消消自525消演消成功3:消費者2成功消費1:繡沖區(qū)(B1:-1緩沖區(qū)[11:-14首先生產(chǎn)者3生產(chǎn)了產(chǎn)品3,然后生產(chǎn)者1生產(chǎn)了產(chǎn)品1,最終生產(chǎn)者4生產(chǎn)了產(chǎn)品4.消費時,消費者5消費產(chǎn)品3,然后消費2消費產(chǎn)品1,最終消費者5消費產(chǎn)品4.入頁號和輔存地址:28入頁號和輔存地址:49入頁號和輔存地址:88入頁號和輔存地址:-15入主存塊號,主存塊數(shù)要不大于5,<以-1結(jié)束):33.9.-1簡入指合性質(zhì)(1-修改,-不需要,其他-結(jié)束程序運行>和邏輯地址:164輸出邏輯地址是:abb對應(yīng)物理地址是:26bb入指合性質(zhì)(1-修改,a-不需要,其他-結(jié)束程序運行>和邏輯地址:01088發(fā)生缺頁中斷4將頁B寫回磁盤第8塊淘汰主存塊,3中的負a.從磁盤第9塊中調(diào)入頁4第三次時,輸入13000,此時淘汰的頁4修改正,因此要將頁4寫回磁盤第5000(4)理解并掌握Windows中鼠標(biāo)、鍵盤功能鍵個數(shù)121---------------功能鍵個數(shù)121---------------鼠標(biāo)改為右手習(xí)慣2----------------鼠標(biāo)改為左豐習(xí)慣3----------------獲得鍵盤類型和功能鍵個數(shù)請輸入選項:3BN增強型(181或182楗)鍵盤叭播放音樂等功能。如上圖,我選擇了選項3,圖顯示我的鍵盤類型為IBM增強型(101或101鍵)鍵盤,功能鍵個數(shù)為12.試驗六文獻系統(tǒng)1.文獻信息命令Ctrl+Z:終止目前活動。顯示1s命令的手冊頁面(man1s),然后使用Ctrl-z中斷輸出。當(dāng)你接下Ctrl+Z的Copyright1991-1994,1997,1998,,,FreeThisisfreesoftwarewithABSOLUTELYNOWAtest:ASCIItext2)可執(zhí)行(或二進制)文獻:包括32位的可執(zhí)行文獻和可擴展鏈接格式(ELF)編碼文獻,和其他動態(tài)鏈接的可執(zhí)環(huán)節(jié)5:使用strings命令。fuxin@fuxin-K42JZ:~$strings/u環(huán)節(jié)6:使用cat命令顯示文獻的內(nèi)容。鍵入1s/dev>devl環(huán)節(jié)7:使用more命令顯示文獻的內(nèi)容。環(huán)節(jié)8:使用head命令顯示文獻的一部分。1)單獨使用head命令,顯示主目錄中dev1文獻的開始2)使用帶-n選項的
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人房產(chǎn)抵押擔(dān)保貸款保險合同范本2篇
- 二零二五年度車輛運輸水工鵝卵石運輸協(xié)議3篇
- 2025年個人股東股權(quán)增資擴股合同模板4篇
- 設(shè)計思維解鎖創(chuàng)意潛能的鑰匙
- 2025年度大學(xué)生實習(xí)實訓(xùn)基地實習(xí)崗位合作協(xié)議
- 2025年度個人戶外運動裝備過橋資金借款合同3篇
- 網(wǎng)絡(luò)安全實訓(xùn)室的應(yīng)急預(yù)案制定及實施
- 2025年度工傷賠償協(xié)議范本發(fā)布通知3篇
- 二零二五年度車牌號碼拍賣合同書4篇
- 2025版新型材料研發(fā)項目施工保密協(xié)議書3篇
- 焊接機器人在汽車制造中應(yīng)用案例分析報告
- 合成生物學(xué)在生物技術(shù)中的應(yīng)用
- 中醫(yī)門診病歷
- 廣西華銀鋁業(yè)財務(wù)分析報告
- 無違法犯罪記錄證明申請表(個人)
- 電捕焦油器火災(zāi)爆炸事故分析
- 大學(xué)生勞動教育PPT完整全套教學(xué)課件
- 繼電保護原理應(yīng)用及配置課件
- 《殺死一只知更鳥》讀書分享PPT
- 蓋洛普Q12解讀和實施完整版
- 2023年Web前端技術(shù)試題
評論
0/150
提交評論