同步与互斥的基本概念
前言提要:进程具有异步特性
欲想各个进程按顺序进行,那么操作系统需要提供一个"进程同步机制"来解决异步性带来的问题
#同步
也称直接制约关系
他是指为了完成某种任务而建立的两个或者多个进程,这些进程因为需要再某些位置上协调他们的工作次序而产生的制约关系。
如进程通信之管道通信,需要利用同步来制约读进程和写进程的先后关系
#互斥
我们把一个时间段内只允许一个进程使用的资源成为临界资源
如很多物理设备(打印机,摄像头),还有许多变量,数据,内存缓冲区等资源
对临界资源的访问,必须要*互斥*地进行
*互斥*,亦称*间接制约关系*。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待,当前访问临界资源的进程访问结束,释放该资源后,另一个进程才能去访问临界资源
#互斥逻辑实现
分为四段代码逻辑
*进入区*:
负责检查是否可以进入临界区,若可以进入,则应该是指正在访问临界资源的标志(上锁),以阻止其他进程同时进入临界区。
*临界区(临界段)*:
访问临界资源的代码
*退出区*:
负责解除正在访问临界资源的标志(解锁)
*剩余区*:
做其他处理
该四段代码逻辑,*临界区是进程访问临界资源的代码,进入区和退出区是负责实现互斥的代码*
#实现互斥必要原则
*空闲让进*:
#空闲让进
临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区
*忙则等待*:
#忙则等待
当已有进程进入临界区时,其他试图进入临界区的进程必须等待
*优先等待*:
#优先等待
对请求访问的进程,应保证能在有限时间内进入临界区(保证不会导致饥饿)
*让权等待*:
#让权等待
当进程不能进入临界区时,应立即释放处理机,防止进程忙等待