题目
有三个进程共享同一程序段,而每次只允许两个进程进入该程序段,若用PV操作同步机制,则信号量S的取值范围是( )。A. 2,1,0,-1B. 3,2,1,0C. 2,1,0,-1,-2D. 1,0,-1,-2
有三个进程共享同一程序段,而每次只允许两个进程进入该程序段,若用PV操作同步机制,则信号量S的取值范围是( )。
A. 2,1,0,-1
B. 3,2,1,0
C. 2,1,0,-1,-2
D. 1,0,-1,-2
题目解答
答案
A. 2,1,0,-1
解析
考查要点:本题主要考查PV操作在进程同步中的应用,特别是信号量的取值范围分析。
解题核心思路:
- 信号量初始值:允许同时进入的进程数(本题为2)。
- PV操作规则:
- P(S):请求资源,若信号量>0则减1;否则进程等待。
- V(S):释放资源,信号量加1,可能唤醒等待进程。
- 关键点:通过分析进程进入和退出时信号量的变化,确定其可能取值范围。
破题关键:
- 初始信号量为2(允许最多两个进程进入)。
- 第三个进程进入时信号量减至-1,后续释放资源时信号量逐步恢复。
信号量变化过程分析
- 初始状态:信号量 $S=2$(允许两个进程进入)。
- 进程进入逻辑:
- 第一个进程:执行 $P(S)$,$S=2-1=1$。
- 第二个进程:执行 $P(S)$,$S=1-1=0$。
- 第三个进程:尝试 $P(S)$,此时 $S=0-1=-1$,进程阻塞。
- 进程退出逻辑:
- 第一个进程退出:执行 $V(S)$,$S=-1+1=0$,唤醒一个阻塞进程(第三个进程)。
- 第三个进程恢复:继续执行 $P(S)$,此时 $S=0-1=-1$(需重新阻塞)。
- 第二个进程退出:执行 $V(S)$,$S=-1+1=0$,唤醒第三个进程。
信号量取值范围
- 可能取值:$2 \rightarrow 1 \rightarrow 0 \rightarrow -1$。
- 排除其他选项:
- 选项C包含$-2$,但最多仅一个进程阻塞时信号量为$-1$,不会出现$-2$。
- 选项D初始值为$1$,无法满足“最多两个进程进入”的要求。