问题
单项选择题
若某航空公司的飞机订票系统有n个订票终端,系统为每个订票终端创建一个售票终端的进程。假设Pi(i=1,2,…,n)表示售票终端的进程,Hj(j=1,2,…,m)表示公共数据区,分别存放各个航班的现存票数,Temp为工作单元。系统初始化时将信号量S赋值为 (26) 。Pi进程的工作流程如图所示,a、b和c处将执行P操作和V操作,则图中a、b和c应填入 (27) 。
A.P(S)、V(S)和V(S)
B.P(S)、P(S)和V(S)
C.V(S)、P(S)和P(S)
D.V(S)、V(S)和P(S)
答案
参考答案:A
解析: 因为该航空公司的飞机订票系统有n个订票终端,多个客户可能在不同的终端同时订购某一航班的票,导致售票出错。例如,当某航班只剩下一张票时,有3个客户在3个不同的终端订购,则3个终端可能同时售出这张票。而这是不允许的,因此,必须要设置一个信号量S,用来表示某航班当前是否有客户在订票或待订票的人数。该信号量的初值为1,表示同时只能有一个客户订购某个航班的票。
当有客户在某个终端订购某航班的票时,首先要执行P(S)操作,使其他客户等待。当完成订票或票已售完时,再执行V(S)操作。