软硬件的同步进制

软件同步机制

1. 强制轮换法(单标志)

使用一个公用的整形变量,描述允许进入临界区的进程标识,例如,当该变量为1时让进,否则不让进。
优点:不会出现同时进入的情况
缺点:强制性的措施没有考虑进程的实际需要,造成资源利用率低,又因为在一个进程退出之后,在临界区空闲时依然不能连续访问,不满足“空闲则入”的情况。

2. 锁变量方法(双标志、先检查)

先判断检查另一个进程是否在临界区,不在时再修改本进程在临界区的标志,在退出后修改本进程在临界区的标志
优点:解决了第一个算法中的问题,可以连续使用
缺点:无法保证两个进程不能同时进入临界区

3. 锁变量方法(双标志、后检查)

两个进程先都将自己标志改变为true,当同时检测对方的标志时,发现对方也是true,于是两个都进不了临界区。
优点:保证了两个进程不同时进入临界区
缺点:存在两个进程都进入不了临界区,不满足“空闲则入”,发生“饥饿”现象

4. 先检查、后检查、后修改者等待

算法1+算法3 ——> 正确的算法
在进入临界区之前先修改后检查,并且检查并发修改的先后(检查时先检查flag,如果对方不在临界区,直接进入,否则,检查turn值,turn保存的是较晚的一次赋值,较晚的等待,先到先入)
优点:实现了“空闲则入”、“忙则等待”
缺点:没有实现“有限等待”、“让权等待”

硬件同步机制

1.中断屏蔽方法

优点:简单、有效
缺点:关中断时间过长,会影响系统效率,不适用于多CPU系统

2.硬件指令方法(TS指令、Swap指令)

对于TS指令,对于每个临界资源添加了一个锁lock的布尔变量,每次访问临界资源被访问时,检查该锁lock的状态值即可
对于Swap指令,设置公共的布尔变量lock,还有私有的key变量,用这两个来实现进程互斥的循环过程
利用这些硬件指令,能够简单有效的实现进程互斥,并且支持进程内存在多个临界区,但不满足“让权等待”

你可能感兴趣的:(操作系统)