【操作系统】生产者—消费者问题(针对full、plate等同步信号量的答疑)

文章探讨了为何在生产者-消费者问题中需要使用empty和full两个同步信号量来防止生产者超额生产和消费者无物可消的情况。而在多生产者-多消费者问题中,通过plate、orange、apple信号量实现类似功能,尽管没有明确的full和empty,但概念上仍然涉及两种状态的转换,保证了系统的正确同步。
摘要由CSDN通过智能技术生成

本文章默认的前置条件

  1. 面向正在看或刚看完(王道考研操作系统中)生产者—消费者问题和多生产者—多消费者问题这【两节】的学习者们;
  2. 且对生产者—消费者问题中empty和full同步信号量产生疑惑;
  3. 对多生产者—多消费者问题中plate、orange、apple同步信号量产生疑惑;
  4. 非专业性文章,作为个人向的思路,仅供大家辅助理解之用。

目录

在生产者—消费者问题中,为什么使用empty和full两个同步信号量?直接用一个同步信号量不行吗?

在多生产者—多消费问题中,为什么这个问题中没有像上个问题一样使用full和empty两种同步信号量呢?

在生产者—消费者问题中,为什么使用empty和full两个同步信号量?直接用一个同步信号量不行吗?

  1. 如果你观察了记录性信号量的话,就会发现,“0”是一个很独特的分界线。我们可以得出结论,每个信号量有且只有“0”这一个分界线。(仅供理解哈)
  2. 生产者—消费者问题明显有两个分界线——产品为0时,让消费者进入堵塞;产品满了的时候,让生产者进入堵塞。(说白了就是区间[0,5],同时拥有最大值和最小值)
  3. 如果只使用一个信号量,就无法同时满足两个分界线。(比如会出现生产者超额生产的情况)
  4. 使用两个信号量的话,当empty<0,生产者就会进入堵塞;当full<0,消费者就会进入堵塞;
  5. 结论——如果一个值同时拥有最大值和最小值,那么它一定涉及两【种】同步信号量之间的转换。(可以结合下图进行理解)


在多生产者—多消费问题中,为什么这个问题中没有像上个问题一样使用full和empty两种同步信号量呢?

  1. 首先,两个问题的结构是相似的,盘子容量这个变量,也依旧同时拥有最大值和最小值这两个分界线。
  2. 所以,这个问题中依旧涉及了两种同步信号量之间的转换只不过orange、apple被视作【同一种】同步信号量,代替了上个问题中full的位置
  3. 结论:在这个问题中,它将empty→plate,full→orange、apple。而结构是极其相似的。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值