- 进程制约方式
- 间接相互制约:也称为进程互斥;进程A与进程B都需要资源C(例如打印机),系统已将C分配给A使用,等待A使用完成后系统再将C分配给B使用
- 直接相互制约:也称为进程同步;A通过缓冲区向B提供数据,当缓冲区为空时B不能获取数据而阻塞;当A把数据放入缓冲区后B将被唤醒;当缓冲区是满时,A阻塞,只有当B把数据取走时A才能被唤醒
- 信号量
- 概念:进行同步和互斥的保证机制
- 表达式:二元组(S,Q),其中S为整型变量,初始化值非负数;Q为初始状态为空的等待队列
- 值大于0:某类资源的数目
- 值小于0:等待该资源的进程数目
- PV操作
- 进行信号量操作的唯一过程
- P操作:信号量减去1,也就是系统分配一个资源给进程,若无资源则进程进入等待状态,记为:P(S)
- V操作:信号量加上1,若它的值小于表示从队列中唤醒一个进程 ,记为:V(S)
- 实现互斥模型
- 概念:实现对临界资源使用
- 原则:
-
- 为临界资源初始化信号量S值为1
- 同一个进程成对使用P(S)、V(S)操作,而且必须先P(S)、后V(S)
- 临界资源代码位于P(S)、V(S)之间
- 实现同步模型
- 概念:实现对进程通信
- 原则:
- 为需要同步操作的逻辑块初始化信号量S值为0
- 一个进程使用P(S)操作,另外一个进程使用V(S)操作,哪个要阻塞哪个就用P操作
- 需要同步操作的逻辑块代码位于P(S)、V(S)之间
- 举例1:
- 举例2: