《操作系统》课程设计报告书_进程间通信(IPC)消息机制.doc
《《操作系统》课程设计报告书_进程间通信(IPC)消息机制.doc》由会员分享,可在线阅读,更多相关《《操作系统》课程设计报告书_进程间通信(IPC)消息机制.doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河南城建学院操作系统课程设计报告书设计题目:进程间通信(IPC)消息机制专 业: 计算机科学与技术 指导教师: 班 级: 学 号: 姓 名: 同 组 人: 计算机科学与工程系2010年01月14日前言课程设计是检测学生学习课程效果的重要手段,是训练学生通过所学知识解决实际问题的重要方式,同时也是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。操作系统是一门重要的专业课,是计算机理论和应用的核心基础课程。操作系统课程设计,是一次对多学知识的综合演练,要求学生在操
2、作系统的设计理念、整体机构、模块划分、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。在这次的课程设计中我们选择的题目是进程间通信(IPC)消息机制的设计,实现消息的创建、发送和接收及在sever端创建一个服务函数,从而形成C/S通讯模式。 消息机制是消息通过消息队列的方式进行进程间消息的传递。通过此次课程设计,全面理解消息机制进程间通信方法。实现把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的计算机操作系统的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理
3、论知识的理解的目的。目录一、系统环境.3二、设计目的.3三、总体设计.3消息的创建、接收和发送.4四、功能模块说明5数据结构.5系统调用函数、参数值及说明.5五、源程序清单及执行结果分析7消息的创建、接收和发送.75.2功能扩展.85.3执行结果分析.9六、总结与体会.11七、参考文献.11一、系统环境1.硬件环境: Pentium 3.06GHz, 512MB的内存 物理地址扩展2.软件环境: Microsoft windows XPVMware workstation (Red Hat Linux 9)使用C+或者C语言二、设计目的通过课程设计,了解自己在学习中的不足,同时也增强了自己学习
4、的兴趣。学习计算机软件技术,特别是计算机操作系统技术,除了需要刻苦努力外,还需要掌握软件和操作系统的原理与设计技巧。这次设计可以帮助我们加深对操作系统的设计理念,编程结构和高级语言程序设计、数据结构的利用、系统的分析、算法的设计,程序调试以及错误处理等过程的理解,同时熟练了编程工具的使用,练习了自己的分析问题和解决问题的能力,练习了自己编程的能力,促进对操作系统课程的认识。认识到操作系统在整个计算机系统中的重要作用。三、总体设计(1)消息的创建、发送和接收使用系统调用msgget(),msgsnd(),msgget(),及msgctl()编制一长度为1K的消息发送和接收的程序。,用一个程序作为
5、“引子”,先后fork()两个子进程,SERVER和CLIENT,进行通信。bSERVER端建立一个Key为75的消息队列,等待其他进程发来的消息。当遇到类型为1的消息,则作为结束信号,取消该队列,并退出SERVER。SERVER每接收到一个消息后显示一句“(server)received”。c.CLIENT端使用key为75的消息队列,先后发送类型从10到1的消息,然后退出。最后的一个消息,即是SERVER端需要的结束信号。CLIENT每发送一条消息后显示一句“(client)sent”SERVER和CLIENT均退出后结束。(2)功能扩展:在sever端创建一个服务函数,从而形成C/S通讯
6、模式要求SERVER每接收到一次数据后不仅仅显示“(server)received”,而是做一些其它事情,比如读取或查询某个文件等。此功能可由设计者自己定义。在此基础上可以扩展客户端,比如设计一个菜单界面,接收不同的选项,并发送到服务器端,请求对方提供服务。流程图消息的创建、发送和接受四、模块功能说明1.数据结构struct msgform/消息结构long mtype;char mtext1030;/文本长度 msg;2.系统调用函数、参数值及说明(1)fork() 创建一个新进程。 用法:int fork() 其中返回int取值意义如下: 0:创建子进程,从子进程返回的id值 ;0:从父进
7、程返回的子进程id值;-1:创建失败(2) msgget(key,flag) 获得一个消息的描述符。头文件:#include#include#include参数定义:int msgget(key,flag)key_tkeyintflag;语法格式:msgqid=msgget(key,flag);(3)msgsnd(id,msgp,size,flag) 送一消息 参数定义:int msgrcv(id,msgp,size,type,flag)int id,size,type,flag;structmsgbuf*msgq;structmsgbuf long mtype schar mtext;语法格
8、式:count=msgrcv(id,msgp,size,type,flag);其中:id:消息描述符;msgp:用来存放欲接收消息的拥护数据结构的地址;size:msgp中数据数组的大小;type:用户要读的消息类型:type=0:接收该队列的第一个消息;type0:接收类型type的第一个消息;type0:接收小于或等于type绝对值的最低类型的第一个消息。flag:规定倘若该队列无消息,核心应当做什么事,如果此时设置了IPC_NOWAIT标志,则立即返回,若在flag中设置了MSG_NOERROR,且所接收的消息大小大于size,核心截断所接受的消息。count:返回消息正文的字节数。(4
9、)msgrcv(id,msgp,size,type,flag) 接受一消息头文件:#include#include#include参数说明:int msgrcv(id,msgp,size,type,flag)int id,size,type,flag;structmsgbuf*msgq;structmsgbuf long mtype schar mtext;语法格式:count=msgrcv(id,msgp,size,type,flag);其中:id:消息描述符;msgp:用来存放欲接收消息的拥护数据结构的地址;size:msgp中数据数组的大小;type:用户要读的消息类型:type=0:接
10、收该队列的第一个消息;type0:接收类型type的第一个消息;type0:接收小于或等于type绝对值的最低类型的第一个消息。flag:规定倘若该队列无消息,核心应当做什么事,如果此时设置了IPC_NOWAIT标志,则立即返回,若在flag中设置了MSG_NOERROR,且所接收的消息大小大于size,核心截断所接受的消息。count:返回消息正文的字节数。(5)msgctl(id,cmd,buf) 查询一个消息描述符的状态,设置它的状态及删除一个消息描述符。头文件:#include#include#include参数定义:int msgctl(id,cmd,buf)int id,cmd;s
11、tructmsqiq_ds*buf;其中:函数调用成功时返回0,调用不成功时返回-1。id:用来识别该消息的描述符;cmd:规定命令的类型。IPC_STAT:将与id相关联的消息队列首标读入buf。IPC_SET:为这个消息序列设置有效的用户和小组标识及操作允许权和字节的数量。IPC_RMID:删除id的消息队列。buf:是含有控制参数或查询结果的用户数据结构的地址。五、源程序清单与执行结果分析1.消息的创建、发送和接受#include#include#include#include#define MSGKEY175/定义关键词MSGKEYstruct msgform/消息结构long mty
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 报告书 进程 通信 IPC 消息 机制
限制150内