一、基本概念

进程同步: 同步亦称直接制约关系,是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上 协调 它们的 工作次序 而产生的制约关系。进程间的直接制约关系源于他们之间的合作。

进程互斥: 指当一个进程访问某临界资源时,另一个进程想要访问就必须等待,当前访问 临界资源 的进程访问结束,释放该资源后,另一个进程才能访问临界资源。

【复习笔记】操作系统之进程的同步和互斥_信号量

二、信号量机制

1. 整型信号量

【复习笔记】操作系统之进程的同步和互斥_信号量_02

2. 记录型信号量

【复习笔记】操作系统之进程的同步和互斥_死锁_03

【复习笔记】操作系统之进程的同步和互斥_死锁_04

【复习笔记】操作系统之进程的同步和互斥_信号量_05

三、信号量机制实现进程同步

【复习笔记】操作系统之进程的同步和互斥_互斥_06

信号量机制实现前驱关系

【复习笔记】操作系统之进程的同步和互斥_死锁_07

【复习笔记】操作系统之进程的同步和互斥_死锁_08

四、信号量机制的应用

1. ​​生产消费和读写者问题​

【复习笔记】操作系统之进程的同步和互斥_互斥_09

【复习笔记】操作系统之进程的同步和互斥_互斥_10

【复习笔记】操作系统之进程的同步和互斥_互斥_11


  1. 多(类)生产者——多(类)消费者问题



代码实现:

【复习笔记】操作系统之进程的同步和互斥_信号量_12


思考:如果不要互斥信号量是否可以满足题目要求?


是可以满足题目要求的,主要是因为盘子的容量是1。如果盘子的容量大于1,就必须使用互斥信号量【复习笔记】操作系统之进程的同步和互斥_互斥_13

3. 哲学家进餐问题


解决办法:

【复习笔记】操作系统之进程的同步和互斥_信号量_14


设置互斥信号量【复习笔记】操作系统之进程的同步和互斥_互斥_13,使得每个哲学家互斥拿起筷子,并且一次拿起两只筷子。

【复习笔记】操作系统之进程的同步和互斥_互斥_16

五、管程

1. 管程的组成

【复习笔记】操作系统之进程的同步和互斥_信号量_17

2. 管程的基本特征

【复习笔记】操作系统之进程的同步和互斥_死锁_18

管程的定义:

【复习笔记】操作系统之进程的同步和互斥_信号量_19


管程的调用:

【复习笔记】操作系统之进程的同步和互斥_互斥_20


关于管程的总结:

【复习笔记】操作系统之进程的同步和互斥_死锁_21


【复习笔记】操作系统之进程的同步和互斥_死锁_22

六、死锁(Dead Lock)

1. 定义: 在并发环境下,各进程因竞争资源而造成一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进 的现象。

2. 死锁、饥饿、死循环的区别:

【复习笔记】操作系统之进程的同步和互斥_互斥_23


死锁和饥饿不占用处理机,而死循环一定占用处理机。

可以是一个或多个进程饥饿,而死锁只能是多个进程同时死锁。

3. 死锁产生的必要条件

产生死锁必须同时满足以下四个条件,只要有一个不成立,就不会发生死锁。

【复习笔记】操作系统之进程的同步和互斥_信号量_24

4. 死锁的处理策略

【复习笔记】操作系统之进程的同步和互斥_互斥_25


破坏不可剥夺条件

【复习笔记】操作系统之进程的同步和互斥_信号量_26

破坏请求和保持条件

【复习笔记】操作系统之进程的同步和互斥_信号量_27


【复习笔记】操作系统之进程的同步和互斥_互斥_28


破坏循环等待条件

按编号顺序申请,不可逆向或者随意申请


【复习笔记】操作系统之进程的同步和互斥_互斥_29

七、银行家算法(避免死锁)

【复习笔记】操作系统之进程的同步和互斥_互斥_30


代码实现的数据结构:

【复习笔记】操作系统之进程的同步和互斥_死锁_31

八、死锁的检测与解除

【复习笔记】操作系统之进程的同步和互斥_信号量_32

此时需要解除死锁