操作系统之信号量机制

为什么引入信号量

在这里插入图片描述

  • 因为之前我们不管是软件还是硬件都无法全满足那四个条件 满则等待 空闲让进 让权等待 有限等待 所以用了信号量来实现进程同步和互斥的方法

什么是信号量机制

在这里插入图片描述

  • 用户进程可以通过操作系统提供的一对原语来队信号量操作,来实现进程互斥和进程同步
  • wait(S)原语 也称P操作
  • signal(S)原语 也称V操作

整型信号量

在这里插入图片描述

  • 用一个整数型的变量作为信号量,用来表示系统中的某种资源的数量
  • 因为p v 操作是原子性的,所以避免了并发和异步导致的问题
  • wait是通过轮询来检查资源是否足够 我们通过比较s的值是否小于等于0 信号量值是一个共享变量 轮询这种运算,就是CPU一直在允许却没干正事
  • signal操作就是直接将资源数加1
  • 但是整型信号量是不满足让权等待的原则

记录型信号量

在这里插入图片描述

  • 记录型信号量是为了解决忙等的情况,也就是满足让权等待
    • 通过我们的block 和 wakeup进行线程的阻塞
  • 所谓记录型中有一个等待队列
  • wait操作 就是将对应的信号量减1,如果资源数小于0,说明资源不够,那么就将这个线程阻塞
  • signal操作 先将对应的信号量加1,释放资源之后,若资源数小于等于0,说明是有线程在等待这个资源,就将等待队列中的一个进程唤醒,变成就绪态

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

库里不会投三分

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

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

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

打赏作者

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

抵扣说明:

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

余额充值