第 25 题
N 个进程共享 M 台打印机(其中 N>M),假设每台打印机为临界资源,必须独占使用,则打印机共享的互斥信号量的取值范围为( )。
A. -(N-1)~M B. -(N-M)~M C. -(N-M)~1 D. -(N-1)~1
[tag_link]
正确答案:B
互斥信号量用于控制对临界资源的访问,初始值通常设置为可用资源的数量。
本题中有 M 台打印机,因此信号量初始值为 M,表示最初有 M 台打印机空闲可用。
当进程申请使用打印机时执行 P 操作,信号量减 1; 当进程释放打印机时执行 V 操作,信号量加 1。 信号量的值代表当前可用打印机的数量,如果为负数,其绝对值表示等待使用打印机的进程数。
由于进程总数 N 大于打印机数 M,在最坏情况下,所有 M 台打印机都被占用,此时信号量为 0。 如果还有进程申请打印机,信号量将继续减小变为负值。 最多可能有 N-M 个进程同时等待(因为 M 个进程正在使用打印机,其余 N-M 个进程等待),因此信号量的最小值为-(N-M)。
信号量的最大值出现在没有进程使用打印机时,所有 M 台打印机均空闲,此时信号量为 M。
综上,信号量的取值范围是从最小值-(N-M) 到最大值 M,对应选项 B。 其他选项中,A 的等待进程数最多为 N-1,不符合实际; C 和 D 的最大值错误,应为 M 而非 1。