某书店有一个收银员,该书店最多允许n个购书者进入。将收银员和购书者看做不同的进程,其工作流程如图5-3所示。利用PV操作实现该过程,设置信号量S1、S2和Sn,初值分别为0、0和n。则图5-3中a1、a2、b1和b2应分别填入(26)。

admin2009-02-15  42

问题 某书店有一个收银员,该书店最多允许n个购书者进入。将收银员和购书者看做不同的进程,其工作流程如图5-3所示。利用PV操作实现该过程,设置信号量S1、S2和Sn,初值分别为0、0和n。则图5-3中a1、a2、b1和b2应分别填入(26)。

选项 A、P(S1)、V(S2)、P(Sn)、V(S2)
B、P(S2)、V(S)、V(Sn)、P(S2)
C、V(S1)、P(S2)、P(S1)、V(S2)
D、V(Sn)、P(Sn)、P(S2)、V(S1)

答案C

解析 这是一道考查利用P、V操作实现进程间的同步工作的综合分析题。对于本试题,收银员进程和购书者进程之间是一个同步问题,需要设置两个同步信号量,即S1和S2。其中,信号量S1表示购书者购书时,通知收银员进程进行收费工作,初值为0。信号量S2表示收银员收费结束,通知购书者进程可以进行下一步工作,初值为0。由于该书店最多只允许n个购书者进入,因此书店是一个临界资源,最多允许n个购书者购书,对应的是设置一个互斥信号量Sn,初值等于n。当购书者进入书店时需要执行P(Sn)操作,用于查看书店是否有空闲位置允许其进入购书。若有空闲位置,则进入书店进行购书;若没有空闲位置,则进入等待状态。当购书者完成购书操作退出书店时,需要执行V(Sn)操作,表明书店中已有一个空闲位置,并唤醒其他进入等待状态的购书者进程。购书者进程中,完成购书操作后先执行V(S1)操作表示购书结束,唤醒收银员进程做收费工作。然后执行P(S2),用于查看该购书者是否已交费,若已交费,则继续进行一步工作,即执行V(Sn);若未交费,则进入等待状态。对于收银员进程,先执行P(S1)操作,用于检查是否有准备交费的购书者申请。若有,则进行执行下一步工作,即进行收费操作;若没有准备交费的购书者申请,则进入等待状态。当完成收费任务后,需继续执行V(S2)操作,用于通知购书者进程可以进行下一步工作。由以上分析可知,(26)空缺处的正确答案为选项C。
转载请注明原文地址:https://jikaoti.com/ti/EKW7FFFM
0

相关试题推荐
最新回复(0)