*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2008 年秋季学期
操作系统原理课程设计
题 目: 消息的发送与接收模拟实现
专业班级: 软件二班
姓 名: 齐会超
1
学 号: 06250306
指导教师: 庞淑侠
成 绩:
目 录
摘 要...............................................................................................................................3
正 文...............................................................................................................................4
1. 问题描述...............................................................................................................4
2. 设计目的...............................................................................................................4
3. 设计要求...............................................................................................................4
4. 详细设计...............................................................................................................5
4.1
界面设计
..........................................................................................................5
4.2
算法设计
..........................................................................................................6
5. 结果分析...............................................................................................................7
设 计 总 结....................................................................................................................9
参考文献......................................................................................................................10
致 谢.............................................................................................................................11
附录:源程序代码......................................................................................................12
2
摘 要
消息(message)是一个格式化的可变长的信息单元。消息机制
允许由一个进程给其它任意的进程发送一个消息。当一个进程收到多
个消息时,可将它们排成一个消息队列。消息使用二种重要的数据结
构:一是索引表,一种是实例表.UNIX 中,每一个消息队列都有一个称
为关键字(key)的名字,是由用户指定的;消息队列有一消息队列描
述符,其作用与用户文件描述符一样,也是为了方便用户和系统对消
息队列的访问。
关键词:消息;消息队列;消息队列首部
3
正 文
1. 问题描述
该问题主要模拟实现消息的创建、发送和接收。使用系统调用
msgget( ),msgsnd( ),msgrev( ),及 msgctl( )编写一个消息发送和接收的程
序。
2. 设计目的
学生通过该题目的设计过程,可以掌握消息的发送与接收的原理
软件开发方法并提高解决实际问题的能力。
3. 设计要求
设 计 一 程 序 完 成 消 息 的 创 建 、 发 送 和 接 收 。 使 用 系 统 调 用
msgget( ),msgsnd( ),msgrev( ),及 msgctl( )编制一长度为1 k 的消息发送
和接收的程序。
4
4. 详细设计
4.1 界面设计
输出服务端 PID:
printf("SERVER: pid=%d\n",pid)
输出客户端 PID:
printf("CELENT: pid=%d\n",pid);
输出客户端发送信息状态,客户端 PID 及信息内容:
printf("%d (client)sent... Message:%cfrom pid=%d\n",11-i,msg.mtext[0],pid)
输出服务端接收信息状态,服务端 PID 及信息内容:
printf("%d (server)received... Message:%c from pid%d\n",k,msg.mtext[0],pid)
5