版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)二
進(jìn)程管理(一)實(shí)驗(yàn)的或?qū)嶒?yàn)理.加深對(duì)進(jìn)概念的理,明確進(jìn)和程序的區(qū)別。.進(jìn)一步認(rèn)并發(fā)執(zhí)行實(shí)質(zhì)。.分析進(jìn)程爭(zhēng)資源現(xiàn),學(xué)習(xí)解進(jìn)程互斥的方法。.了解inux系統(tǒng)進(jìn)程通信基本原理。(二)實(shí)驗(yàn)容.進(jìn)程的創(chuàng)。.進(jìn)程的控。.①編寫一程序,使現(xiàn)實(shí)進(jìn)程軟中斷通信。要求:使用統(tǒng)調(diào)用fork()建兩個(gè)進(jìn)程,再系統(tǒng)調(diào)用ignal()讓父進(jìn)捕捉鍵盤上來的中斷信按EL鍵當(dāng)捕到中斷信號(hào)后,父進(jìn)程用系統(tǒng)調(diào)用Kill()兩個(gè)進(jìn)程發(fā)出信號(hào),子進(jìn)程捕捉信號(hào)后分輸出下列息后終止:ChildProcessllisKilledbyParent!ChildProcessl2isKilledbyParent!父進(jìn)程等待個(gè)子進(jìn)程止后,輸如下的信息后終止ParentProcessisKilled!②在上面的序中增加句signal(SIGNAL,SIG-IGN)和ignal(SIGQUIT,SIG-IGN),觀察執(zhí)行結(jié)果,分析原因4.進(jìn)程的管通信。編制一段程,實(shí)現(xiàn)進(jìn)的管理通。使用系統(tǒng)調(diào)pipe()建立一條道線;兩個(gè)子進(jìn)程1和2分別管道中寫一話:Child1issendingamessage!Child2issendingamessage!而父進(jìn)程則管道中讀來自于兩子進(jìn)程的信息,顯示在屏幕上。要求父進(jìn)程接收子進(jìn)P發(fā)來的息,然后再接收子進(jìn)程P2發(fā)來的息。實(shí)驗(yàn)2指導(dǎo)[驗(yàn)內(nèi)容1.進(jìn)程的創(chuàng)建〈任務(wù)〉編寫一段程,使用系調(diào)用fork()創(chuàng)兩個(gè)子進(jìn)。當(dāng)此程運(yùn)行時(shí),在系統(tǒng)中有一個(gè)父進(jìn)程和兩個(gè)子程活動(dòng)。每一個(gè)進(jìn)在屏幕上顯示一個(gè)字符;父進(jìn)程顯字符“a”,子進(jìn)程分別顯示字符“b和“c”試觀記錄屏幕上顯示結(jié)果并分析原。〈程序〉#include<>main(){intp1,p2;if(p1=fork())/*進(jìn)程創(chuàng)建功*/putchar('b');else{if(p2=fork())/*子程創(chuàng)建成功*putchar('c');elseputchar('a');/*父程執(zhí)行*/}}<運(yùn)行結(jié)果bca(時(shí)會(huì)出abc的任的排列分析:從進(jìn)執(zhí)行并發(fā)看,輸出的排列是有可的。原因:創(chuàng)建進(jìn)程需的時(shí)間雖可能多于出一個(gè)字的時(shí)間,各個(gè)進(jìn)程的時(shí)間片的獲得卻不是一定順序的,以輸出abc的排列都是可能的。2.進(jìn)程的控制<任務(wù)>修改已編寫的程序,每個(gè)程序輸出由單個(gè)字符改為一句話,再觀程序執(zhí)行屏幕上出的現(xiàn)象,并析其原因如果在程中使用系統(tǒng)調(diào)用lockf()來給每個(gè)程加鎖,可以實(shí)現(xiàn)進(jìn)程之間的互斥,觀并分析出的現(xiàn)象?!闯绦?#include<>main(){intp1,p2,i;if(p1=fork()){for(i=0;i<500;i++)printf("parent%d\n",i);wait(0);/*保證在子進(jìn)終止前,父程不會(huì)終*/exit(0);}else{if(p2=fork()){for(i=0;i<500;i++)printf("son%d\n",i);wait(0);/*保證在子進(jìn)終止前,父程不會(huì)終*/exit(0);/*向父進(jìn)程信號(hào)且進(jìn)程退出*/}else{for(i=0;i<500;i++)printf(“grandchild%d\n",i);exit(0);}}}〈運(yùn)行結(jié)果parent….son…grandchild…grandchild…或grandchild…son…grandchild…son…parent分析:由于數(shù)出的字符之間不會(huì)中斷,因,每個(gè)字符內(nèi)部的字順序輸出時(shí)不變。是由于進(jìn)并發(fā)執(zhí)行的調(diào)度順序和父子進(jìn)程的搶占處理問題,輸字符串的序和先后隨執(zhí)行的不而發(fā)生變。這與打印單字符的結(jié)果相同?!闯绦?#include<>#include<>main(){intp1,p2,i;if(p1=fork()){lockf(1,1,0);for(i=0;i<500;i++)printf("parent%d\n",i);lockf(1,0,0);wait(0);/*保在子進(jìn)程終止前,父進(jìn)不會(huì)終止*/exit(0);}else{if(p2=fork()){lockf(1,1,0);for(i=0;i<500;i++)printf("son%d\n",i);lockf(1,0,0);wait(0);/*保證在子進(jìn)終止前,父程不會(huì)終*/exit(0);}else{lockf(1,1,0);for(i=0;i<500;i++)printf("daughter%d\n",i);lockf(1,0,0);exit(0);}}}<運(yùn)行結(jié)果〉輸出parent塊son塊grandchild的順可能不同,但是每個(gè)塊的輸出過程會(huì)被打斷分析:因?yàn)槭龀绦驁?zhí)時(shí),lockf(1,1,0)鎖定標(biāo)準(zhǔn)輸設(shè)備,lockf(1,0,0)解鎖準(zhǔn)輸出設(shè)備,在lockf(1,1,0)與lockf(1,0,0)中間的for循環(huán)輸出不被中斷,鎖與不加鎖效果不相同。3.軟中斷通信〈任務(wù)1編制一段程,使用系調(diào)用fork()創(chuàng)建兩個(gè)子進(jìn)程,再用系統(tǒng)調(diào)用signal()讓父進(jìn)程捕鍵盤上來的中信號(hào)(即ctrl+c鍵),當(dāng)捕到中斷信后,父進(jìn)用系統(tǒng)調(diào)用kill()向個(gè)子進(jìn)程發(fā)出信號(hào)子進(jìn)程捕到信號(hào)后分別輸出下列信息后終止:childkilledbyparent!childkilledbyparent!父進(jìn)程等待個(gè)子進(jìn)程止后,輸以下信息后終止:parentprocessiskilled!<程序流程圖>〈程序〉#include<>#include<>#include<>voidwaiting(),stop(),alarming();intwait_mark;main(){intp1,p2;if(p1=fork())/*創(chuàng)建進(jìn)程p1*/{if(p2=fork()){
/*創(chuàng)建進(jìn)程wait_mark=1;signal(SIGINT,stop);/*接收到c信,轉(zhuǎn)stop*/接受SIGALRM*/waiting();kill(p1,16);/*向p1軟中信號(hào)kill(p2,17);/*向發(fā)中斷信號(hào)wait(0);/*同步/wait(0);printf("parentprocessiskilled!\n");exit(0);}else{wait_mark=1;signal(17,stop);signal(SIGINT,SIG_IGN);/*忽略^c信號(hào)/while(wait_mark!=0);lockf(1,1,0);printf("childprocess2iskilledbyparent!\n");lockf(1,0,0);exit(0);}}else{wait_mark=1;signal(16,stop);signal(SIGINT,SIG_IGN);/*忽略^信號(hào)/while(wait_mark!=0)lockf(1,1,0);printf("childprocess1killedparent!\n");lockf(1,0,0);exit(0);}}voidwaiting(){sleep(5);if(wait_mark!=0)kill(getpid(),SIGALRM);}voidalarming(){wait_mark=0;}voidstop(){wait_mark=0;}<運(yùn)行結(jié)果不做任何操等待五秒父進(jìn)程回子進(jìn)程縣推出后退出,并打印退出順序;或點(diǎn)擊ctrl+C后程序退出打印退出順序?!慈蝿?wù)2在上面的任1中增加語(yǔ)句signal(SIGINT,SIG_IGN)和句signal(SIGQUIT,SIG_IGN),觀察執(zhí)行結(jié)果,分析原因這里,signal(SIGINT,SIG_IGN)和signal(SIGQUIT,SIG_IGN)分別為忽鍵信號(hào)以及忽中斷信號(hào)<程序>#include<>#include<>#include<>intpid1,pid2;intEndFlag=0;intpf1=0;intpf2=0;voidIntDelete(){kill(pid1,16);kill(pid2,17);}voidInt1(){printf("childprocesskilled!byparent\n");exit(0);}voidInt2(){printf("childprocesskilled!byparent\n");exit(0);}main(){intexitpid;if(pid1=fork()){if(pid2=fork()){signal(SIGINT,IntDelete);waitpid(-1,&exitpid,0);waitpid(-1,&exitpid,0);printf("parentprocessiskilled\n");exit(0);}else{signal(SIGINT,SIG_IGN);signal(17,Int2);pause();}}else{signal(SIGINT,SIG_IGN);signal(16,Int1);pause();}}〈運(yùn)行結(jié)果請(qǐng)將上述程輸入計(jì)算后,執(zhí)行觀察。3.進(jìn)程的管道信〈任務(wù)〉編制一段程,實(shí)現(xiàn)進(jìn)的管道通。使用系統(tǒng)調(diào)用pipe()建立一條管線。兩個(gè)進(jìn)程p1和p2分別向通道寫一句話child1processissendingmessage!child2processissendingmessage!而父進(jìn)程則管道中讀來自兩個(gè)程的信息,顯示在屏幕上?!闯绦颉?include<>#include<>#include<>intpid1,pid2;main(){intfd[2];charoutpipe[100],inpipe[100];pipe(fd);/*建一管道/while((pid1=fork())==-1);if(pid1==0){lockf(fd[1],1,0);sprintf(outpipe,"child1processissendingmessage!");/*把串入數(shù)組outpipe中/write(fd[1],outpipe,50);/*向管道寫長(zhǎng)50字節(jié)的串/sleep(5);/*我阻塞5秒/lockf(fd[1],0,0);exit(0);}else{while((pid2=fork(if(pid2==0){lockf(fd[1],1,0);/*斥*/sprintf(outpipe,"child2processissendingmessage!");write(fd[1],outpipe,50);sleep(5);lockf(fd[1],0,0);exit(0);}else{wait(0);/*同步/read(fd[0],inpipe,50);/*管道
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年統(tǒng)編版2024高二語(yǔ)文下冊(cè)階段測(cè)試試卷含答案
- 2025年滬教版選修6地理上冊(cè)階段測(cè)試試卷含答案
- 2025年人教版(2024)九年級(jí)歷史上冊(cè)月考試卷含答案
- 2025年度住宅小區(qū)暖通設(shè)備更新?lián)Q代合同4篇
- 2025年度特色菜系廚師勞動(dòng)合同模板4篇
- 中英對(duì)照2024年服務(wù)出口合同樣本
- 2025年度木地板施工與室內(nèi)空氣質(zhì)量保障合同4篇
- 二零二五年度抹灰班組裝配式建筑合作合同4篇
- 二零二五年度戶外木結(jié)構(gòu)建筑清包施工合同4篇
- 二零二五年度紀(jì)錄片拍攝服務(wù)合同書4篇
- 2024公路瀝青路面結(jié)構(gòu)內(nèi)部狀況三維探地雷達(dá)快速檢測(cè)規(guī)程
- 2024年高考真題-地理(河北卷) 含答案
- 中國(guó)高血壓防治指南(2024年修訂版)解讀課件
- 2024年浙江省中考科學(xué)試卷
- 2024風(fēng)力發(fā)電葉片維保作業(yè)技術(shù)規(guī)范
- 《思想道德與法治》課程教學(xué)大綱
- 2024光儲(chǔ)充一體化系統(tǒng)解決方案
- 2024年全國(guó)高考新課標(biāo)卷物理真題(含答案)
- 處理后事授權(quán)委托書
- 食材配送服務(wù)方案投標(biāo)方案(技術(shù)方案)
- 封條(標(biāo)準(zhǔn)A4打印封條)
評(píng)論
0/150
提交評(píng)論