【操作系统】王道考研 p20-21 信号量机制、用信号量机制实现进程互斥、同步、前驱关系(内含PV操作,十分重要)

视频1
视频2

知识总览

信号量机制:

  • 整型信号量
  • 记录型信号量
  • 实现进程互斥
  • 实现进程同步
  • 实现进程的前驱关系

信号量机制

在这里插入图片描述

整型信号量

对信号量的操作只有三种:初始化、P操作、V操作;
可以“一气呵成”是因为用了原语。
不满足“让权等待”。
在这里插入图片描述

记录型信号量(重要!!)

wait原语,申请资源。
signal原语,释放资源。

先value–,再判断是否<0,可以理解为资源数从0开始计数,小于0才算没有。
value==0的时候是“到这里资源刚好用完”的意思。<0才是不够了需要阻塞。
在这里插入图片描述
这里可以看一个例子,在视频1的16:19-23:19。

最重要的图:
对于V操作,在S.value<=0时也要wake up,因为S.value<=0说明有进程在等,所以要叫醒,而因为刚++过,不会出现刚叫醒完因为没有资源又阻塞的状态。
在这里插入图片描述

信号量机制实现进程互斥

互斥问题,信号量处置为1:一次只有一个进程能使用这个资源。
)

信号量机制实现进程同步

同步问题,信号量处置为0。
在这里插入图片描述
34:==在前操作之后执行V(S),在后操作之前执行P(S)==的意思:前操作执行完就释放(V),后操作执行前要申请(P);
在这里插入图片描述

信号量机制实现前驱关系

分析以下这个图:
对于P1:执行完S1就要释放a、b资源,即V(a),V(b);
对于P2:要在S1执行后才能执行S2,它需要a资源,所以要在S2执行前申请a,即P(a);P2又是S4、S5的前驱,它要释放c、d资源S4,S5才能执行,因此还要V©,V(d);
对于P3:它是S1的后继,S6的前驱,因此要先P(b),再S3,再V(g);
对于P4:与P3同理;
对于P5:与P3同理。
对于P6:因为它不是任何进程的前驱,所以不用V,只需要在S6之前申请即可,即P(e),P(f),P(g),再S6;
在这里插入图片描述

总结

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

karshey

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

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

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

打赏作者

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

抵扣说明:

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

余额充值