1、什么是进程同步
1.1、回顾异步性
异步 \color{red}异步 异步是指,
- 在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
由于系统的有限资源导致的
例如:老渣要和两个女孩并发约会
一号的指令 1 :老渣陪我吃饭
一号的指令 2 :老渣把心给我
二号的指令 1 :老渣把心给我
二号的指令 2 :老渣陪我吃饭
与一号、二号的约会相当于对两个进程的处理,每个进程都有各自需要执行的指令。
老渣的心相当于有限的系统资源。
若女一号只想做老渣的初恋
女二号只想交一个有恋爱经验的渣男
那么,老渣在并发执行这两个约会进程的时候,就必须保证 “一号的指令2” 一定要在 二号的指令1” 之前执行。
操作系统需要提供 “进程同步机制” 来实现上述需求
1.2、回顾进程通信–管道通信
读进程和写进程并发地运行,由于并发必然导致异步性,
- 因此 “写数据” 和 “读数据” 两个操作执行的先后顺序是不确定的。
而实际应用中,又必须按照 “写数据→读数据” 的顺序来执行的。
如何解决这种 异步 \color{red}异步 异步问题,
- 就是 “进程 同步 \color{red}同步 同步” 所讨论的内容。
1.3、同步(直接制约关系)
同步 \color{red}同步 同步亦称 直接制约关系 \color{red}直接制约关系 直接制约关系,
- 它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。
- 进程间的直接制约关系就是源于它们之间的相互合作。
2、进程互斥(间接制约关系)
进程的 “并发 ”需要 “共享” 的支持。各个并发执行的进程不可避免的需要共享一些系统资源
- 比如内存,又比如打印机、摄像头这样的
I/O
设备
临界资源 \color{red}临界资源 临界资源
- 一个时间段内只允许一个进程使用 \textcolor{red}{一个时间段内只允许一个进程使用} 一个时间段内只允许一个进程使用的资源
许多物理设备(比如摄像头、打印机)都属于临界资源。
此外还有许多变量、数据、内存缓冲区等都属于临界资源。
对临界资源的访问,必须互斥地进行。
互斥 \color{red}互斥 互斥,亦称 间接制约关系 \color{red}间接制约关系 间接制约关系。
- 进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后另一个进程才能去访问临界资源。
2.1、对临界资源的互斥访问(四个部分)
注意:
-
临界区 \textcolor{red}{临界区} 临界区是进程中 访问临界资源 \textcolor{red}{访问临界资源} 访问临界资源的代码段。
-
进入区 \textcolor{red}{进入区} 进入区和 退出区 \textcolor{red}{退出区} 退出区是 负责实现互斥 \textcolor{red}{负责实现互斥} 负责实现互斥的代码段。
-
临界区也可以称为 “临界段”
如果一个进程暂时不能进入临界区,
-
那么该进程是否应该一直占着处理机?
-
该进程有没有可能一直进不了临界区?
2.2、遵循的原则
-
空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;
-
忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待;
-
有限等待。对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿);
-
让权等待。当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。