2022年操作系统课程设计进程间通信 .pdf
《2022年操作系统课程设计进程间通信 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统课程设计进程间通信 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2003 级操作系统课程设计指导二-进程间通信设计2006/6/20沈奕鹏管建军一、设 计 目 的Linux 系统的进程通信机构(IPC) 允许在任意进程间大批量地交换数据。本实验的目的是了解和熟悉 Linux 支持的消息通信机制、共享存储区机制及信息量机制。二、设 计 内 容1. 消息的创建,发送和接收。使用系统调用msgget(),msgsnd() ,msgrev() 及 msgctl()编制一长度为1K 的消息的发送和接收程序。观察上面程序,说明控制消息队列系统调用msgctl()在此起什么作用? 2. 共享存储区的创建、附接和断接。使用系统调用shmget(),shmat() ,sgm
2、dt() ,shmctl(),编制一个与上述功能相同的程序。三 、 指导 步骤1. 消 息的 创建 、发 送和 接 收( 任务) 使 用 系统 调用 msgget(),msgsnd(),msgrev(),及 msgctl()编 制 一 长度 为 1K 的 消息发送 和接 收的程 序。( 程序设 计 (1) 为了 便 于 操作 和观 察结 果 , 用一 个程 序作 为“引 子”, 先 后 fork()两 个子 进程 , SERVER 和 CLIENT, 进 行 通信 。(2)SERVER 端建 立一个 Key 为 75 的 消息队 列, 等 待 其 他进 程发 来 的 消息 。当 遇到 类型 为
3、 1 的消 息 , 则作 为结 束信 号, 取消 该 队 列, 并 退出SERVER 。SERVER 每接 收到 一个 消息后 显 示一 句 “ (server)received。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - (3)CLIENT端 使 用 key 为 75 的消 息队 列, 先后 发送 类型 从 10 到 1 的消 息, 然 后 退出 。 最 后的 一个 消息 , 即 是 SERVER 端 需 要 的结 束 信
4、号 。CLIENT 每 发 送 一条消 息后 显 示 一句“ (client)sent”。(4) 父进 程 在 SERVER 和 CLIENT 均退 出后结 束 。程序) /*e-2-1*/#include#include#include#include#define MSGKEY 75 /* 定义关键词MEGKEY*/struct msgform /* 消息结构 */long mtype;char mtextl030; /* 文本长度 */msg;int msgqid,i;void CLIENT() int i;msgqid=msgget(MSGKEY,0777);for(i=10;i=1;
5、 i-)msg.mtype=i; printf(client)sentn);msgsnd(msgqid,&msg,1024,0); /* 发送消息msg入 msgid消息队列 */exit(0);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - void SERVER()msgqid=msgget(MSGKEY,0777|IPC_CREAT); /* 由关键字获得消息队列*/domsgrcv(msgqid,&msg,1030,0,
6、0); /* 从 msgqid队列接收消息msg */printf(server)receivedn);while(msg.mtype!=1); /* 消息类型为1 时,释放队列 */msgctl(msgqid,IPC_RMID,0);exit(O);int main()while(i=fork()=-1);if(!i)SERVER();while(i=fork()=-1);if(!i)CLIENT();wait(0);wait(0);(结 果) 从 理 想的 结果 来 说, 应 当是 每 当 Clinet发送 一 个消 息后 ,Server接收该 消息 ,Clinet再 发送下 一条。 也就
7、 是 说“ (Clinet)sent和“ (server)received的 字样 应该 在 屏幕 上交 替出现 。实 际 的结 果大 多 是, 先由 Clinet发 送 了两 条消 息 , 然后 Server 接收 一条 消息。 此 后 C1inet-Server交 替发 送 和接 收消 息。 最后 Server一次 接名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 收 两条消 息 。 Client和 Server分别 发送
8、和接收 了 10 条消息 , 与预 期设 想一 致。(分 析) message 的 传送和 控制并 不保 证 完全 同步 , 当一 个 程序 不在 激 活状 态的 时候 , 它 完全 可能继 续 睡眠 , 造成 了上 面的现 象 , 在 多次 sendmessage后 才 receive message。 这一点 有助 于 理解 消息 传 送的 实现 机理。2. 共 享存储 区的创 建 , 附 接和断 接(任 务) 使 用 系统 调 用 shmget(),sgmat(),smgdt(),shmctl(),编制 一 个与 上述 相同功 能 的程 序。 (1) 为了 便 于 操作 和 观 察结 果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统课程设计进程间通信 2022 操作系统 课程设计 进程 通信
限制150内