目录
一. 进程同步
1.1 引入原因:
协调进程之间的相互制约关系。
1.2 制约关系:
- 同步制约关系 : 亦称直接制约关系。
- 要先完成A,B才能得到运行。
2.互斥制约关系 : 也称间接制约关系。
- 如果A运行了,B就不能运行。
- 若干进程享受同一资源时,任意时刻最多允许一个进程去使用。比如:厕所
进程的同步与互斥就是为了解决这些制约关系!!!
-
在操作系统中,实现进程同步的机制有信号量机制和管程机制。
- 像xxx系统、管道这些都属于高级通信工具,而信号量它是一个量,它属于是一种低级通信工具。
二. 临界资源
1.1 定义 :
临界资源:一次仅允许一个进程使用的资源。Eg:打印机
1.2 临界区定义:
临界区:在每个进程中访问临界资源的那段程序或者代码称为临界区。
1.3 进程同步机制应遵循的四个原则:
- 空闲让进: 资源无占用,允许占用。如果有若干进程要求进入空闲的临界区,一次只允许一个进程进入。
- 忙则等待: 资源被占用,请求进程等待。任意时刻,处于临界区内的进程不可多于一个,如已有进程进入到自己的临界区,则其它所有试图进入临界区的进程必须等待。
- 有限等待: 进入临界区的进程要在有限时间内退出,以便其它进程能及时进入到自己的临界区,避免其他进程出现“死等”现象。
- 让权等待: 等待时,进程需要让出CPU。如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象,浪费CPU资源。
三.临界区/进程互斥
1.4 如何去使用临界区/进程互斥
- 信号量 :利用PV操作实现临界区/进程互斥(PV操作是一种原语)
- 设临界资源 m = 1,一次P(m)操作使用了该资源,原来的资源是1,使用了之后减1变为0;一次V(m)操作放回了该m资源,则 m + 1 = 1。
- P操作 - {使用 - 1} V操作 - {放回 + 1}
- PV操作是一种低级进程通信原语。
- 原语的意思是其操作只能一气呵成,不可以被打断。 => P、V操作相当于一个封死的模块,不可以被打断。
1.5 如何解决进程互斥
- 解决进程互斥最简单的办法是加锁
- 加锁机制实现互斥的问题 : 1. 进程出现“忙等”状况,浪费CPU资源。
2. 锁本身也是临界资源,存在隐患