版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實 驗 報 告( 2013 / 2014學(xué)年 第1學(xué)期)課程名稱操作系統(tǒng)原理實驗名稱實驗2:進程間通信實驗時間2013年 10 月 10日指導(dǎo)單位軟件工程系指導(dǎo)教師 楊 健學(xué)生姓名班級學(xué)號學(xué)院(系)軟件工程系專 業(yè)計算機軟件與服務(wù)外包實驗名稱實驗2:進程間通信指導(dǎo)教師楊健實驗類型驗證實驗學(xué)時2實驗時間一、 實驗?zāi)康? 了解Linux中的信號,熟悉Linux系統(tǒng)中進程之間軟中斷通信的基本原理。2 Linux系統(tǒng)的進程通信機構(gòu)(IPC)允許在任意進程間大批量地交換數(shù)據(jù),學(xué)習(xí)如何利用消息緩沖隊列進行進程間的通信,并加深對消息通信機制的理解。二、實驗環(huán)境(實驗設(shè)備)Windows 2000 + VMW
2、are + RedHat Linux 8三、實驗內(nèi)容1 編寫程序:用fork()創(chuàng)建兩個子進程,再用系統(tǒng)調(diào)用signal()讓父進程捕捉鍵盤上來的中斷信號(即按c鍵);捕捉到中斷信號后,父進程用系統(tǒng)調(diào)用kill()向兩個子進程發(fā)出信號,子進程捕捉到信號后分別輸出下列信息,然后終止:Child process1 is killed by parent!Child process2 is killed by parent!父進程等待兩個子進程終止后,輸出如下的信息后終止:Parent process is killed!2 分析利用軟中斷通信實現(xiàn)進程同步的機制。3 消息的創(chuàng)建,發(fā)送和接收。4 使用
3、系統(tǒng)調(diào)用msgget(),msgsnd(),msgrev(),及msgctl()編制消息的發(fā)送和接收程序。5 server.c程序后臺運行,client.c程序前臺運行,server.c先于client.c運行。程序代碼#include #include #include void waiting( ),stop( );int wait_mark;main( )int p1,p2,stdout;while(p1=fork( )= =-1); /*創(chuàng)建子進程p1*/if (p10) while(p2=fork( )= =-1); /*創(chuàng)建子進程p2*/if(p20) wait_mark=1;si
4、gnal(SIGINT,stop); /*接收到c信號,轉(zhuǎn)stop*/waiting( );kill(p1,16); /*向p1發(fā)軟中斷信號16*/kill(p2,17); /*向p2發(fā)軟中斷信號17*/wait(0); /*同步*/wait(0);printf(Parent process is killed!n);exit(0); else wait_mark=1;signal(17,stop); /*接收到軟中斷信號17,轉(zhuǎn)stop*/waiting( );lockf(stdout,1,0);printf(Child process 2 is killed by parent!n);lo
5、ckf(stdout,0,0);exit(0);elsewait_mark=1;signal(16,stop); /*接收到軟中斷信號16,轉(zhuǎn)stop*/waiting( );lockf(stdout,1,0);printf(Child process 1 is killed by parent!n);lockf(stdout,0,0);exit(0); void waiting( ) while(wait_mark!=0);void stop( )wait_mark=0;#include#include#include#include#include#define MSGKEY 75stru
6、ct msgformlong mtype;char mtext256;main()struct msgform msg;int msgqid,pid,*pint;msgqid=msgget(MSGKEY,0777);pid=getpid();pint=(int*)msg.mtext;*pint=pid;msg.mtype=1;msgsnd(msgqid,&msg,sizeof(int),0);msgrcv(msgqid,&msg,256,pid,0);printf(client:receive from pid %dn,*pint);exit(0);#include#include#inclu
7、de#include#include#define MSGKEY 75struct msgformlong mtype;char mtext256;main()struct msgform msg;int msgqid,pid,*pint;msgqid=msgget(MSGKEY,0777|IPC_CREAT);for(;)msgrcv(msgqid,&msg,256,1,0);pint=(int*)msg.mtext;pid=*pint;printf(server:receive from pid %dn,pid);msg.mtype=pid;*pint=getpid();msgsnd(ms
8、gqid,&msg,sizeof(int),0);四、實驗小結(jié)(針對實驗內(nèi)容逐項小結(jié)實驗中發(fā)現(xiàn)的問題、自己的解決方法、心得體會等) 這次程序相比于上次實驗,難度稍有點大,程序也復(fù)雜了,通過對此次實驗的學(xué)習(xí),了解了linux系統(tǒng)中的信號,熟悉了進程之間軟中斷通信的基本原理。信號本質(zhì):信號是在軟件層次上對中斷機制的一種模擬,在原理上,一個進程收到一個信號與處理器收到一個中斷請求可以說是一樣的。信號是異步的,一個進程不必通過任何操作來等待信號的到達,事實上,進程也不知道信號到底什么時候到達。信號是進程間通信機制中唯一的異步通信機制,可以看作是異步通知,通知接收信號的進程有哪些事情發(fā)生了。信號機制經(jīng)過POSIX實時擴展后,功能更加強大,除了基本通知功能外,還可以傳遞附加信息。進程用kill( )向一個進程或一組進程發(fā)送一個信號;當(dāng)一個進程要進入或退出一
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湘教新版選修3物理下冊月考試卷
- 2025年仁愛科普版三年級英語上冊月考試卷
- 2025年外研版2024九年級英語下冊階段測試試卷
- 2024年遼寧體育運動職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2024年貴陽幼兒師范高等??茖W(xué)校高職單招語文歷年參考題庫含答案解析
- 2025年湘教版二年級語文上冊階段測試試卷含答案
- 2025年新世紀版選修6地理下冊階段測試試卷
- 智慧林業(yè)大數(shù)據(jù)云平臺建設(shè)和運營整體解決方案
- 2025年外研版2024九年級科學(xué)上冊月考試卷含答案
- 2024版工程建設(shè)施工廉政合同
- 農(nóng)業(yè)昆蟲學(xué)實驗5蔬菜害蟲課件
- 大學(xué)研究生赴境內(nèi)外高校學(xué)習(xí)課程學(xué)分認定管理辦法
- 非標(biāo)設(shè)計最強自動計算-壓入力計算
- 銀行客戶經(jīng)理個人履職總結(jié)銀行客戶經(jīng)理個人工作總結(jié)
- 人教版七年級數(shù)學(xué)下冊計算類專項訓(xùn)練卷【含答案】
- 化學(xué)元素周期表口訣化學(xué)元素周期表口訣
- 詩詞接龍(飛花令)PPT
- 子宮內(nèi)膜癌(課堂PPT)
- 澳大利亞公司法1-30
- 海上試油測試技術(shù)0327
- 中國地圖標(biāo)準版(可編輯顏色)
評論
0/150
提交評論