文章目录
- 1 进程同步与互斥
- 1.1 进程同步
- 1.2 进程互斥
- 1.3 进程同步机制遵循的原则
- 1.3 进程同步、互斥小结
- 2 进程互斥实现方法
- 2.1 互斥的软件实现方法
- 2.1.1 单标志法
- 2.1.2 双标志法先检查
- 2.1.3 双标志法后检查
- 2.1.4 Peterson算法
- 2.1.5 互斥的软件实现方法小结
- 2.2 互斥的硬件实现方法
- 2.2.1 中断屏蔽法
- 2.2.2 TestAndSet指令
- 2.2.3 Swap指令
- 2.2.4 互斥硬件实现方法小结
1 进程同步与互斥
1.1 进程同步
主要是为了解决进程异步问题管理多个进程的运行,为了使多个进程能够有条不紊地运行。
进程同步机制主要任务:对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能按一定规则(或时序)共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性。
1.2 进程互斥
进程互斥:当前一个进程访问某源时,另外一个要访问该临界资源的进程必须要等待。
- 临界资源:一段时间内只允许一个进程访问的资源,比如物理设备(摄像头、打印机)和某些变量、数据、内存缓冲区都是临界资源。
- 对临界资源的访问必须互斥地进行。
对临界资源的访问过程可分为4个部分:
>临界区:进程访问临界资源的那段代码
进入区、退出区:实现进程互斥的那段代码段
1.3 进程同步机制遵循的原则
- 空闲让进:临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;
- 忙则等待:当已有进程进入临界区时,其他试图进入临界区的进程必须等待;
- 有限等待:对请求访问的进程,应确保能在有限时间内进入临界区,不会产生饥饿现象;
- 让权等待:当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。
1.3 进程同步、互斥小结
2 进程互斥实现方法
2.1 互斥的软件实现方法
2.1.1 单标志法
算法思想:两个进程在访问完临界区后会把使用临界区的权限交给另一个进程。也就是说每个进程进入临界区的权限只能由另一个进程赋予。
- 优点:可以实现同一时间内最多只允许一个进程访问临界区。两个进程必须是交替进入临界区。
- 局限性:违背了空闲让进原则,若某个进程不再进入临界区,另外进程也无法进入临界区,很容易造成资源利用不充分。
2.1.2 双标志法先检查
算法思想:每个进程访问临界区资源之前,先查看临界资源是否正被访问,若被访问,该进程需等待,否则,进程才进入自己的临界区。
先检查对方进程状态,再置自己标志
- 优点:不用交替进入,可连续使用
- 局限:两个进程可能同时进入临界区,违背忙则等待原则
2.1.3 双标志法后检查
先设置自己标志,再检查对方进程状态
局限:不遵循空闲让进,有限等待,容易导致双方谦让,从而谁也无法进入临界区,产生“饥饿”现象
2.1.4 Peterson算法
算法思想:是单标志法和双标志法后检查的综合
局限:不遵循让权等待,会发生忙等
2.1.5 互斥的软件实现方法小结
2.2 互斥的硬件实现方法
2.2.1 中断屏蔽法
利用“开/关中断指令”实现(与原语的实现思想相同,即在某进程开始访问临界区到结束为止都不允许中断,即不能发生进程切换,因此不可能发生两个进程同时访问临界区的情况)
- 优点:简单、高效
- 局限:不适用多处理机;只适用操作系统内核进程。不适用用户进程
2.2.2 TestAndSet指令
简称TS指令或TSL指令,用硬件实现,执行过程不许间断,只可一气呵成。
- 优点:实现简单、适用于多处理环境
- 缺点:不满足“让权等待”原则,暂时无法进入临界区的进程会占用CPU并循环执行TSL指令,并会导致"忙等"
2.2.3 Swap指令
也称Exchange
指令,简称XCHG
指令
用硬件实现,执行过程中不允许间断,只可一气呵成
- 优点:实现简单,适用多处理机环境
- 缺点:不满足“让权等待”原则,暂时无法进入临界区的进程会占用CPU并循环执行TSL指令,并会导致"忙等"