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

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统王道考研 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;

总结


以上是关于操作系统王道考研 p20-21 信号量机制用信号量机制实现进程互斥同步前驱关系(内含PV操作,十分重要)的主要内容,如果未能解决你的问题,请参考以下文章

(王道408考研操作系统)第二章进程管理-第三节5:用信号量实现进程互斥同步和前驱关系

(王道408考研操作系统)第二章进程管理-第三节4:信号量机制(整型记录型信号量和PV操作)

(王道考研P18~P28)

进程管理(二[2])

(王道考研P18~P28)

(王道408考研操作系统)第二章进程管理-第三节11:管程(Monitor)及条件变量