osPV操作题目汇总

步骤:(前V后P)

1:明确题目中都有哪些进程,以及要做什么事情
2:找出其中的互斥关系,设置互斥信号量mutex(初值为1)
3:找出其中的同步关系,画出同步图,设置同步信号量并设初值
4:根据同步信号量写pv操作(别忘了设初值)

生产者消费者

一个生产者一个消费者,多个缓冲区
进程:生产者 消费者
互斥信号量:mutex(缓冲区)
同步信号量:full,empty,

  生产者                     消费者

 生产一个产品             P(full)
 P(empty)              P(mutex)
 P(mutex)             从缓冲区中取
 放入缓冲区              V(mutex)
 V(mutex)             V(empty)
 V(full)                消费        
 

多生产者多消费者

苹果橘子问题

实现“桌子上有一只盘子,最多可容纳两个水果,每次只能放入或取出一个水果。爸爸专向盘子中放苹果(apple),妈妈专向盘子中N放橘子(orange),两个儿子专等吃盘子中的橘子,两个女儿专等吃盘子中的苹果。请用PV操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。”
进程:爸爸、妈妈、儿子、女儿
互斥:盘子
父亲
在这里插入图片描述
在这里插入图片描述

吸烟者

假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉它,但是要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草、纸和胶水。三个抽烟者中,第一个拥有烟草、 第二个拥有纸、第三个拥有胶水。供应者进程无限地ᨀ供三种材料,供应者每次将两种材料放桌子上,拥有剩下那种材料的抽烟者卷一根烟并抽掉它,并给供应者进程一个信号告诉完成了,供应者就会放另外两种材料再桌上,这个过程一直重复(让三个抽烟者轮流地抽烟)
在这里插入图片描述

哲学家进餐

在这里插入图片描述

读者写者问题

允许多个读者可以同时对文件执行读操作
写文件时不能有其他读者读,也不能有其他写者写

在这里插入图片描述

从缓冲区取奇偶数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

仓库中产品的存取存在限制

在这里插入图片描述在这里插入图片描述 mutex:每次只能放一个
只有B-A<N 才能继续向里边放A (sb初值设为N-1)
只有A-B<M才能继续向里边放B(B要少一点)(sa初值设为M-1)
在这里插入图片描述
在这里插入图片描述

面包师和推销人员

在这里插入图片描述
在这里插入图片描述

参观博物馆

在这里插入图片描述
在这里插入图片描述

工厂生产零件装配产品

在这里插入图片描述在这里插入图片描述 在这里插入图片描述
在这里插入图片描述
对于装配车间刚开始有一个疑惑,为什么不是把full1 full2在前边直接减一,这样难道不会取完一个另一个没有了,这样阻塞问题怎么办呢?
回答:
如果全部在前边减一了,那么若F1为空,即使此时F2上有货物,但由于阻塞到F1 那里了,那么F2也没办法取
而如果分开减的话,若F1顺利取走,F2此时阻塞,那么进程F3就会阻塞,直到F2货架上有产品之后,F3顺利执行

老和尚和小和尚

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

三个进程同步的PV操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

银行顾客和营业员的PV操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

NS汽车桥上通行问题(相当于两个读者)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自行车生产线加工自行车(生产消费+死锁;)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一个既是生产者也是消费者

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个问题对于既是消费者又是生产者的那个进程,不用考虑的太复杂,其实就是根据当前缓冲区的情况来决定到底是生产者还是消费者,加一个if语句就可以了

理发师和顾客问题

在这里插入图片描述
在这里插入图片描述

播放影片的PV操作

在这里插入图片描述
s是电影院变量,count分别读者共享
在这里插入图片描述

安全岛通行问题

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

公交车售票问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意s1,s2 不能都是1,如果都为1,两个p操作就都能进行了,失去同步关系,可以假定在开车状态,一个设1一个设0
也可以向答案中的那样,利用先v后p

信箱中取信问题

在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章