前言
大纲:
正文
原则:
单标志法
缺点:
trun 表示当前允许进入临界区的进程号,而只有当前允许进入临界区的进程在访问临界区后,才能修改turn的值。
两个进程如果相互等待,那么会形成一个轮流访问的过程。那么会产生一个问题,那就是资源空闲的时候,按理说p1应该是可以执行的,
但是由于p0还没有执行,那么p1就无法执行。
单标志发存在的主要问题是违背空闲让进的原则。
双标志先检查法
缺点:
因为进程的异步性,两个进程同时可能检查到另一个进程都没有想要临界区,那么这个时候两个进程依然会同时异步运行。
这个不仅仅是在多核中,单核中依然存在。比如说当p0运行完while(flag[1])后,进程切换了,切换到p1,p1检查while(flag[0]),依然可以进入临界区。
双标志后检查法
依然存在缺陷,双标志先检查法可能两个都进入,双标志后检查法两个都不能进入。。。。。
违背了空闲让进,有限等待问题。
peterson 算法
缺点:违背让权等待问题。