




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.青 島 理 工 大 學(xué)課程實(shí)驗(yàn)報(bào)告課程名稱操作系統(tǒng)班級(jí)軟件114實(shí)驗(yàn)日期2013/10/28姓名李曉菲學(xué)號(hào)201107286實(shí)驗(yàn)成績(jī)實(shí)驗(yàn)名稱實(shí)驗(yàn)4進(jìn)程通信實(shí)驗(yàn)?zāi)康募耙?、加深理解進(jìn)程通信的方法與原理;2、掌握如何利用管道機(jī)制、消息緩沖隊(duì)列、共享存儲(chǔ)區(qū)機(jī)制進(jìn)行進(jìn)程間的通信。實(shí)驗(yàn)環(huán)境Windows; Virtual Box; Ubuntu 11.10;Vi編輯器; GCC編譯器; Geany IDE;實(shí)驗(yàn)內(nèi)容1、了解系統(tǒng)調(diào)用pipe()、msgget()、msgsnd()、msgrcv()、msgctl()、shmget()、shmat()、shmdt()、shmctl()的功 能和實(shí)現(xiàn)過程。
2、2、編寫一C語言程序,使其用管道來實(shí)現(xiàn)父子進(jìn)程間通信。子進(jìn)程向父進(jìn)程發(fā)送字符串“is sending a message to parent!”;父進(jìn)程則從管道中讀出子進(jìn)程發(fā)來的消息,并將其顯示到屏幕上,然后終止。3、運(yùn)行該程序,觀察、記錄并簡(jiǎn)單分析其運(yùn)行結(jié)果。算法描述及實(shí)驗(yàn)步驟算法描述及實(shí)驗(yàn)步驟算法描述及實(shí)驗(yàn)步驟1、pipe()、msgget()、msgsnd()、msgrcv()、msgctl()、shmget()、shmat()、shmdt()、shmctl()(1)pipe( )系統(tǒng)調(diào)用格式:pipe()參數(shù)定義int pipe();int 2;其中,1是寫入端,0是讀出端。該函數(shù)使用
3、頭文件如下:#include #inlcude #include 功能:建立一無名管道。管道建立后,寫進(jìn)程將數(shù)據(jù)寫入文件1,讀進(jìn)程從文件0中讀數(shù)據(jù),從而實(shí)現(xiàn)讀/寫進(jìn)程的管道通信。管道是一個(gè)共享資源,寫/寫進(jìn)程、讀/寫進(jìn)程應(yīng)互斥使用管道。(2)msgget( )系統(tǒng)調(diào)用格式:int msgget(key_t key, int msgflg);功能:獲取與某個(gè)鍵關(guān)聯(lián)的消息隊(duì)列標(biāo)識(shí)。消息隊(duì)列被建立的情況有兩種: (1)如果鍵的值是IPC_PRIVATE。 (2)或者鍵的值不是IPC_PRIVATE,并且鍵所對(duì)應(yīng)的消息隊(duì)列不存在,同時(shí)標(biāo)志中指定IPC_CREAT。該函數(shù)使用頭文件如下:#include
4、 #include #include (3、4)msgsnd( )和msgrcv( )系統(tǒng)調(diào)用格式int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);功能:在消息隊(duì)列上進(jìn)行收發(fā)消息。為了發(fā)送消息,調(diào)用進(jìn)程對(duì)消息隊(duì)列必須有寫權(quán)限。接收消息時(shí)必須有讀權(quán)限。該函數(shù)使用頭文件如下:#include #include #include (5)msgctl( )系統(tǒng)調(diào)用格式i
5、nt msgctl(int msqid, int cmd, struct msqid_ds *buf);功能:在指定的消息隊(duì)列上執(zhí)行某種控制操作。該函數(shù)使用頭文件如下:#include #include #include (6)shmget( )功能:用于創(chuàng)建(或者獲?。┮粋€(gè)由key鍵值指定的共享內(nèi)存對(duì)象,返回該對(duì)象的系統(tǒng)標(biāo)識(shí)符:shmid;系統(tǒng)調(diào)用格式:shmid=shmget(key,size,flag)該函數(shù)使用頭文件如下:#include#include#include(7)shmat( )功能:共享存儲(chǔ)區(qū)的附接。從邏輯上將一個(gè)共享存儲(chǔ)區(qū)附接到進(jìn)程的虛擬地址空間上。用于建立調(diào)用進(jìn)程與由
6、標(biāo)識(shí)符shmid指定的共享內(nèi)存對(duì)象之間的連接。系統(tǒng)調(diào)用格式:virtaddr=shmat(shmid,addr,flag)該函數(shù)使用頭文件如下:#include#include#include(8)shmdt( )功能:用于斷開調(diào)用進(jìn)程與共享內(nèi)存對(duì)象之間的連接,成功時(shí)返回0,失敗返回-1。系統(tǒng)調(diào)用格式:int shmdt(shmaddr)char *shmaddr;/*采用shmat函數(shù)的返回值*/(9)shmctl( )功能:共享存儲(chǔ)區(qū)的控制,對(duì)其狀態(tài)信息進(jìn)行讀取和修改。用于對(duì)已創(chuàng)建的共享內(nèi)存對(duì)象進(jìn)行查詢、設(shè)置、刪除等操作。系統(tǒng)調(diào)用格式:shmctl(shmid,cmd,buf)該函數(shù)使用頭
7、文件如下:#include#include#include2、步驟:(1)定義進(jìn)程變量 (2)定義兩個(gè)字符數(shù)組 (3)創(chuàng)建管道 (4)如果進(jìn)程創(chuàng)建不成功,則空循環(huán) (5)如果子進(jìn)程創(chuàng)建成功,pid為進(jìn)程號(hào) (6)鎖定管道 (7)給Outpipe賦值 (8)向管道寫入數(shù)據(jù) (9)等待讀進(jìn)程讀出數(shù)據(jù) (10)解除管道的鎖定 (11)結(jié)束進(jìn)程等待子進(jìn)程結(jié)束 (12)從管道中讀出數(shù)據(jù) (13)顯示讀出的數(shù)據(jù) (14)父進(jìn)程結(jié)束 調(diào)試過程及實(shí)驗(yàn)結(jié)果創(chuàng)建jincheng.c插入文字運(yùn)行:運(yùn)行后:總結(jié)總結(jié)(對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析,問題回答,實(shí)驗(yàn)心得體會(huì)及改進(jìn)意見)雖然對(duì)pipe()、msgget()、msgsn
8、d()、msgrcv()、msgctl()、shmget()、shmat()、shmdt()、shmctl()的功能和實(shí)現(xiàn)過程有所了解,但是運(yùn)用還是不熟練,過去沒見過,所以運(yùn)行了一個(gè)簡(jiǎn)單的程序。利用管道機(jī)制、消息緩沖隊(duì)列、共享存儲(chǔ)區(qū)機(jī)制進(jìn)行進(jìn)程間的通信,加深了對(duì)其了解。(1)管道通信機(jī)制,同步的實(shí)現(xiàn)過程:當(dāng)寫進(jìn)程把一定數(shù)量的數(shù)據(jù)寫入pipe,便去睡眠等待,直到讀進(jìn)程取走數(shù)據(jù)后,再把它喚醒。當(dāng)讀進(jìn)程讀一空pipe時(shí),也應(yīng)睡眠等待,直到寫進(jìn)程將數(shù)據(jù)寫入管道后,才將之喚醒,從而實(shí)現(xiàn)進(jìn)程的同步。管道通信的特點(diǎn):A 管道是半雙工的,數(shù)據(jù)只能向一個(gè)方向流動(dòng);需要雙方通信時(shí),需要建立起兩個(gè)管道;B. 只能用
9、于父子進(jìn)程或者兄弟進(jìn)程之間(具有親緣關(guān)系的進(jìn)程);C.單獨(dú)構(gòu)成一種獨(dú)立的文件系統(tǒng):管道對(duì)于管道兩端的進(jìn)程而言,就是一個(gè)文件,但它不是普通的文件,它不屬于某種文件系統(tǒng),而是自立門戶,單獨(dú)構(gòu)成一種文件系統(tǒng),并且只存在與內(nèi)存中。D. 數(shù)據(jù)的讀出和寫入:一個(gè)進(jìn)程向管道中寫的內(nèi)容被管道另一端的進(jìn)程讀出。寫入的內(nèi)容每次都添加在管道緩沖區(qū)的末尾,并且每次都是從緩沖區(qū)的頭部讀出數(shù)據(jù)。管道適用于處理大量的同步操作問題。(2)消息隊(duì)列的特點(diǎn):A.消息隊(duì)列機(jī)制增加了管理的負(fù)擔(dān)B.消息隊(duì)列通信機(jī)制非??旖軨.消息隊(duì)列機(jī)制是異步信息處理,不是實(shí)時(shí)的(3)共享存儲(chǔ)區(qū)通信:為了傳輸大量數(shù)據(jù),在存儲(chǔ)區(qū)中劃出了一塊共享存儲(chǔ)區(qū),
10、諸進(jìn)程便可通過對(duì)共享存儲(chǔ)區(qū)中數(shù)據(jù)的讀或?qū)憗韺?shí)現(xiàn)通信。附錄(源程序清單)#include #include #include int pid; / 定義進(jìn)程變量 main( ) int fd2; char OutPipe300, InPipe300; / 定義兩個(gè)字符數(shù)組 pipe(fd); / 創(chuàng)建管道 while (pid = fork( ) = -1); / 如果進(jìn)程創(chuàng)建不成功,則空循環(huán) if (pid = 0) / 如果子進(jìn)程創(chuàng)建成功,pid為進(jìn)程號(hào) lockf(fd1, 1, 0); / 鎖定管道 sprintf(OutPipe, Childs PID=%dn%s,getpid(),is sending a message to parent!n); / 給Outpipe賦值 write(fd1, OutPipe, 50); / 向管道寫入數(shù)據(jù) sleep(5); /
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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年德州年貨運(yùn)從業(yè)資格證考試題庫(kù)
- 勞動(dòng)合同范本 股權(quán)
- 企業(yè)借貸合同質(zhì)押合同范本
- 代理分紅合同范本
- 買門頭房合同范本
- 動(dòng)遷協(xié)議合同范本
- 東莞擺攤餐飲轉(zhuǎn)讓合同范本
- 任意拆解合同范本
- 制作車輛抵押合同范本
- 旋轉(zhuǎn)類機(jī)電設(shè)備故障預(yù)測(cè)、診斷研究
- 企業(yè)承包經(jīng)營(yíng)合同范本
- 中學(xué)校長(zhǎng)2025春開學(xué)典禮講話:以黃旭華之魂、DeepSeek 之智、哪吒之氣逐夢(mèng)新程
- 2025年01月公安部第三研究所公開招聘人民警察筆試筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 新媒體營(yíng)銷(第三版) 課件全套 林海 項(xiàng)目1-6 新媒體營(yíng)銷認(rèn)知-新媒體營(yíng)銷數(shù)據(jù)分析
- 教師讀書分享《給教師的建議》課件
- 人民警察紀(jì)律條令試卷含答案
- 婚姻矛盾糾紛調(diào)解培訓(xùn)課件
- 愚公移山英文 -中國(guó)故事英文版課件
- 《工程熱力學(xué)》(第四版)配套教學(xué)課件
- 音樂之聲中英文臺(tái)詞
評(píng)論
0/150
提交評(píng)論