考虑以下两步同步解决方案。
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初始化为零。以下哪一项是TRUE?
(A)这是正确的两进程同步解决方案。
(B)此解决方案违反了互斥要求。
(C)此解决方案违反了进度要求。
(D)此解决方案违反了有条件的等待要求。答案: (C)
说明:互斥要求阻止同时访问共享资源。因为,信号量转向被初始化为零,并且该信号量值仅在给定进程的关键部分之后才更改。因此,这确保一次在关键部分最多处理一个流程,即满足互斥要求。
进步意味着这个过程最终应该能够完成。但是直接处理1不能进入临界区,因为信号量初始值为0,并且此处理1仅在处理0之后才可以进入CS。因此,无法满足进度要求。
有界的等待意味着没有进程可以无限期地等待资源。流程1可以直接进行,而流程1可以在流程0之后进入关键部分。因此,有限的等待得到满足。
选项(C)是正确的。
这个问题的测验