




版權(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)告課程名稱操作系統(tǒng)實(shí)驗(yàn)實(shí)驗(yàn)項(xiàng)目名稱進(jìn)程的創(chuàng)建學(xué)號(hào)班級(jí)20100612專業(yè)電腦科學(xué)與技人學(xué)生所在學(xué)院電腦科學(xué)與技術(shù)指導(dǎo)教師實(shí)驗(yàn)室名稱地點(diǎn)電腦基礎(chǔ)第七實(shí)驗(yàn)室21B475哈爾濱工程大學(xué)電腦科學(xué)與技術(shù)學(xué)院、實(shí)驗(yàn)概述1 .實(shí)驗(yàn)名稱進(jìn)程的創(chuàng)建2 .實(shí)驗(yàn)?zāi)康?1)練習(xí)使用EOSAPI函數(shù)CreateProcess&J建一個(gè)進(jìn)程,掌握創(chuàng)建進(jìn)程的方法,理解進(jìn)程和程序的區(qū)別。(2)調(diào)試跟蹤C(jī)reateProcess函數(shù)的執(zhí)行過(guò)程,了解進(jìn)程的創(chuàng)建過(guò)程,理解進(jìn)程是資源分配的單位3 .實(shí)驗(yàn)類型驗(yàn)證性實(shí)驗(yàn)4 .實(shí)驗(yàn)內(nèi)容二、實(shí)驗(yàn)環(huán)境EO魄作系統(tǒng)三、實(shí)驗(yàn)過(guò)程1. 設(shè)計(jì)思路和流程圖2. 算法實(shí)現(xiàn)3. 需要
2、解決的問(wèn)題及解答在源代碼文件NewTwoProc.碌1供的源代碼基礎(chǔ)上進(jìn)行修改,要求使用hello.exe同時(shí)創(chuàng)建10個(gè)進(jìn)程。提示:可以使用PROCESS_INFORMATOte義一個(gè)有10個(gè)元素的數(shù)組,每一個(gè)元素對(duì)應(yīng)一個(gè)進(jìn)程。使用一個(gè)循環(huán)創(chuàng)建10個(gè)子進(jìn)程,然后再使用一個(gè)循環(huán)等待10個(gè)子進(jìn)程結(jié)束,得到退出碼后關(guān)閉句柄。答:后文中,有此題解決方案。(2)嘗試根據(jù)之前對(duì)PsCreateProcess函數(shù)和PspCreateProcessEnvironment函數(shù)執(zhí)行過(guò)程的跟蹤調(diào)試,繪制一幅進(jìn)程創(chuàng)建過(guò)程的流程圖。(3)在PsCreateProcess函數(shù)中調(diào)用了PspCreateProcessEnv
3、ironment函數(shù)后又先后調(diào)用了PspLoadProcessImag琲口PspCreateThread函數(shù),學(xué)習(xí)這些函數(shù)的主要功能。能夠交換這些函數(shù)被調(diào)用的順序嗎?思考其中的原因。答:PspCreateProcessEnvironment的主要功能是創(chuàng)建進(jìn)程控制塊并且為進(jìn)程數(shù)被調(diào)用的順序是不能夠改變的創(chuàng)建了地址空間和分配了句柄表。PspLoadProcessImagel1將進(jìn)程的可執(zhí)行映像加載到了進(jìn)程的地址空間中。PspCreateThread創(chuàng)建了進(jìn)程的主線程。這三個(gè)函就向上面描述的加載可執(zhí)行映像之前必須已經(jīng)為進(jìn)程創(chuàng)建了地址空間這樣才能夠確定可執(zhí)行映像可以被加載到內(nèi)存的什么位置在創(chuàng)建主線程
4、之前必須已經(jīng)加載了可執(zhí)行映像這樣主線程才能夠知道自己要從哪里開始執(zhí)行,執(zhí)行哪些指令。因此不能交換他們的順序。4 .主要數(shù)據(jù)結(jié)構(gòu)、實(shí)現(xiàn)代碼及其說(shuō)明主要使用PROCESS_INFORMATOte義一個(gè)有10個(gè)元素的數(shù)組,每一個(gè)元素對(duì)應(yīng)一個(gè)進(jìn)程。使用一個(gè)循環(huán)創(chuàng)建10個(gè)子進(jìn)程,然后再使用一個(gè)循環(huán)等待10個(gè)子進(jìn)程結(jié)束,得到退出碼后關(guān)閉句柄。5 .源程序并附上注釋使用hello.exe同時(shí)創(chuàng)建10個(gè)進(jìn)程的原代碼及注釋如下:#include"EOSApp.h"/main函數(shù)參數(shù)的意義:/argc-argv數(shù)組的長(zhǎng)度,大小至少為1,argc-1為命令行參數(shù)的數(shù)量。/argv-字符串指針數(shù)組
5、,數(shù)組長(zhǎng)度為命令行參數(shù)個(gè)數(shù)+1。其中argv0固定指向當(dāng)前/進(jìn)程所執(zhí)行的可執(zhí)行文件的路徑字符串,argv1及其后面的指針指向各個(gè)命令行/參數(shù)。/例如通過(guò)命令行內(nèi)容"a:hello.exe-a-b"啟動(dòng)進(jìn)程后,hello.exe的main函/數(shù)的參數(shù)argc的值為3,argv0指向字符串"a:hello.exe",argv1指向/參數(shù)字符串"-a",argv2指向參數(shù)字符串"-b"。intmain(intargc,char*argv口)/啟動(dòng)調(diào)試EOS應(yīng)用程序前要特別注意下面的問(wèn)題:/1、如果要在調(diào)試應(yīng)用程序時(shí)能夠調(diào)
6、試進(jìn)入內(nèi)核并顯示對(duì)應(yīng)的源碼,/必須使用EOS核心項(xiàng)目編譯生成完全版本的SDK文件夾,然/后使用此文件夾覆蓋應(yīng)用程序項(xiàng)目中的SDK文件夾,并且EOS/核心項(xiàng)目在磁盤上的位置不能改變。/2、在啟動(dòng)調(diào)試應(yīng)用程序之前必須首先刪除/禁用所有的斷點(diǎn),在斷/點(diǎn)中斷(int3)被命中后才能重新添加/啟用斷點(diǎn),否則啟動(dòng)/調(diào)試會(huì)失敗。STARTUPINFOStartupInfo;PROCESS_INFORMATIONProcInfo10;ULONGulExitCode;/子進(jìn)程退出碼INTnResult=0;/main函數(shù)返回值。0表示成功,非0表示失敗。inti,j;/#ifdef_DEBUG/_asm(&qu
7、ot;int$3nnop");/#endifprintf("Create10processesandwaitfortheprocessesexit.nn");/使子進(jìn)程和父進(jìn)程使用相同的標(biāo)準(zhǔn)句柄。StartupInfo.StdInput=GetStdHandle(STD_INPUT_HANDLE);StartupInfo.StdOutput=GetStdHandle(STD_OUTPUT_HANDLE);StartupInfo.StdError=GetStdHandle(STD_ERROR_HANDLE);/為一個(gè)應(yīng)用程序同時(shí)創(chuàng)建10個(gè)子進(jìn)程。for(i=0;i&
8、lt;10;i+)if(CreateProcess("A:Hello.exe",NULL,0,&StartupInfo,&ProcInfoi);elsefor(j=0;j<i;j+)WaitForSingleObject(ProcInfoj.ProcessHandle,INFINITE);/得到并輸出子進(jìn)程的退出碼。GetExitCodeProcess(ProcInfoj.ProcessHandle,&ulExitCode);printf("nTheprocess%dexitwith%d.n",j,ulExitCode);/
9、關(guān)閉不再使用的句柄。CloseHandle(ProcInfoj.ProcessHandle);CloseHandle(ProcInfoj.ThreadHandle);printf("CreateProcessFailed,Errorcode:0x%X.n",GetLastError();nResult=1;returnnResult;for(i=0;i<10;i+)/創(chuàng)建子進(jìn)程成功,等待子進(jìn)程運(yùn)行結(jié)束。WaitForSingleObject(ProcInfoi.ProcessHandle,INFINITE);/得到并輸出子進(jìn)程的退出碼。GetExitCodeProce
10、ss(ProcInfoi.ProcessHandle,&ulExitCode);for(i=0;i<10;i+)printf("nTheprocess%dexitwith%d.n",i,ulExitCode);/關(guān)閉不再使用的句柄。CloseHandle(ProcInfoi.ProcessHandle);CloseHandle(ProcInfoi.ThreadHandle);returnnResult;6.程序運(yùn)行時(shí)的初值和運(yùn)行結(jié)果a.使用控制臺(tái)命令創(chuàng)建EOSE用程序進(jìn)程b.查看應(yīng)用程序創(chuàng)建另一個(gè)應(yīng)用程序的進(jìn)程的執(zhí)行結(jié)果(OSLabPC-licrosoftVi
11、rtualPC2004ActionEditCDJloppxMeLpCflNSriLE-l(FrfissCtrI+F1FBtnsuitchcnnsnlf:uindou.r)HeicametoEOSshe11>iitnnmArsEOSApprext?CreateaprocessanduwitfortheprocesssitHello,world1HeiLo,uorIdfHello,world*Mcllo.uorld*Heilojuorldlycbye?Ticprocessexitmith0,p;ED3App.exeexituItii0x00000060.15c.調(diào)試進(jìn)程控制塊的創(chuàng)建過(guò)程監(jiān)視輸
12、巴名稱*Hewri wee is調(diào)試Syittci -。血 Pr) ori +y = 0w0H F« - OxBOQfM ObjectTsble = 0x0, Thr a a.lLi = tJHa -a. - lesct = OyO, Fr#v = ChdJPr i m aryThread - OkO VaitListKfted = Tmki - 口才1 Prpv = DuO制作軟盤蠟舞.正在啟動(dòng)Virtual PC 用邰,或,.EL q喘畢麗砌¥,Im*geJamE - OiiO, CmJLig s Ok0j = 0x0, ImugeEntry 二。 St虹nput -
13、OzOj stdOu:put obp StJError = 0x0, Exi tC»d« = 0x0行439季崇完0J:)二1eVltlD.將鼠標(biāo)移動(dòng)到“監(jiān)視”窗口中此表達(dá)式的“值”屬性上,會(huì)彈出一個(gè)臨時(shí)窗口,在臨時(shí)窗口中會(huì)按照進(jìn)程控制塊的結(jié)構(gòu)顯示各個(gè)成員變量的值可以參考PROCESS構(gòu)體的定義。由于只是新建了進(jìn)程控制塊,還沒有初始化其中成員變量,所以值都為00d.接下來(lái)調(diào)試初始化進(jìn)程控制塊中各個(gè)成員變量的過(guò)程:1 .創(chuàng)建進(jìn)程的地址空間,即4Gs擬地址空間。在代碼行create.c文件的第437行NewProcess->Pas=MmCreateProcessAddre
14、ssSpace();添加一個(gè)斷點(diǎn)。2 .按F郵續(xù)調(diào)試,到此斷點(diǎn)處中斷。3 .按F10執(zhí)行此行代碼后中斷?!氨O(jiān)視”窗口中查看進(jìn)程控制塊的成員變量Pas的值已經(jīng)不再是0。說(shuō)明已經(jīng)初始化了進(jìn)程的4Gg擬地址空間。使用F10L步步調(diào)試PspCreateProcessEnvironment函數(shù)中后面的代碼,在調(diào)試的過(guò)程中根據(jù)執(zhí)行的源代碼,查看“監(jiān)視”窗口中*NewProcessg達(dá)式的值結(jié)果如名稱*MewPrcessSyshea=Qb<(XPriority=MO,Fas=0*803£1048,Objftcl.Table=OK803fc2a8,Thr«tdLiitatd=lT*t
15、-。延Frav=(h(口就轉(zhuǎn)J*_PrimaryThread-OtetO,WaitLiStHead=M色ict=MO,Pr&v=ObtOLm,整Nm,e二Qm。,CmUin。-SQ,Em號(hào)菖eBase=QscQ1gImasgelntry二口)Stdllnput-0x0,Si.dOu.tputQM/StiError=0x0,ExitCod*=0x0Q乂類sti一李崇亮S:)AdobeReader,監(jiān)視名稱«NewPro<tKi箱出國(guó)西腌果1司查檄IEyTam二OiO,Priorily-0x8,PasHOsSOSffeJBeS),3bj«tTbH«=0x
16、603fc2Tkr«adListlie4d=fHext=OiD,ftev-0X0LPrir»aryThr*ad=OicD,faitListMetd=Hext=OzOPrev-0x0類:0x8,F&m=Ojl.Itla-rt>h調(diào)試制作軟盤鏡像二正在自動(dòng)VirTualHJ.開始調(diào)試.<111就緒hIm自鉀Hs電-OkOCmdLine=0k&rn=Ok0),ImageEnjry-0,StdlnpuL-0x0,StdOutpit=OxO;Stdlrror=0x0,ExitCodg;=DkO輸出0新點(diǎn)J艙廊堆根行際監(jiān)視JIAdobeRaid.44XaPP
17、_r名褥*HwFr&ctssSyttn=0x04Priority=&&Fas=OMSOSfibfieSjObjectTable-0x303£c2a8,Tlu"(Nsx<=OxaOSfbTfc,Frev=Q*8Q3fbT3PrimaryThread-Ox。,iitListHtad=N(xt=OmO,Prev-0x0tQX輸出1類調(diào)試Sc瓦Fu-0k.xti制作軟盤鏡像一.正在啟動(dòng)VirtualPC.,.開始調(diào)試.ai金闋!1m喻出口新思冊(cè)調(diào)用逐事查找結(jié)果:不查找更就緒高m:)*第三講j,ImgelfairTie=3x0CrhniLliLe-。聞j
18、Imtgelas=3x0,ImagtEntry=0,5tdimjut=OkOpStdOntput=DxO,StdError-OteO,ExitC0de=OteD3IAdobeRe.ei>sapp一,.行47Microsof.,奮視名稱*HewFrocess力修第三講不查找結(jié)果11事董曲Systcm-0工口工Priority=口響Pas=QkEQ3fb6用ObjectTatie=Ox&CG&ZaS.ThreadLi.*stMead=:=01x003£17Xc,Prev"0x003£t7fcLPrifliaryrhr-tad=0x0,WaitListlk鼠二Next=0x003fbaCB,Prev=&K8O3a0C8匕m*gwN孫。-0x0,CmUiTte-Qk。.工mHgef監(jiān)電QkO,ImageEntry=QStdlnjjul-OkO,StdOutpat=OMOfStdError=0x0,Exi=0x0PC輸出葵5:口黨的Pas鏡盤動(dòng)試軟啟作在始制正開I官輸出斷點(diǎn)的調(diào)用墻/行4g中文(中國(guó))信AdobeReader".號(hào)口輻ppTev
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 結(jié)腸癌護(hù)理常規(guī)
- 小區(qū)交付施工方案
- 2026版《全品高考》選考復(fù)習(xí)方案物理01 課時(shí)作業(yè)(一) 走近細(xì)胞含答案
- 如何發(fā)現(xiàn)胃腸腫瘤信號(hào)
- 圖書英文面試題及答案
- 幼兒快樂生活健康成長(zhǎng)
- 園林會(huì)計(jì)面試題及答案
- 前廳部考試題及答案
- 幼兒園健康課課件
- 內(nèi)科主管考試題及答案
- 2023護(hù)理分級(jí)標(biāo)準(zhǔn)(代替WS-T431-2013)
- 242個(gè)國(guó)家中英文名稱對(duì)照
- 多聯(lián)機(jī)技術(shù)與產(chǎn)品介紹-課件
- 易制毒化學(xué)品進(jìn)貨采購(gòu)管理制度
- 16個(gè)露天煤礦事故案例
- 管道熱損失的計(jì)算方法
- 2019年人教版小學(xué)語(yǔ)文四年級(jí)至六年級(jí)生字表(加注拼音)
- 九招致勝課件完整版
- 裝修設(shè)計(jì)文件消防專篇
- 八年級(jí)物理浮力壓強(qiáng)專題經(jīng)典計(jì)算題(含答案解析)
- 專業(yè)技術(shù)人員職務(wù)聘任書
評(píng)論
0/150
提交評(píng)論