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

一、基本概念

进程同步: 同步亦称直接制约关系,是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上 协调 它们的 工作次序 而产生的制约关系。进程间的直接制约关系源于他们之间的合作。
进程互斥: 指当一个进程访问某临界资源时,另一个进程想要访问就必须等待,当前访问 临界资源 的进程访问结束,释放该资源后,另一个进程才能访问临界资源。
在这里插入图片描述

二、信号量机制

1. 整型信号量

在这里插入图片描述

2. 记录型信号量

在这里插入图片描述

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

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

在这里插入图片描述
信号量机制实现前驱关系
在这里插入图片描述
在这里插入图片描述

四、信号量机制的应用

1. 生产消费和读写者问题
2. 多(类)生产者——多(类)消费者问题

在这里插入图片描述
代码实现:
在这里插入图片描述
思考:如果不要互斥信号量是否可以满足题目要求?
在这里插入图片描述
是可以满足题目要求的,主要是因为盘子的容量是1。如果盘子的容量大于1,就必须使用互斥信号量 m u t e x mutex mutex

3. 哲学家进餐问题

在这里插入图片描述
解决办法:

在这里插入图片描述
设置互斥信号量 m u t e x mutex mutex,使得每个哲学家互斥拿起筷子,并且一次拿起两只筷子。

在这里插入图片描述

五、管程

1. 管程的组成

在这里插入图片描述

2. 管程的基本特征

在这里插入图片描述

扫描二维码关注公众号,回复: 11847811 查看本文章

管程的定义:
在这里插入图片描述
管程的调用:
在这里插入图片描述
关于管程的总结:

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

六、死锁(Dead Lock)

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

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

在这里插入图片描述
死锁和饥饿不占用处理机,而死循环一定占用处理机。

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

3. 死锁产生的必要条件

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

在这里插入图片描述

4. 死锁的处理策略

在这里插入图片描述
破坏不可剥夺条件

在这里插入图片描述

破坏请求和保持条件

在这里插入图片描述
在这里插入图片描述
破坏循环等待条件

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

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

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

在这里插入图片描述
代码实现的数据结构:

在这里插入图片描述

八、死锁的检测与解除

在这里插入图片描述

在这里插入图片描述

此时需要解除死锁

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42500831/article/details/107938809