使用PV操作描述四个进程的执行过程

有四个进程P1,P2,P3,P4共享一个缓冲区,进程P1向缓冲区中存入消息,进程P2,P3P4从缓冲区中取消息,要求发送者必须等三个进程都取过本条消息后才能发送下一条消息,缓冲区内每次只能容纳一个消息,用PV操作描述四个进程存取消息的情况。

1 分析:

读者:P2,P3,P4都可以访问缓冲区,可同时访问

写者:P1存入消息

2 基本思想:利用读者-写者模型完成。”发送者必须等三个进程都取过本条消息后才能发送下一条消息”说明读者优先。

3形式化描述:

semaphore Wmutex =1,Rmutex=1;
int Rcount=0;
void reader() /* P2,P3,P4进程:*/
{
     while(true) 
    {
       P(Rmutex);
       if(Rcount==0)  P(Wmutex);
       Rcount++; 
       V(Rmutex); 
       读消息;   /* P2,P3,P4执行读操作*/
       P(Rmutex);
      Rcount--;
      if(Rcount==0)  V(Wmutex);
      V(Rmutex); 
    } 
} 
void writer()   /*P1进程:*/
{
   while(true)
   {
      P(Wmutex);
      P1存入消息;
      V(Wmutex);
}
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值