操作系统PV操作习题

1.两个进程PA 和PB通过两个FIFO缓冲区队列连接(如下图所示),每个缓冲区长度等于传送消息长度。进程PA和PB之间的通信满足如下条件:

(a)至少有一个空缓冲区存在时,相应的发送进程才能发送一个消息。

(b)当缓冲队列中至少存在一个 非空缓冲区时,相应的接收进程才能接收一个消息。

试描述发送过程send(i,m)和接收过程receive(i,m)。这里i代表缓冲队列。

      由题意可知,进程PA与PB之间进行通信时,过程send(i,m)和过程receive(i,m)必须同步执行,因为过程send(i,m)的执行结果是过程receive(i,m)的执行条件,而当缓冲队列全部装满数据时,receive(i,m)的执行结果又是send(i,m)的执行条件,满足同步定义。

      由于进程PA和PB通过俩个FIFO缓冲区队列连接,设Bufempty[0],Bufempty[1]为进程PA的私用信号量,Buffull[0]、Buffull[1]为进程PB的私用信号量。Bufempty[0],Bufempty[1]的初始值为n(n为缓冲队列的缓冲区个数),Buffull[0]、Buffull[1]的初始值为0。

send(i,m):

        begin local x

        P(Bufempty[i])

        按FIFO方式选择一个空缓冲区Buf[i](x)

        Buf[i](x) <- m

        Buf[i](x)置满标记位

        V(Buffull[i])

end

receive(i,m):

        begin local x

        P(Buffull[i])

        按FIFO方式选择一个装满数据的缓冲区Buf[i](x)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统中的PV操作是指进程之间通过信号量来实现同步和互斥的一种机制。PV操作主要包括信号量的P操作和V操作。 P操作又称为申请操作。当进程需要使用一个资源时,它需要执行P操作。P操作会检查该资源的信号量值,若值大于0,则表示资源可用,进程可以继续执行,并将信号量值减1;若值等于0,则表示资源不可用,进程需要等待。 V操作又称为释放操作。当进程释放一个资源时,它需要执行V操作。V操作会将该资源的信号量值加1。如果有其他进程正在等待该资源,V操作会唤醒其中一个进程,使其继续执行。 下面通过一个简单的例子来说明PV操作的使用: 假设有两个进程P1和P2,它们都需要访问一个临界资源,同时只能有一个进程访问该资源。 1. 初始化一个二进制信号量sem,初始值为1,表示资源可用。 2. P1进程执行时,先执行P操作,检查sem的值。由于sem的值为1,P1可以继续执行,sem的值变为0,表示资源已被占用。 3. P1进程访问资源进行操作。 4. P1进程操作完成后,执行V操作,将sem的值加1。由于没有其他进程等待该资源,操作结束。 5. P2进程执行时,先执行P操作,检查sem的值。由于sem的值为1,P2可以继续执行,sem的值变为0,表示资源已被占用。 6. P2进程访问资源进行操作。 7. P2进程操作完成后,执行V操作,将sem的值加1。由于没有其他进程等待该资源,操作结束。 通过PV操作的使用,可以实现进程之间的同步和互斥。只有当资源可用时,进程才能访问该资源,否则需要等待。这样可以有效避免进程之间的冲突和竞争。对于并发程序的正确执行具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值