文档介绍:模拟进程利用双向邮箱通信
进一步了解操作系统中进程的概念以及进程间的通信方式,利用双向邮箱通信机制来模拟进程间的通信,熟悉消息或邮箱机制的特点,掌握其通信的原理,并通过自己编写程序来实现双向邮箱通信。
2. 需求分析,数据结构或模块说明(功能与框图)
利用双向邮箱机制来模拟进程之间的通信。初始条件:;;。要求:,发送进程不能发送消息;,接收进程不能接收消息。
邮箱通信就是由发送进程申请建立一与接收进程链界的邮箱。发送进程把消息送往邮箱,接收进程从邮箱中取出消息,从而完成进程间消息交换。设置邮箱的最大好处就是发送进程和接收进程之间没有处理时间上的限制。一个邮箱可考虑成发送进程与接收进程之间的大小固定的私有数据结构,它不像缓冲区那样被系统内所有进程共享。其通信原理图如下:
邮箱头
…..邮箱体
进程2
deposit(m) remove(m)
进程1
remove(n) deposit(n)
邮箱的结构体:
struct mail
{
int size;//邮箱的大小
int length;//邮箱中消息的长度
}
还有两个子进程:
int p1();
int p2();
设发送进程调用过程deposit(m)将消息发送到邮箱,接受进程调用remove(m),初值为1,
full为进程的状态信号量,初值均为0。则deposit(m)和 remove(m)可描述如下:
deposit(m):
begin
mutex--;
=0;
=0;
();
mutex++;
=1;
end
remove(m):
begin
mutex--;
=0;
();
mutex++;
end
反之,若p2为发送进程,则将上述过程颠倒顺序。
:
: