使用标志进行流程同步

时间:2018-10-04 14:30:24

标签: process process-management semaphore

我正在通过在线课程学习操作系统,并且遇到了一些用于流程同步的软件解决方案。老师正在解释所有软件解决方案,从使用单个turn变量到Peterson的解决方案开始。

我对最基本的方法有疑问。为了清楚起见,请参考课程视频中随附的屏幕截图。该方法是在有两个进程的情况下使用单个turn变量,并根据要访问关键部分的进程依次存储1或2。这种方法可以保证互斥,但不能满足进度要求,因为如果turn最初为1,并且P2首先要进入临界区,那么即使P1不在临界区中,它也会在while循环中被简单地阻塞。部分。我的想法是将turn设为-1,然后继续。没有其他进程会被阻止。

我已经检查了多个在线课程,但是没有人在讨论这一简单的更改,而是继续使用诸如Petersons算法或信号灯之类的高级解决方案。我在想对吗?我的方法正确吗?enter image description here

1 个答案:

答案 0 :(得分:1)

您在此处描述的内容称为“严格交替”。您提出的修改算法的建议是,使turn最初为-1无效。在您的示例中,如果turn不等于2,则进程1将不会阻塞。如果turn不等于1,则进程2将不会阻塞。最初,如果turn-1,则进程1和进程2均不会阻塞。结果,两者可以同时执行其关键部分。您不再具有互斥属性。