第 25 题
对计型信号量 S 执行 V 操作后,下列选项中错误的是( )。 Ⅰ. 当 S.value≤0 时,唤醒一个阻塞队列进程 Ⅱ. 只有当 S.value<0 时,唤醒一个阻塞队列进程 Ⅲ. 当 S.value<=0 时,唤醒一个就绪队列进程;当 S.value>0 时,系统不做额外操作
A. Ⅰ、Ⅲ B. Ⅰ、Ⅳ C. Ⅰ、Ⅱ、Ⅲ D. Ⅱ、Ⅲ
[tag_link]
正确答案:D
在计型信号量的V操作中,首先将S.value加1,然后判断S.value的值。
若S.value小于等于0,说明之前有进程因资源不足而阻塞,此时应从阻塞队列中唤醒一个进程,并将其移至就绪队列; 若S.value大于0,则无需进行唤醒操作。
对于选项Ⅰ:当S.value≤0时,确实需要唤醒一个阻塞队列进程,因此该选项正确。 对于选项Ⅱ:它强调“只有”当S.value<0时才唤醒,但标准V操作在S.value=0时同样会唤醒进程(因为加1前S.value为-1,表示有进程阻塞),因此该选项错误。 对于选项Ⅲ:V操作唤醒的是阻塞队列中的进程,而非就绪队列中的进程。 就绪队列中的进程已处于就绪状态,无需唤醒,因此该选项错误。
综上,错误的选项是Ⅱ和Ⅲ,对应答案D。