收藏 分销(赏)

操作系统进程间基于消息队列的通信实验.doc

上传人:Fis****915 文档编号:554574 上传时间:2023-12-08 格式:DOC 页数:4 大小:53KB 下载积分:6 金币
下载 相关 举报
操作系统进程间基于消息队列的通信实验.doc_第1页
第1页 / 共4页
操作系统进程间基于消息队列的通信实验.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
《操作系统》课程实验报告 实习题目 进程间基于消息队列的通信 指导教师 学生姓名 学 号 日 期 实现工具 C语言 实现环境 Linux系统 实习内容(功能、目标) 实验目的:    系统了解linux系统的通信机构IPC ,掌握IPC中消息通信机制,理解消息通信的方法及特征。 实验内容:    编写一段程序,同时父进程创建两个子进程p1和p2;并使子进程p1与子进程p2通过消息队列相互发送消息(512字节)。 实验要求:   (1)掌握系统调用msgget()、msgsnd()、msgrev()、msgctl()的使用方法及其功能,理解消息通信原理;   (2)系统理解linux 的三种通信机制。 实现的思想、方法和技术(含数据结构、算法) 一、 消息机制提供四个系统调用: 1. msgget返回一个消息描述字msgqid,msgqid指定一个消息队列以便其他三个系统调用使用。 2. msgsnd和msgrcv分别表示发送和接收一消息。Msgsnd(msgqid,msgp,msgsz,msgflg)中的msgqid是msgget返回消息队列描述符:msgp是用户缓冲区指针,msgsz是消息正文的长度,msgflg是同步标示,规定msgqid发送消息是发送完毕后返回还是不等发送完立即返回。 3. 系统调用msgrev比msgsnd多一个参数msgtyp,它规定接收消息的类型。msgtyp=0时,表示接收与msgqid相关联的消息队列上的第一个消息; msgtyp>0时,表示接收msgqid相关联消息队列上第一个消息,而 msgtyp<0时,则表示接收小于或等于msgtyp绝对值的最低类型的第一个消息。 4. msgctl用来设置和返回与msgqid相关联的参数选择项,以及用来删除描述符的选择项。 主要代码 注释 #include<sys/types.h> #include<sys/ipc.h> #include<sys/msg.h> #include<stdio.h> #include<stdlib.h> #include"string.h" #define MSGKEY 75 struct msgform { long mtype; char mtext[512]; } int msgqid; { struct msgform msg1,msg2; int p1,p2,pud1,pid2,*pint1,*pint2,i; while((p1=fork())==-1); if(p1==0) { msgqid=magget (MSGKEY,0777); strcpy(msg1.mtext,"Hello!"); msg1=mtype=1; msgsnd(msgqid,&msg1,sizeof(512),0); msqrcv(msgqid,&msg,512,pid,0); printf("client:receivefrom pid%d\n",msg1.mtext); } else { while((p2=fork())==-1); if(p2==0) { msgqid=msgget(MSGKEY,0777|IPC_CREAT); msgrcv (msgqid,&msg2,512,1,0); printf("server:receive from pid%d\n",msg2.mtext); msg2=mtype=7; strcpy(msg1.mtext,"byebye!"); msgsnd(msgqid,&msg2,256,0); exit(0); } } cleanup() msgctl (msgqid,IPC_RMID,0); exit(); } //消息的格式 //消息的类型、正文长度 //创建进程p1 //建立消息队列若存在返回消息描述字 //将正文放入 //指定消息的类型 //往msgqid发送消息msg1 //接收来自服务进程的消息 //输出正文的内容 //创建进程p2 //建立与顾客程序相同的消息队列 //接收来自顾客进程的消息 //放在接收方 //服务者进程接收到的信息 //当前接收进程的pid放到正文 //发送应答消息 结果分析(含实现中出错原因分析) 思考: 1、消息通信与管道通信有何区别 答:消息通信是用于所有进程之间通信的,管道通信只能用于家族进程之间的通信。 2、为什么unix中要增设IPC核心软件包? 答: IPC有三个组成部分: 1) 消息用于进程之间传递分类的格式化数据 2) 共享存储方式可使得不同进程通过共享彼此的空间而达到互相对共享区操作和数据通信的目的。 3) 信号量机制用于通信进程之间的同步控制,信号量通常与共享存储器一起使 指导教师评语、评分 评分: 指导教师: 年 月 日 4
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服