北郵-操作系統(tǒng)-實(shí)驗(yàn)2-代碼--進(jìn)程管理-實(shí)驗(yàn)報(bào)告(總10頁).docx
《北郵-操作系統(tǒng)-實(shí)驗(yàn)2-代碼--進(jìn)程管理-實(shí)驗(yàn)報(bào)告(總10頁).docx》由會(huì)員分享,可在線閱讀,更多相關(guān)《北郵-操作系統(tǒng)-實(shí)驗(yàn)2-代碼--進(jìn)程管理-實(shí)驗(yàn)報(bào)告(總10頁).docx(6頁珍藏版)》請?jiān)趨R文網(wǎng)上搜索。
1、實(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 -1;elsepid2=fork();if(pid2=0)putchar(c);else if(pid20)return -1
2、;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();if(pid1=0)printf(this is process b.n);else if(pid10)return -
3、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í)不變。但是,由于進(jìn)程并發(fā)執(zhí)行時(shí)的調(diào)度順序會(huì)不同,輸出字符串的順序和先后隨著執(zhí)行的不同而發(fā)生變化。后建的進(jìn)程c可以在進(jìn)程b之前完成。父進(jìn)程需要?jiǎng)?chuàng)
4、建進(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)程捕捉鍵盤上來的中斷信號(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 by Parent!父進(jìn)程等待兩個(gè)子進(jìn)程終止后,輸出如下的信息后終止:Parent Process is killed!實(shí)驗(yàn)代碼
5、#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);/*接受SIGALRMwaiting();*/ while(wait_mark!=0); kill(pid1,16);/*向pid1發(fā)軟中斷信號(hào)16*/
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 北郵 操作系統(tǒng) 實(shí)驗(yàn) 代碼 進(jìn)程 管理 報(bào)告 10
鏈接地址:http://zhizhaikeji.com/p-2693253.html