




版權(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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年銀行從業(yè)資格考試同步學(xué)習(xí)試題及答案
- 投資咨詢工程師考試全覆蓋試題及答案
- 人力資源管理師技巧提升考試試題及答案
- 2024年消防事故案例分析試題及答案
- 2024中醫(yī)考試復(fù)習(xí)資料試題及答案
- 黑龍江省七臺(tái)河市勃利縣達(dá)標(biāo)名校2025屆初三下學(xué)期開學(xué)質(zhì)檢物理試題含解析
- 學(xué)前家庭教育學(xué)
- 黑龍江省大慶市名校2025屆初三第三次模擬練習(xí)物理試題含解析
- 日記寫作技巧與練習(xí)試題及答案
- 黑龍江省肇東一中2025年高三第四次月考生物試題試卷含解析
- 綜合實(shí)踐活動(dòng) 勞動(dòng)課 學(xué)做蛋炒飯課件
- 車間溫濕度測(cè)量記錄表
- 醫(yī)院醫(yī)療機(jī)構(gòu)麻醉科醫(yī)生招聘考試試題與答案
- 混凝土模板支撐工程專項(xiàng)施工方案(140頁(yè))
- 簡(jiǎn)述中國(guó)現(xiàn)當(dāng)代文學(xué)中的“現(xiàn)代性”(一)
- 變電所倒閘操作課件
- [精品]紡織品出口生產(chǎn)企業(yè)(MID)報(bào)編申請(qǐng)表
- 3130簡(jiǎn)明使用手冊(cè)
- 藥品出廠、上市放行管理規(guī)程
- 中醫(yī)基礎(chǔ)理論·緒論課件
- (完整版)小學(xué)生必背古詩(shī)75首(打印版).docx
評(píng)論
0/150
提交評(píng)論