操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)

思维导图

操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)

引言

操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)

上图中,进程AB同时访问打印机资源,这样就可能将AB的打印内容混在一起了,所以我们需要通过进程互斥来对资源进行访问控制

1、单标志法

操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)

我们用一个例子来说明:
小渣问老渣,你现在想用马桶吗?老渣说我现在不想用。小渣说:那我用了,下次让你先用。到了下次,小渣说你先用马桶,我是有原则的人,老渣却说,我不想用。这样小渣就要一直等。这样马桶就空下来了。违反了空闲让进的原则。只能轮询使用

2、双标志法

双标志先

操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)

来看这样一个问题:
小渣问老渣你想用马桶吗?小渣一直在等老渣的回复。老渣突然问小渣你想用马桶吗?此时小渣说我想用,老渣也说我想用,然后俩个人一起走向了一个马桶。所以这种情况违反了忙则等待的原则。

双标志后检查法

操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)

来看这样一个问题:
当小渣想用马桶时,老渣同样也想要用马桶;然后小渣问老渣你想用吗?想用那你可以先用我等着。然后老渣又问小渣:你想用吗?你想用你先用我等着。就这样,俩个人都在等着,谁也不用。对于机器而言,俩个进程都不敢访问临界区(因为对方想用),这样就会进入无限的等待。这样虽然解决了忙则等待的问题,但违反了空闲让进有限等待的原则。进而产生饥饿现象。

3、Peterson算法

操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)
操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)

来看例子:
小渣对老渣说:我想用马桶但是我可以让你先用。
老渣对小渣说:我想用马桶但是我也可以让你先用。
小渣说:那我不客气了。