思维导图
引言
上图中,进程AB同时访问打印机资源,这样就可能将AB的打印内容混在一起了,所以我们需要通过进程互斥来对资源进行访问控制
1、单标志法
我们用一个例子来说明:
小渣问老渣,你现在想用马桶吗?老渣说我现在不想用。小渣说:那我用了,下次让你先用。到了下次,小渣说你先用马桶,我是有原则的人,老渣却说,我不想用。这样小渣就要一直等。这样马桶就空下来了。违反了空闲让进的原则。只能轮询使用。
2、双标志法
双标志先
来看这样一个问题:
小渣问老渣你想用马桶吗?小渣一直在等老渣的回复。老渣突然问小渣你想用马桶吗?此时小渣说我想用,老渣也说我想用,然后俩个人一起走向了一个马桶。所以这种情况违反了忙则等待的原则。
双标志后检查法
来看这样一个问题:
当小渣想用马桶时,老渣同样也想要用马桶;然后小渣问老渣你想用吗?想用那你可以先用我等着。然后老渣又问小渣:你想用吗?你想用你先用我等着。就这样,俩个人都在等着,谁也不用。对于机器而言,俩个进程都不敢访问临界区(因为对方想用),这样就会进入无限的等待。这样虽然解决了忙则等待的问题,但违反了空闲让进和有限等待的原则。进而产生饥饿现象。
3、Peterson算法
来看例子:
小渣对老渣说:我想用马桶但是我可以让你先用。
老渣对小渣说:我想用马桶但是我也可以让你先用。
小渣说:那我不客气了。