操作系统-吸烟者问题

本文讨论了操作系统中的经典问题——吸烟者问题,涉及进程间同步与互斥。通过信号量(如offer1,offer2,offer3和finish)和P、V操作,解决了供应者提供材料和吸烟者按顺序获取的难题。问题分析中强调了信号变量的互斥性及非互斥情况下的解决方案,小结部分提到使用循环和随机函数实现资源均衡分配。
摘要由CSDN通过智能技术生成

概述

操作系统中的吸烟者问题是一个经典的同步问题,它涉及到进程间的同步和互斥。

在这个问题中,有三个抽烟者进程和一个供应者进程。每个抽烟者需要三种材料:烟草、纸和胶水来完成吸烟的操作。三个抽烟者分别拥有这三种材料中的一种。供应者进程负责提供这三种材料,但每次只能提供两种,而且供应者需要等待一个吸烟者完成吸烟并发出信号后才能继续提供下一组材料。这个问题的关键在于如何协调供应者和吸烟者之间的动作,以确保每个吸烟者都能得到所需的材料,并且按照正确的顺序进行吸烟。

为了解决这个问题,可以设置信号量来控制进程间的同步和互斥。具体来说,可以设置三个信号量offer1、offer2和offer3,分别表示烟草和纸、烟草和胶水、纸和胶水的组合资源。还需要一个信号量finish用于同步吸烟者和供应者进程,供应者需要等待一个吸烟者吸完烟,再提供下一个资源,吸烟者要通过finish信号量告诉供应商,我已经吸完烟了。

总的来说,这个问题的解决方案涉及到操作系统中的生产者-消费者问题,以及信号量和P、V操作的使用。通过合理地设计信号量和使用P、V操作,可以实现进程间的有效同步,确保每个进程都能按照既定的顺序执行,避免竞争条件和死锁的发生。这个问题的解决对于理解和掌握操作系统中的并发控制和进程同步机制非常重要。

问题分析

将两种材料抽象一种组合
在这里插入图片描述
由于各个信号变量最多只有一个为1,所以不需要互斥变量
在这里插入图片描述

如何实现

通过循环实现均匀提供组合
不需要互斥信号量
在这里插入图片描述

小结

随机不等于轮流
轮流通过循环的方式
随机通过随机函数的生成的随机变量
在这里插入图片描述
V操作放到事件发送后的位置即将组合放到桌子上然后再进行V操作

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看星猩的柴狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值