首页 > 试题广场 >

使用TSL(TestandSetLock)指令实现进程互斥的

[单选题]
使用 TSL(Test and Set Lock)指令实现进程互斥的伪代码如下所示。


下列与该实现机制相关的叙述中,正确的是

  • 退出临界区的进程负责唤醒阻塞态进程
  • 等待进入临界区的进程不会主动放弃 CPU
  • 上述伪代码满足“让权等待”的同步准则
  • while(TSL(&lock))语句应在关中断状态下执行

2016 年联考真题。以下解释来自王道。

当进程无法进程临界区(critical section)时:

  1. 如果使用信号量机制,进程被阻塞。
  2. 如果使用上述代码,进程会一直执行 while 检查,要么是处于运行态(while 检查),要么是处于就绪态(被其他进程抢占 CPU)。

A 答案错误,因为上面的第 2 条,进程不会进入阻塞态,只能是就绪态或运行态。

B 答案正确,题目给出的代码的进程,在无法进入临界区时,只会处于运行态(执行 while 检查)或就绪态(被其他高优先级进程抢占 CPU,而不是主动放弃),被动放弃 CPU.

C 答案错误,“让权等待” 指程序无法进入临界区时,进程就应该主动放弃 CPU,显示上述代码达不到这一效果,答案 B 也给出了原因。

关中断后,进程不会被中断,所以不会引发进程切换,该代码对应的进程可能一直死循环,一直占用 CPU 资源,后果严重。

发表于 2022-07-13 09:30:38 回复(0)