操作系统——pv之道

我们的生活每天都有很多的事情发生,大部分事情我们可以自行处理,有些事情我们就要和其他人合作,比如去饭馆吃饭,饭馆是我们的一个经常光顾的地方,但是我们往往会碰到这样的情况,附近只有这一家饭馆,我很饿,不想去别的饭馆,刚刚我来的时候没有了位置,服务员让我等,看到别人在那吃得满嘴流油,恨啊……

刚刚的场景,很生活,我们不妨让时间暂停在上面那句话的时刻,我们来看这个可不可以解释pv操作,首先我们定义,饭馆有3张桌子,饭馆的经营情况是只有一个厨师,来的客人不定,在厨师的案面上放着要做几个菜,客人点菜由客人自己保管(小票),厨师念号,告诉他做什么!

我们这么定义,厨师做几个菜是厨师的信号为Sc,客人看到饭馆剩几个座位是客人的信号Sp。

上午9点,饭馆里没有一个客人,刚好有个客人来,还没有点菜

Sc=0

Sp=3


客人点了一个菜

Sc=1

Sp=2


上午11点,客人坐满,没有人等着,所有客人都点菜了

Sc=3

Sp=0


上午11:30,客人饱满,有三个客人等着,客人点菜还没上

Sc=3

Sp=-3


这时候我们再解释pv,p操作是看看有没有资源,对于厨师是看看有没有人要做饭,对于顾客是看看还有几个位置;v操作是,有一个顾客吃完饭了,释放了一个位置,对于厨师要判断要不要做饭,有人等着,就要做,没有人等着,就等待。

程序的厨师设置为

Sc=0

Sp=3


厨师的代码是

p(Sc):看看要不要做饭

做饭+送饭

v(Sp):通知顾客吃饭


顾客的代码:

p(Sp):看看我能吃饭吗?

点菜+吃完

v(Sc):通知厨师有一个空位置


这里我们理解pv操作的意义,饭馆使我们的一个公共资源,我们要向好好的利用它,就要有排队,顾客排队点菜,厨师排队做饭,这样我们就和谐了,如果只有一个桌子厨师做了顾客才能吃,是合作的关系,也叫同步,如果饭馆就剩一个位置了,来了两个顾客,他两打起来了,这就叫互斥!所以pv操作是解决公共资源利用的问题,就是临界区的问题!希望大家能稍微理解!











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值