第 27 题
使用 TSL (Test and Set Lock) 指令实现进程互斥的伪代码如下所示。
do {
...
while (TSL(&lock));
critical section;
lock = FALSE;
...
} while (TRUE);
下列与该实现机制相关的叙述中,正确的是( )。
A. 退出临界区的进程负责唤醒阻塞态进程
B. 等待进入临界区的进程不会主动放弃 CPU
C. 上述伪代码满足“让权等待”的同步准则
D. while (TSL(&lock)) 应在关中断状态下执行
[tag_link]
正确答案:B
本题考察 硬件互斥 ,当进程退出临界区时置 lock 为 FALSE,会负责唤醒处于就绪状态的进程,A 错误。若等待进入临界区的进程会一直停留在执行while(TSL(&lock))的循环中,不会主动放弃 CPU, B 正确。让权等待,即当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。通过 B 选项的分析中发现上述伪代码并不满足“让权等待”的同步准则,C 错误。若while(TSL(&lock))在关中断状态下执行,当TSL(&lock)一直为 true 时,不再开中断,则系统可能会因此终止,D 错误。