考虑以下两进程同步解决方案。
Process 0 Process 1
Entry: loop while (turn == 1); Entry: loop while (turn == 0);
(critical section) (critical section)
Exit: turn = 1; Exit turn = 0;
共享变量 turn 被初始化为零。以下哪一项是正确的?
(A)这是一个正确的两进程同步解决方案。
(B)该解决方案违反了互斥要求。
(C)该解决方案违反了进度要求。
(D)此解决方案违反了有界等待要求。答案: (C)
说明:互斥要求阻止对共享资源的同时访问。因为,信号量转向被初始化为零,并且该信号量值仅在给定进程的临界区之后改变。因此,这保证了临界区中一次最多有一个进程,即满足互斥要求。
进度意味着流程最终应该能够完成。但直接过程信号灯值为0最初这个过程1只能处理0,所以,进步的要求不被满足后去CS 1不能去的关键部分。
有界等待意味着任何进程都不应无限期地等待资源。进程 1 可以直接进入,进程 1 可以在进程 0 之后进入临界区。所以,有界等待是满足的。
选项(C)是正确的。
这个问题的测验