進(jìn)程的創(chuàng)建實(shí)驗(yàn)報告_第1頁
進(jìn)程的創(chuàng)建實(shí)驗(yàn)報告_第2頁
進(jìn)程的創(chuàng)建實(shí)驗(yàn)報告_第3頁
進(jìn)程的創(chuàng)建實(shí)驗(yàn)報告_第4頁
進(jìn)程的創(chuàng)建實(shí)驗(yàn)報告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)實(shí)驗(yàn)報告課程名稱操作系統(tǒng)實(shí)驗(yàn)實(shí)驗(yàn)項(xiàng)目名稱進(jìn)程的創(chuàng)建學(xué)號班級20100612姓名專業(yè)計算機(jī)科學(xué)與技術(shù)學(xué)生所在學(xué)院計算機(jī)科學(xué)與技術(shù)指導(dǎo)教師實(shí)驗(yàn)室名稱地點(diǎn)計算機(jī)基礎(chǔ)第七實(shí)驗(yàn)室21B475哈爾濱工程大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院、實(shí)驗(yàn)概述實(shí)驗(yàn)名稱進(jìn)程的創(chuàng)建實(shí)驗(yàn)?zāi)康木毩?xí)使用EOSAPI函數(shù)CreateProcess創(chuàng)建一個進(jìn)程,掌握創(chuàng)建進(jìn)程的方法,理解進(jìn)程和程序的區(qū)別。(2)調(diào)試跟蹤C(jī)reateProcess函數(shù)的執(zhí)行過程,了解進(jìn)程的創(chuàng)建過程,理解進(jìn)程是資源分配的單位。實(shí)驗(yàn)類型驗(yàn)證性實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容準(zhǔn)備實(shí)驗(yàn)練習(xí)使用控制臺命令創(chuàng)建EOS應(yīng)練習(xí)的方式讓應(yīng)用程序創(chuàng)建另一個應(yīng)用程序的進(jìn)程調(diào)試Create調(diào)試Cre

2、atecess函數(shù)二、實(shí)驗(yàn)環(huán)境E0操作系統(tǒng)三、實(shí)驗(yàn)過程調(diào)試PsCreateProcess函數(shù):調(diào)試進(jìn)程控制塊的創(chuàng)建過程調(diào)試初始化進(jìn)程控制塊中各個成員變量的過程設(shè)計思路和流稈圖算法實(shí)現(xiàn)需要解決的問題及解答(1)在源代碼文件NewTwoProc.c提供的源代碼基礎(chǔ)上進(jìn)行修改,要求使用hello.exe同時創(chuàng)建10個進(jìn)程。提示:可以使用PROCESS_INFORMA類型定義一個有10個元素的數(shù)組,每一個元素對應(yīng)一個進(jìn)程。使用一個循環(huán)創(chuàng)建10個子進(jìn)程,然后再使用一個循環(huán)等待10個子進(jìn)程結(jié)束,得到退出碼后關(guān)閉句柄。答:后文中,有此題解決方案。嘗試根據(jù)之前對PsCreateProcess函數(shù)和PspCre

3、ateProcessEnvironment函數(shù)執(zhí)行過程的跟蹤調(diào)試,繪制一幅進(jìn)程創(chuàng)建過程的流程圖。在PsCreateProcess函數(shù)中調(diào)用了PspCreateProcessEnvironment函數(shù)后又先后調(diào)用了PspLoadProcessImage和PspCreateThread函數(shù),學(xué)習(xí)這些函數(shù)的主要功能。能夠交換這些函數(shù)被調(diào)用的順序嗎?思考其中的原因。答:PspCreateProcessEnvironment的主要功能是創(chuàng)建進(jìn)程控制塊并且為進(jìn)程創(chuàng)建了地址空間和分配了句柄表。PspLoadProcessImage是將進(jìn)程的可執(zhí)行映像加載到了進(jìn)程的地址空間中。PspCreateThread創(chuàng)

4、建了進(jìn)程的主線程。這三個函數(shù)被調(diào)用的順序是不能夠改變的就向上面描述的加載可執(zhí)行映像之前必須已經(jīng)為進(jìn)程創(chuàng)建了地址空間這樣才能夠確定可執(zhí)行映像可以被加載到內(nèi)存的什么位置在創(chuàng)建主線程之前必須已經(jīng)加載了可執(zhí)行映像這樣主線程才能夠知道自己要從哪里開始執(zhí)行,執(zhí)行哪些指令。因此不能交換他們的順序。主要數(shù)據(jù)結(jié)構(gòu)、實(shí)現(xiàn)代碼及其說明主要使用PROCESS_INFORMAT類型定義一個有10個元素的數(shù)組,每一個元素對應(yīng)一個進(jìn)程。使用一個循環(huán)創(chuàng)建10個子進(jìn)程,然后再使用一個循環(huán)等待10個子進(jìn)程結(jié)束,得到退出碼后關(guān)閉句柄。源程序并附上注釋使用hello.exe同時創(chuàng)建10個進(jìn)程的原代碼及注釋如下:#includeEOS

5、App.h/main函數(shù)參數(shù)的意義:/argc-argv數(shù)組的長度,大小至少為1,argc-1為命令行參數(shù)的數(shù)量。/argv-字符串指針數(shù)組,數(shù)組長度為命令行參數(shù)個數(shù)+1。其中argv0固定指向當(dāng)前/進(jìn)程所執(zhí)行的可執(zhí)行文件的路徑字符串,argv1及其后面的指針指向各個命令行/參數(shù)。/例如通過命令行內(nèi)容a:hello.exe-a-b啟動進(jìn)程后,hello.exe的main函/數(shù)的參數(shù)argc的值為3,argv0指向字符串a(chǎn):hello.exe,argv1指向/參數(shù)字符串-a,argv2指向參數(shù)字符串-main(intargc,char*argv)/啟動調(diào)試EOS應(yīng)用程序前要特別注意下面

6、的問題:/1、如果要在調(diào)試應(yīng)用程序時能夠調(diào)試進(jìn)入內(nèi)核并顯示對應(yīng)的源碼,/必須使用EOS核心項(xiàng)目編譯生成完全版本的SDK文件夾,然/后使用此文件夾覆蓋應(yīng)用程序項(xiàng)目中的SDK文件夾,并且EOS/核心項(xiàng)目在磁盤上的位置不能改變。/2、在啟動調(diào)試應(yīng)用程序之前必須首先刪除/禁用所有的斷點(diǎn),在斷/點(diǎn)中斷(int3)被命中后才能重新添加/啟用斷點(diǎn),否則啟動/調(diào)試會失敗。STARTUPINFOStartupInfo;PROCESS_INFORMATIONProcInfo10;ULONGulExitCode;/子進(jìn)程退出碼INTnResult=0;/main函數(shù)返回值。0表示成功,非0表示失敗。inti,j;#

7、ifdef_DEBUG/_asm(int$3nnop);#endifprintf(Create10processesandwaitfortheprocessesexit.nn);/使子進(jìn)程和父進(jìn)程使用相同的標(biāo)準(zhǔn)句柄。StartupInfo.StdInput=GetStdHandle(STD_INPUT_HANDLE);Startuplnfo.StdOutput=GetStdHandle(STD_OUTPUT_HANDLE);StartupInfo.StdError=GetStdHandle(STD_ERROR_HANDLE);/為一個應(yīng)用程序同時創(chuàng)建10個子進(jìn)程。for(i=0;i10;i+)

8、if(CreateProcess(A:Hello.exe,NULL,0,&StartupInfo,&ProcInfoi);elsefor(j=0;ji;j+)WaitForSingleObject(Proclnfoj.ProcessHandle,INFINITE);/得到并輸出子進(jìn)程的退出碼。GetExitCodeProcess(ProcInfoj.ProcessHandle,&ulExitCode);printf(nTheprocess%dexitwith%d.n,j,ulExitCode);/關(guān)閉不再使用的句柄。CloseHandle(Proclnfoj.ProcessHandle);Cl

9、oseHandle(Proclnfoj.ThreadHandle);printf(CreateProcessFailed,Errorcode:0 x%X.n,GetLastError();nResult=1;returnnResult;for(i=0;i10;i+)/創(chuàng)建子進(jìn)程成功,等待子進(jìn)程運(yùn)行結(jié)束。WaitForSingleObject(ProcInfoi.ProcessHandle,INFINITE);/得到并輸出子進(jìn)程的退出碼。GetExitCodeProcess(Proclnfoi.ProcessHandle,&ulExitCode);for(i=0;iPas=MmCreatePro

10、cessAddressSpace();添加一個斷點(diǎn)。按F5繼續(xù)調(diào)試,到此斷點(diǎn)處中斷。按F1C執(zhí)行此行代碼后中斷。在“監(jiān)視”窗口中查看進(jìn)程控制塊的成員變量Pas的值已經(jīng)不再是0。說明已經(jīng)初始化了進(jìn)程的4G虛擬地址空間。監(jiān)視4x輸出名稱PrifiiarvTiu-eadOkO,=lext=30Pre-r=OidOSyslvh=OkO,Priority-OkOPas=OxBO3b6e3,ubftetTabl=Oku,ThgdiLittHoM-I*Kt-0也Irer二00口蓉期sm疊=UxOCmdLin-CkO.=0 x0Imageiiitry-g営電肛珂譏OaeCjiStdDutpul-OiiOjSt

11、dErrorQ疏E;ExjiCude-OxCkll制作軼盤譙像.正在潔功Virtual比.八疔439使用F10一步步調(diào)試PspCreateProcessEnvironment函數(shù)中后面的代碼,在調(diào)試的過程中根據(jù)執(zhí)行的源代碼,查看“監(jiān)視”窗口中*NewProcess表達(dá)式的值結(jié)果如下:李崇殼5:)&第三講kdoliieReader,P,*easapp一Teva.若稱WtwPrctss調(diào)訶制作軟盤闔正在潔功VirtualK.幵始調(diào)試輸出tarn=AtOj.Priority=0 x8,Pg0i802be8,Objictltble=0 x603fC2a,TkradListHead=fNext-0 x0

12、,frev=UartJLPrioaryThread-OwDiaitListHeed=hl1気砂結(jié)果11氧査找日-OkQ#Cmdline二0 x0,司輸出N斷點(diǎn)IQ調(diào)月堆棧聯(lián)緒行483LrnUxUj,Im&.gEnUry=0,Stdlnpu*:=0 x0StOutput二0 x0,Stdlrror-叮idJExi(Code=0 x0fL李翥亮5;缶第三曲了IAdobeReid.-.警epsapp-T,密lab3EJ.1.監(jiān)視k冥輸出LSy-Ei-in-OacO.調(diào)試*N*wFrocftiEPriority-OxB,Fas二OKSOSfbeeSjObj*c+T.bl40h303:OxgFu=Ox.

13、i(制企軟整礁像正-比啟動VirtualPC.開始調(diào)試+ThreidLiEtHtai=Next=Dxa33fbT住,Prv=0st803bTLPrimaryThread-Qbtg屮乩讓電心詔=Next=OkO,1|甲查蝮聖1冋查找第hImagetfame二DxOCmLine-0 x3-DhOj,V沏出二眇點(diǎn)注訓(xùn)冃理壯就緒a47ImftgEntry=0,Stdlnjiut=血匕St-dOn+pil-t=OhO,StdError-OIkO,ExitCdde=U0亮(D)缶第三講jf1AdobeKe,.朝“sapp-.尅laV3截醫(yī).轄Microsof.axax輸出名稱*HiwFr0ctiiSystwii=OxOjFricrity=Qx6,Ez=OfiOattS,OhctTdl=Dxffi3Fc2ThratdLiitBiad=Uawt-OwSOSfbTFi:,Prev=0 xStJ3b7cXtl凋區(qū)制作軟蠱演像正右啟動VirtualPC開始調(diào)試Fydim冊聖Thu氧心=003HutLislHstd=Went-OiSOSftSOB,Prer=XCBfbSM,IntNuiit!-OnClOOfLOaOA:EQSAw.,CndLine=OkO,InChdJ#Inig&Entry=0 x0,StdOutpiit-CbibStdError=DicOElitCode=0 x031AdobeR

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論