




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、消息緩沖通信進(jìn)程一、實(shí)習(xí)內(nèi)容消息緩沖通信過(guò)程(發(fā)送與接收)要求:(1)發(fā)送進(jìn)程A創(chuàng)建消息;(2)執(zhí)行send(B,a)后,查看進(jìn)程B的進(jìn)程控制塊(PCB)表 中mq,mutex, sm的情況,查看消息緩沖區(qū)中內(nèi)容。二、實(shí)習(xí)目的模擬實(shí)現(xiàn)進(jìn)程間通信過(guò)程,理解進(jìn)程通信的基本原理與所用數(shù)據(jù) 結(jié)構(gòu),消息緩沖區(qū)、信號(hào)量及消息隊(duì)列的有關(guān)算法。三、實(shí)驗(yàn)數(shù)據(jù)結(jié)構(gòu)及符號(hào)說(shuō)明1、進(jìn)程控制塊(PCB)typedef struct PCBstring name;semaphore mutex;semaphore sm;message *mq;PCB(string n = )name = n;mutex.value =
2、1;sm.value = 1;mq = NULL;PCB;2、消息緩沖區(qū)typedef struct messagestring sender;int size;string text;message *next;message()sender = size = -1;text = ;next = NULL;message;message *msg = new(message);message *back = msg;3、信號(hào)量typedef structint value;/PCB *list;semaphore;四、程序源代碼#include #include #include using
3、 namespace std;typedef struct messagestring sender;int size;string text;message *next;message()消息緩沖區(qū)聲明消息發(fā)送者消息長(zhǎng)度消息正文指向下一個(gè)消息緩沖區(qū)sender =size = -1;text = ;next = NULL;message;message *msg = new(message);/消息緩沖區(qū)message *back = msg;typedef struct/信號(hào)量int value;/PCB *list;semaphore;typedef struct PCBstring n
4、ame;semaphore mutex;semaphore sm;message *mq;PCB(string n = )進(jìn)程控制塊/進(jìn)程名互斥信號(hào)量資源信號(hào)量消息隊(duì)列首指針name = n;mutex.value = 1;sm.value = 1;mq = NULL;PCB;void P(semaphore& s)s.value-;if(s.value 0)cout 進(jìn)程阻塞 endl;void V(semaphore& s)s.value+;if(s.value = 0)cout 喚醒進(jìn)程 sender消息長(zhǎng)度: q-size 消息正文:q-text next;cout互斥信號(hào)量 mute
5、x :/z B. mutex, value endl;cout 資源信號(hào)量 sm: B.sm.value endl;cout next = NULL)cout n當(dāng)前緩沖區(qū)為空n endl;elsecout n當(dāng)前消息緩沖區(qū)內(nèi)容:next;int count = 0;while(q != NULL)cout +count .消息發(fā)送者:sender 消 息長(zhǎng)度:size 消息正文:text endl;cout next;void send(PCB &A,message *a) /消息發(fā)送原語(yǔ)message *q = new(message);q-size = a-size;q-sender =
6、 a-sender;q-text = a-text;back-next = q;back = q;q-next = NULL;showBuffer();cout 進(jìn)程 A.name 互斥信號(hào)量執(zhí)行P操作 endl;P(A.mutex);if(A.mq = NULL)cout 消息緩沖區(qū)插入進(jìn)程 A.name 消息隊(duì)列next != NULL)p = p-next;p-next = msg-next;msg-next = NULL;cout緩沖區(qū)清空. endl;cout進(jìn)程A. name互斥信號(hào)量執(zhí)行V操作endl;(A. mutex);cout進(jìn)程A. name資源信號(hào)量執(zhí)行V操作endl;
7、(A. sm);cout /zsend()發(fā)送原語(yǔ)結(jié)束endl;cout endl;voidreceive(PCB&B, message*b)voidreceive(PCB&B, message*b)消息接收原語(yǔ) cout 進(jìn)程 B.name 互斥信號(hào)量執(zhí)行P操作 endl;P(B.mutex);cout 進(jìn)程 B.name 資源信號(hào)量執(zhí)行P操作 endl;P(B.sm);message *p = new(message);if(B.mq = NULL)cout 進(jìn)程 B.name 消息隊(duì)列為空 endl;return;elsecout 消息移出隊(duì)列并刪除sender = B.mq-sende
8、r; /將消息移出消息隊(duì)列p-size = B.mq-size;p-text = B.mq-text;message *q = B.mq-next;/刪除消息隊(duì)列中接收的信息delete(B.mq);B.mq = q;cout 進(jìn)程 B.name 互斥信號(hào)量執(zhí)行V操作 endl;V(B.mutex);cout 進(jìn)程 B.name 消息送入接收區(qū) bsender =p-sender;b-sender =p-size;b-sender =p-text;void createMessage(const PCB &A,message *m)/創(chuàng)建消息m-next = NULL;m-sender = A
9、.name;cout 進(jìn)程 A.name 創(chuàng)建消息 endl;cout m-size m-text;/進(jìn)入消息緩沖區(qū)cout 消息進(jìn)入緩沖區(qū). endl;int main()PCB A(A);進(jìn)程 APCB B(B);/進(jìn)程 Bmessage *a = new(message);/消息發(fā)送區(qū)createMessage(A,a);send(B,a);showProcess(B);showBuffer();message *b = new(message);/消息接收區(qū)receive(B,b);return 0;五、運(yùn)行程序、輸出及實(shí)驗(yàn)截圖1、初始化,創(chuàng)建進(jìn)程A、BPCB A(A); PCB B(B);2、進(jìn)程A創(chuàng)建消息message *a = new(message);createMessage(A,a);3、發(fā)送消息到進(jìn)程B并查看PCB和消息緩沖區(qū)send(B,a);showProcess(B);showBuffer();4、進(jìn)程B接收消息message *b = new(message);receive(B,b);5、實(shí)驗(yàn)截圖:A褶息長(zhǎng)度壯 nutex:l進(jìn)程B信息-ZZT 1= 11m斥餌M害 桔方里精息正文:眼W昌胃魏薯嚕登I
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中獸醫(yī)學(xué)知到課后答案智慧樹(shù)章節(jié)測(cè)試答案2025年春甘肅農(nóng)業(yè)大學(xué)
- 通遼職業(yè)學(xué)院《微型飛行器設(shè)計(jì)導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海工程技術(shù)大學(xué)《道橋施工技術(shù)1》2023-2024學(xué)年第一學(xué)期期末試卷
- 陜西鐵路工程職業(yè)技術(shù)學(xué)院《土木工程制圖D》2023-2024學(xué)年第一學(xué)期期末試卷
- 山西同文職業(yè)技術(shù)學(xué)院《建設(shè)項(xiàng)目檔案管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年湖南省岳陽(yáng)市高中名校普通高考第二次適應(yīng)性檢測(cè)試題英語(yǔ)試題含解析
- 湖南司法警官職業(yè)學(xué)院《植物醫(yī)學(xué)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 濰坊科技學(xué)院《電路原理實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南省常德市武陵區(qū)芷蘭實(shí)驗(yàn)學(xué)校歷史班2024-2025學(xué)年下學(xué)期高三語(yǔ)文試題1月階段測(cè)試考試試卷含解析
- 公司訴訟制度優(yōu)化建議
- 全國(guó)職業(yè)院校技能大賽(新材料智能生產(chǎn)與檢測(cè)賽項(xiàng))選拔賽試題庫(kù)(300題)
- 幼兒園夏季護(hù)理培訓(xùn)
- 高等職業(yè)學(xué)校電梯工程技術(shù)專(zhuān)業(yè)實(shí)訓(xùn)教學(xué)條件建設(shè)標(biāo)準(zhǔn)(征求意見(jiàn)稿)
- 2024年錦州師范高等專(zhuān)科學(xué)校單招職業(yè)技能測(cè)試題庫(kù)及答案解析
- 2024年國(guó)家電網(wǎng)招聘之通信類(lèi)題庫(kù)附參考答案(考試直接用)
- 《市場(chǎng)營(yíng)銷(xiāo)學(xué) 第3版》課件全套 段淑梅 第1-12章 市場(chǎng)營(yíng)銷(xiāo)概論-市場(chǎng)營(yíng)銷(xiāo)組合
- 大學(xué)生信息素養(yǎng)大賽考試題庫(kù)及答案
- 兒童保健(康復(fù))管理信息系統(tǒng)需求說(shuō)明
- 文獻(xiàn)檢索與論文寫(xiě)作
- 《麻醉與BIS監(jiān)測(cè)》課件
- 嶺南版二年級(jí)美術(shù)上冊(cè)期末試題B
評(píng)論
0/150
提交評(píng)論