考研系列—操作系统:PV问题汇总

1.生产者-消费者问题

特点:进程与进程之间的关系是生产资源-消耗资源的关系

做题步骤:

注意,对缓冲区的PV操作放在对缓冲区动作的上下相邻两侧,可以有效避免死锁。

对于程序写完要分析一下多个连续的P操作是否可能产生死锁!!!小和尚老和尚打水喝的例子就是可能会出现这样的情况。

2.哲学家进餐问题(模版)

用第三个方法:使用一个互斥变量,同一时刻保证分配需要的所有资源。

无脑套第三个方法模版

例子:

3.理发师问题

waiting变量完成表示取号叫号的过程

service变量实现服务的同步关系

人太多就直接离开的补充(这里直接对waiting变量判断了,不需要加一个新的同步变量)

睡觉情况的补充

4.读写者问题

(1)读进程优先-会造成写进程饥饿

图示:

代码:

(2)读写公平法

每个进程刚开始就要去queue进行排队

在P(lock)以后V(queue)来唤醒队列排队获得锁的进程

(3)写进程优先

读者反锁写者的门

第一个写者直接先把读者门锁上,然后看更衣室是否被占用(也就是看写锁有没有),如果有就在外面排队获取写门锁。

等写者进去以后,写完成时会去检测一下等待获得写者锁的数量有多少,如果有则只打开写门锁,如果没有,则打开读门锁

5.单纯的前驱后继关系

设置信号量(前V后P操作)

也可以用同步互斥的思路去解题

根据动作写是否需要P,有P必有V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值