假设系统中有 4 台打印机,某些进程用信号量 S 实现对打印机的互斥使用。又假设,系统中申请打印机的进程数量最多为 20 个,下列信号量 S 的数值范围中,哪一个是正确的
[4, -16]
[1, -20]
[4, -20]
[1, -16]
答案
[4, -16]
解析
有几台,第一个数就是几,
最多数量-已由的数量,转为负数,为第二个数
为了确定信号量 S 的数值范围,我们需要考虑以下几个因素:
初始值:信号量 S 的初始值应该等于系统中可用打印机的数量,即 4。
最大等待进程数:系统中申请打印机的进程数量最多为 20 个。
信号量的最小值:当所有打印机都被占用,并且所有进程都在等待时,信号量的值最小。此时,信号量的值等于 -(等待进程数 - 可用打印机数)。
根据以上分析,我们可以得出信号量 S 的数值范围:
初始值为 4。
最小值为 -(20 - 4)= -16。
因此,信号量 S 的数值范围应该是**[4, -16]**。
选项 A:[4, -16] 符合上述分析。
选项 B:[1, -20] 不符合上述分析,因为初始值应该是 4,而不是 1。
选项 C:[4, -20] 不符合上述分析,因为最大等待进程数是 20,而不是 20 - 4 = 16。
选项 D:[1, -16] 不符合上述分析,因为初始值应该是 4,而不是 1。
综上所述,正确答案是选项 A:[4, -16]。