查看更多
当前 - 选择题 - 信号量
中等
单选题
2012年5月第34题
#第二版教材
#必须掌握

假设某系统采用非抢占式优先级调度算法,若该系统有两个优先级相同的进程P1和P2,各进程的程序段如下所示,若信号量S1和S2的初值都为0。进程P1和P2并发执行后a、b和c的结果分别为:a= (问题1) ,b= (问题2) ,c= (问题3)

浓缩知识点

非抢占式优先级调度中,同优先级进程获取CPU后会持续运行,直到主动阻塞(如执行P操作等待不可用信号量)或运行结束,不会被抢占。信号量的P操作为申请同步许可,无可用许可时进程会进入阻塞状态;V操作为释放同步许可,并唤醒等待该信号量的阻塞进程。在多进程并发同步场景中,需依据P、V操作确定进程的调度切换时机,梳理执行时序,以此推导共享变量的最终结果。这类场景要注意信号量初值对执行流程的约束,合理设置信号量可协调进程执行顺序,避免共享资源的竞态问题,保障并发执行的正确性。

正确答案
D

本题考察的是信号量同步与非抢占式优先级调度在并发程序中的综合应用。
非抢占式下,进程占有 CPU 将一直运行,直至主动阻塞(如执行 P 操作而等待)或结束。
S1、S2 初值均为 0,P 为等待(不可用则阻塞),V 为释放/唤醒。

根据题意取常见调度路径:P1 先运行,直到在 P(S2) 处阻塞,切换到 P2,P2 运行完后再回到 P1 收尾。
P1:a:=1 → a:=a+2=3 → V(S1)(S1=1)→ c:=a+1=4 → P(S2)(S2=0,P1阻塞)。
P2:b:=1 → b:=b+2=3 → P(S1)(取走S1=1→0,不阻塞)→ b:=a+b=3+3=6 → V(S2)(唤醒P1) → c:=b+c=6+4=10,P2结束。
P1被唤醒继续:a:=a+c=3+10=13,P1结束。
由此得到:a=13,b=6,c=10

联系我们
隐私协议
用户协议
微信公众号
知乎
小红书
浙ICP备2021029036号
@2022-2026
嘉兴市安芯网络科技有限公司 版权所有