下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、學(xué)號 201216010506 班級:計科1201班 姓名: 實驗二進(jìn)程的創(chuàng)建 一、實驗?zāi)康?1、掌握進(jìn)程的概念,明確進(jìn)程的含義 2、認(rèn)識并了解并發(fā)執(zhí)行的實質(zhì) 二、實驗內(nèi)容 1、編寫一段程序,使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個子進(jìn)程。當(dāng)此程序運行時,在系統(tǒng)中有一 個父進(jìn)程和兩個子進(jìn)程活動。讓每一個進(jìn)程在屏幕上顯示一個字符:父進(jìn)程顯示a,子進(jìn)程 分別顯示字符b和字符C。試觀察記錄屏幕上的顯示結(jié)果,并分析原因。 ubuntuubuntu 二 - / ri utpuntkjuthvjnt-u 二- / ri ubun t_kjg)kjbur* Lu 二 #e t_kl$)kjbUVYt_J 二 #E
2、上 7 LjbutJ 二#E n.ou 化calIc.U iFfebfjhLjrrLj0uhuntLj ; AcbubuntLjubuntLj iadubi_intLjubuntu 二 / QU / / / 1_ 口 0 “ rr r kkk L Q :c A 廠 u_u kk 0 / - -kkk Lj-r 總 _ out 刊 _ out 對于輸出結(jié)果,abc, acb等都有可能,從進(jìn)程并發(fā)執(zhí)行來看,各種情況都有可能,所以父 進(jìn)程與紫金城的輸出內(nèi)容會疊加在一起,輸出次序帶有隨機性。 daughter 及son 2、修改上述程序,每一個進(jìn)程循環(huán)顯示一句話。子進(jìn)程顯示 父進(jìn)程顯示P are nt
3、,觀察結(jié)果,分析原因。 由于函數(shù)printf()在輸出字符串時不會被中斷,因此,字符串內(nèi)部字符順序輸出不變。但由 于進(jìn)程并發(fā)執(zhí)行的調(diào)度順序和父子進(jìn)程搶占處理機問題,輸出字符串的順序和先后隨著執(zhí)行 的不同而發(fā)生變化,這與打印單字符的結(jié)果相同。 OG ubuntu(ubuntu: */fork1 parent parent parent parent parent parent parent a.out forklc ubuntuubuntu:-/forkl$ /a.out parent 0 daughter 6 1 2 3 4 5 6 7 3 4 5 6 7 8 9 daughter 1 par
4、ent 8 daughter 2 parent 9 daughter daughter daughter daughter daughter daughter daughter son 0 son 1 oo ubuntu(Wubuntu: */fork1 son 9 ubuntuubuntu:/fokl$ ./a.out parent 0 parent 1 parent 2 son 0 parent 3 parent 4 parent 5 parent 6 parent 7 parent 8 parent 9 daughter 0 son 1 son 2 daughter 1 son 3 da
5、ughter 2 son 4 daughter 3 son 5 daughter 4 son 6 三、實驗準(zhǔn)備 (1) 閱讀LINUX的fork.c源碼文件,分析進(jìn)程的創(chuàng)建過程。 (2) 閱讀LINUX的sched.c源碼文件,加深對進(jìn)程管理概念的認(rèn)識。 四、思考 (1) 系統(tǒng)是怎樣創(chuàng)建進(jìn)程? linux系統(tǒng)創(chuàng)建進(jìn)程都是用fork() 系統(tǒng)調(diào)用創(chuàng)建子進(jìn)程由fork() 系統(tǒng)調(diào)用創(chuàng)建的新進(jìn) 程被稱為子進(jìn)程。該函數(shù)被調(diào)用一次,但返回兩次。如果 fork()進(jìn)程調(diào)用成功,兩次返回 的區(qū)別是子進(jìn)程的返回值是新子進(jìn)程的進(jìn)程號 (2) 可執(zhí)行文件加載時進(jìn)行了哪些處理? 當(dāng)操作系統(tǒng)裝載一個可執(zhí)行文件的時候,
6、首先操作系統(tǒng)判斷該文件是否是一個合法的可執(zhí) 行文件。如果是,操作系統(tǒng)將按照段表中的指示為可執(zhí)行程序分配地址空間。 (3)當(dāng)首次調(diào)用新創(chuàng)建的進(jìn)程時,其入口在哪里? fork系統(tǒng)調(diào)用創(chuàng)建的子進(jìn)程繼承了原進(jìn)程的con text,也就是說fork調(diào)用成功后,子進(jìn)程 與父進(jìn)程并發(fā)執(zhí)行相同的代碼。但由于子進(jìn)程也繼承了父進(jìn)程的程序指針,所以子進(jìn)程是從 fork ()后的語句開始執(zhí)行(也就是新進(jìn)程調(diào)用的入口 )。另外fork在子進(jìn)程和父進(jìn)程中的返 回值是不同的。在父進(jìn)程中返回子進(jìn)程的PID,而在子進(jìn)程中返回 五、參考程序 1、 #i nclude mai n() int p1, p2; while( p仁fork( ) = -1); if (p1= 0)p utchar(b); else while( p2 = fork( ) = -1); if(p2 = 0) p utchar(c); else pu tchar(a); 2、 #in clude /*創(chuàng)建子進(jìn)程P1*/ /*創(chuàng)建子進(jìn)程p2*/ mai n() int p1, p2,i; while( p1 = fork( ) = -1); if (p1 = 0) for(i = 0;i10;i+) prin tf(daughter%dn ”,i); else /*創(chuàng)建子進(jìn)程p1*/ /* 創(chuàng)建子進(jìn)程 p2*/ while(p2 =
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 道路安全學(xué)習(xí)心得體會
- 護理人員職業(yè)道德培訓(xùn)
- 油庫應(yīng)急處理流程
- 初中歷史教案反思
- 布藝扎染教案反思
- 白露主題班會教案
- 和的認(rèn)識說課稿
- 文化創(chuàng)意承銷協(xié)議書范本
- 水利工程機械施工合同
- 土建項目協(xié)議書范本
- 墊片沖壓模具設(shè)計畢業(yè)設(shè)計論文
- 常見矩形管規(guī)格表
- 冷庫工程特點施工難點分析及對策
- Python-Django開發(fā)實戰(zhàn)
- 小學(xué)道法小學(xué)道法1我們的好朋友--第一課時ppt課件
- 路由和波長分配PPT課件
- 光伏組件開路電壓測試記錄
- 配電箱安裝規(guī)范
- AP1000反應(yīng)堆結(jié)構(gòu)設(shè)計
- 中英文商務(wù)派遣函樣板
- 彎臂車床夾具設(shè)計說明書
評論
0/150
提交評論