1614010102曹妍消息缓冲通讯机制

1614010102曹妍消息缓冲通讯机制

ID:27693747

大小:116.19 KB

页数:4页

时间:2018-12-05

1614010102曹妍消息缓冲通讯机制_第1页
1614010102曹妍消息缓冲通讯机制_第2页
1614010102曹妍消息缓冲通讯机制_第3页
1614010102曹妍消息缓冲通讯机制_第4页
资源描述:

《1614010102曹妍消息缓冲通讯机制》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、班级:软件16-1班课程名称:一、要求简述操作系统考核日期:2018年6月21日题目:消息缓冲通信机制(1)发送进程A创建消息;(2)执行send(B,a)后,查看进程B的进程控制块(PCB)表中raq,mutex,sm的情况,查看消息缓冲区中内容。学号:1614010102、主要代码源程序:#includc#includc〈queue〉#includcusingnamespacestd;typedefstructmessage{stringsender;intsize;stringtext;//消总缓冲区声明//消息发送者//消息长度//消息正文mes

2、sage*next;//指向下一个消息缓冲IXmessage()sm.value=I;mq=NULL;姓名:曹妍sendersize=•textnext=NULL;}message;message*msg=new(message);//消息缓冲区message*back=msg;typedefstruct{intvalue;//PCB*list;}semaphore;typedefstructPCB{stringname;semaphoremutexsemaphoresm;message*mq;PCB(stringn//信号量//进程控制块//进程名//互斥信号量//资源信号量//消息队列

3、首指针)PCB;voidP(semaphore&s){s.value—;if(s.value<0){cout«"进程阻塞"《endl;})voidV(scmaphorc&s){s.valuc++;if(s.value<=0){cout«M唤醒进程"《endl;})voidshowProccss(PCB&B)//查看消息队列{cout«n进程••《B.name«1•信息”《endl;if(B.mq=NULL){cout«"消息队列为空n<sender«"消息长度:M<

4、size«’’消息正文:"<text«endl;q=q-〉next;name=n;mutex.valuecout«•’互斥信号量B.mutex.value«endl;mutex:«cout«”资源信号量sm:B«B.sm.value«cndl;cout«cndl;return;}voidshowBuffer()//查看缓冲区{if(msg->next==NULL){cout«"当前缓冲区为空11"«endl;}else{cout«”当前消息缓冲区内容:"«endl;message*q=msg-〉next;intcount=0;while(q!=NULL){、cout«++

5、count«".消息发送者:”《q-〉sender《”消息长度:"《q-〉size«•’消息正文:"《q->text«endl;cout«endl;q=q-〉next;}}}voidsend(PCB&A,message*a)//消息发送原语{message*q=new(message);q->size=a->size;q->sender=a->sender;q->text=a->text;back->next=q;back=q;q->next=NULL;showBuffer();cout«n进程”《A.name«”互斥信号量执行P操作”《endl;P(A.mutex);if(A.mq二二N

6、ULL){cout«"消息缓冲区插入进程”《A.name«"消息队列"《endl;A.mq=q;}else{cout«"消息缓冲区插入进程M<ncxt!=NULL)p=p->ncxt;p-〉next=msg-〉next;)msg->next=NULL;cout«n缓冲区淸空..."《endl;cout«n进程"《A.name«n互斥信号量执行V操作”《endl;V(A.mutex);cout«"进程"《A.name«”资源信号量执行V操作”《endl;V(A.sm);cout«nsend()发送原语

7、结束"《endl;cout«endl;}voidreceive(PCB&B,message*b)//消息接收原语{cout«n进程"《B.name«°互斥信号量执行P操作”《endl;P(B.mutex);cout«••进程"《B.name«°资源信号量执行P操作"《endl;P(B.sm);message*p=new(message);if(B.mq==NULL){cout«"进程"《B.name«"消息队列为空"《e

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。