首先是A选项退出临界区的进程负责唤醒阻塞态进程,错的原因是,TSL不满足让权等待原则,即当进程不能进入临界区时,不立即释放处理器,反而会一直在while循环里运行,此时如果退出临界区,将会使另一个同步运行的进程跳出while循环进入操作,此时这个进程处于就绪态。所以B对,因为while循环不会结束,所以进程不会主动放弃CPU。所以C错。最后是D,虽然TSL指令要在关中断状态下执行,但是最后一个选项给的是while(TSL&lock)所以如果循环一直运行,将不会开中断,如果换成是while括号里面的就对了。
这里讲一下让权等待的原理,对于记录型信号量,除了整型的信号量外还有一个链表,作为阻塞队列,所以,当用记录型信号量时,可以满足让权等待的原则,此时,阻塞的进程会进入阻塞态。这里要与整型信号量进行区分,当只用整型信号量时,while循环不会结束。包括用软件和硬件实现的互斥,都不满足让权等待的原则