版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)實(shí)驗(yàn)2 進(jìn)程管理(1) 進(jìn)程的創(chuàng)建:編寫一段程序,使用系統(tǒng)調(diào)用fork() 創(chuàng)建兩個(gè)子進(jìn)程。當(dāng)此程序運(yùn)行時(shí),在系統(tǒng)中有一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動(dòng)。讓每一個(gè)進(jìn)程在屏幕上顯示一個(gè)字符:父進(jìn)程顯示字符“a”,子進(jìn)程分別顯示字符“b”和“c”。試觀察記錄屏幕上的顯示結(jié)果,并分析原因。實(shí)驗(yàn)代碼:#include #include main()pid_t pid1,pid2;pid1=fork();if(pid1=0)putchar(b);else if(pid10)return
2、-1;elsepid2=fork();if(pid2=0)putchar(c);else if(pid20)return -1;else putchar(a);運(yùn)行結(jié)果bca(會(huì)出現(xiàn)acb等任意的排列),如圖分析原因進(jìn)程執(zhí)行并發(fā),輸出排列是隨機(jī)的,fork()創(chuàng)建進(jìn)程所需的時(shí)間一般多于輸出一個(gè)字符的時(shí)間,所以輸出a較晚,但各個(gè)進(jìn)程的時(shí)間片的獲得卻不是一定是順序的。(2)進(jìn)程的控制修改已經(jīng)編寫的程序,將每個(gè)進(jìn)程輸出一個(gè)字符改為每個(gè)進(jìn)程輸出一句話,再觀察程序執(zhí)行時(shí)屏幕上出現(xiàn)的現(xiàn)象,并分析原因。實(shí)驗(yàn)代碼#include #include main()pid_t pid1,pid2;pid1=fork
3、();if(pid1=0)printf(this is process b.n);else if(pid10)return -1;elsepid2=fork();if(pid2=0)printf(this is process c.n);else if(pid20)return -1;else printf(this is father process.n);運(yùn)行結(jié)果this is father process.this is process c.this is process b.分析原因由于函數(shù)printf()輸出的字符串之間不會(huì)被中斷,因此,每個(gè)字符串內(nèi)部的字符順序輸出時(shí)不變。但是,由于
4、進(jìn)程并發(fā)執(zhí)行時(shí)的調(diào)度順序會(huì)不同,輸出字符串的順序和先后隨著執(zhí)行的不同而發(fā)生變化。后建的進(jìn)程c可以在進(jìn)程b之前完成。父進(jìn)程需要?jiǎng)?chuàng)建進(jìn)程,執(zhí)行輸出較晚,這與打印單字符的結(jié)果相同。(3)進(jìn)程通信a) 編寫一段程序,使其實(shí)現(xiàn)進(jìn)程的軟中斷通信。要求:使用系統(tǒng)調(diào)用fork() 創(chuàng)建兩個(gè)子進(jìn)程,再用系統(tǒng)調(diào)用signal() 讓父進(jìn)程捕捉鍵盤上來(lái)的中斷信號(hào)(即按DEL鍵);當(dāng)捕捉到中斷信號(hào)后,父進(jìn)程用系統(tǒng)調(diào)用Kill() 向兩個(gè)子進(jìn)程發(fā)出信號(hào),子進(jìn)程捕捉到信號(hào)后分別輸出下列信息后終止:Child Process 1 is killed by Parent!Child Process 2 is killed b
5、y Parent!父進(jìn)程等待兩個(gè)子進(jìn)程終止后,輸出如下的信息后終止:Parent Process is killed!實(shí)驗(yàn)代碼#include#include#includevoid waiting();void stop();void alarming();int wait_mark;main() int pid1,pid2;pid1=fork(); if(pid10) pid2=fork(); if(pid20) wait_mark=1; signal(SIGINT,stop);/*接收到c信號(hào),轉(zhuǎn)stop*/ signal(SIGALRM,alarming);/*接受SIGALRMwai
6、ting();*/ while(wait_mark!=0); kill(pid1,16);/*向pid1發(fā)軟中斷信號(hào)16*/ kill(pid2,17);/*向pid2發(fā)軟中斷信號(hào)17*/ wait(0);/*同步*/ wait(0); printf(Parent process is killed!n); exit(0); else if(pid2=0) wait_mark=1; signal(17,stop); signal(SIGINT,SIG_IGN);/*忽略c信號(hào)*/ while(wait_mark!=0) lockf(1,1,0); printf(Child Process 2
7、is killed by Parent!n); lockf(1,0,0); exit(0); else if(pid1=0) wait_mark=1;signal(16,stop); signal(SIGINT,SIG_IGN);/*忽略c信號(hào)*/ while(wait_mark!=0) lockf(1,1,0); printf(nChild Process 1 is killed by Parent!n); lockf(1,0,0); exit(0); void waiting() sleep(5); if(wait_mark!=0) kill(getpid(),SIGALRM);void
8、alarming() wait_mark=0;void stop() wait_mark=0;運(yùn)行結(jié)果Child Process 1 is killed by Parent!Child Process 2 is killed by Parent!Parent Process is killed!(4)進(jìn)程的管道通信編制一段程序,實(shí)現(xiàn)進(jìn)程的管道通信。使用系統(tǒng)調(diào)用pipe() 建立一條管道線;兩個(gè)子進(jìn)程P1和P2分別向管道各寫一句話:Child 1 is sending a message!Child 2 is sending a message!而父進(jìn)程則從管道中讀出來(lái)自于兩個(gè)子進(jìn)程的信息,顯示
9、在屏幕上。要求父進(jìn)程先接收子進(jìn)程P1發(fā)來(lái)的消息,然后再接收子進(jìn)程P2發(fā)來(lái)的消息。實(shí)驗(yàn)代碼#include #include #include int pid1,pid2;main()int fd2;char outpipe100,inpipe100;pipe(fd);/*創(chuàng)建一個(gè)管道*/while(pid1=fork()=-1);if(pid1=0)lockf(fd1,1,0);sprintf(outpipe,Child 1 is sending a message!);/*把串放入數(shù)組outpipe中*/write(fd1,outpipe,50);/*向管道寫長(zhǎng)為50字節(jié)的串*/sleep(5);/*自我阻塞5秒*/lockf(fd1,0,0);exit(0);elsewhile(pid2=fork()=-1);if(pid2=0)lockf(fd1,1,0);/*互斥*/sprintf(outpipe,Child 2 is sending a message!);write(fd1,outpipe,50);sleep(5);lockf(fd1,0,0);exit(0);elsewait(0);/*同步*/read(fd0,inpipe,50);/*從管道中讀長(zhǎng)為50字節(jié)
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個(gè)性化信用卡消費(fèi)分期付款合同3篇
- 個(gè)人商鋪?zhàn)赓U合同范本模板(二零二五年度修訂版)8篇
- 二零二五年度個(gè)人二手汽車轉(zhuǎn)讓與二手車市場(chǎng)合作保障協(xié)議4篇
- 工程拆遷安置承包協(xié)議
- 夫妻婚前單方債務(wù)約定協(xié)議
- 網(wǎng)絡(luò)營(yíng)銷運(yùn)營(yíng)合同
- 2025-2030全球碳纖維轉(zhuǎn)子護(hù)套行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 二零二四年青島購(gòu)房合同房屋抵押權(quán)設(shè)定及解除合同3篇
- 23-24年項(xiàng)目安全培訓(xùn)考試題附參考答案【能力提升】
- 23年-24年員工三級(jí)安全培訓(xùn)考試題附答案【能力提升】
- 頸復(fù)康腰痛寧產(chǎn)品知識(shí)課件
- 2024年低壓電工證理論考試題庫(kù)及答案
- 《民航服務(wù)溝通技巧》教案第14課民航服務(wù)人員上行溝通的技巧
- 2023年十天突破公務(wù)員面試
- 《瘋狂動(dòng)物城》中英文對(duì)照(全本臺(tái)詞)
- 醫(yī)院住院醫(yī)師規(guī)范化培訓(xùn)證明(樣本)
- 小學(xué)六年級(jí)語(yǔ)文閱讀理解100篇(及答案)
- 氣功修煉十奧妙
- 安徽省物業(yè)服務(wù)標(biāo)準(zhǔn)
- 勾股定理的歷史與證明課件
- 淺談如何有效提高小學(xué)數(shù)學(xué)教學(xué)質(zhì)量課件
評(píng)論
0/150
提交評(píng)論