进程通信上机实验.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

进程控制块PCB
PCB
计数 sm 队首指针 front 队尾指针 rear
消息缓冲队列
struct
初始化时: 0sm NULLpcb [j].front NULLpcb [j].rear
int id; char status; int waiter1; int priority; int sm;
队列空? Y
N
插在链首
插在链尾
队尾指针指向新插入缓冲区 队列缓冲区个数计数加1
接收函数 receive()
调用参数:
rec_id 接收进程标识符 b [ ] 接收区数组
队列空? Y 输出“无消息”提示信息,返回
N
取队首缓冲区,由P指向,队列计数减1
队首
Y
指针为空?
置队尾指针为空
N
复制数据到接收区数组b
进程通信上机实验
——消息缓冲通信
一、算法思想
在进程管理(调度)实验基础上,加入进 程通信的功能,采用消息缓冲通信机制进 行通信。
P1发送数据给P2或P3,P2或P3接收数据并输 出。
数据内容由操作者实时输入。
二、数据结构
缓冲区结构
接收进程标识符 消息长度 链接指针
消息正文
typedef struct node int id; int size; char text [100]; struct node *next; buftype;
① 题目 ② 算法思想(消息缓冲通信算法思想) ③ 算法程序 ④ 测试情况、分析 ⑤ 收获、体会
释放缓冲区
四、实验操作程序
在P1,P2,P3的程序中加入发送、接收的操作代码
Process1() 在P1被P2唤醒后插入以下操作
提示用户输入选择字符
N
发送?
Y
提示用户输入接收进程标识符(1或2) 提示用户输入发送数据存入发送区a数组(不超过100字符)
求出输入字符个数len
调用发送函数发送信息给P2或P3
Process2()
在P2被P3唤醒后插入以下操作
提示用户输入选择字符
N
接收?
Y
调用接收函数 接收数据送到接收区b数组
输出接收区数据
Process3()
在P3调用V操作唤醒P2前加入以下操作
调用接收函数,接收数据送到接收区c数组 输出接收区数据
五、实验步骤
消化进程管理实验程序。 编写发送、接收函数,修改Pi程序。 上机测试,并记录测试数据及结果 书写实验报告
buftype *front;
buftype *rear;
pcb [4];
三、发送、接收程序算法流程
发送函数 send()
调用参数:
rec_id 接收进程标识符 a [ ] 消息正文数组 n 消息长度
分配缓冲区空间,由P指向
接收进程标识符、信息长度存入缓冲பைடு நூலகம் 置链接指针为空,将信息正文从发送区复制到正文区
相关文档
最新文档