若某航空公司的飞机订票系统有n个订票终端,系统为每个订票终端创建一个售票终端的进程。假设 Pi(i=1,2,…,n)表示售票终端的进程,Hj(j=1,2,…,m)表示公共数据区,分别存放各个航班的现存票数,Temp为工作单元。Pi进程的工作流程如图6-3所

admin2010-01-29  53

问题 若某航空公司的飞机订票系统有n个订票终端,系统为每个订票终端创建一个售票终端的进程。假设 Pi(i=1,2,…,n)表示售票终端的进程,Hj(j=1,2,…,m)表示公共数据区,分别存放各个航班的现存票数,Temp为工作单元。Pi进程的工作流程如图6-3所示,a、b和c处将执行P操作和V操作,则图6-3中a、b和c处应分别填入(11)。

选项 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

解析 这是一道考查利用P、V操作实现进程间的同步和互斥工作的综合理解题。由于“系统为每个订票终端创建一个售票终端的进程”,“Hj(j=1,2,…,m)表示公共数据区,分别存放各个航班的现存票数”,可见公共数据区厅/是一个临界资源,最多允许一个终端进程使用,因此需要设置一个互斥信号量S,初值为1。售票终端进程Pi先按照定票要求找到对应的公共数据区Hj,接着执行P(S)操作,用于检查是否有其他的售票终端进程正在使用公共数据区Hj。若有,即执行该操作前S值等于0,则本售票终端进程进入等待状态。若没有,即执行该操作前S值等于1,则将S值减1后将公共数据区Hj值复制给工作单元Temp。若Temp值大等于1,即表示该公共数据区Hj中相应航班有剩余票数,则将Temp值减1后复制给相应的公共数据区Hj,然后执行V(S)操作,表明该售票终端进程交出公共数据区Hj的使用权,并唤醒其他进入等待状态的售票终端进程。最后售票终端进程输出一张相应航班的飞机票。若Temp值小于1,即表示该公共数据区Hj中已没有相应航班的飞机票,则该售票终端进程执行V(S)操作,交出公共数据区Hj的使用权,并唤醒其他进入等待状态的售票终端进程。最后售票终端进程输出“票已售完”的提示信息。因此,(21)空缺处的正确答案为选项A。
转载请注明原文地址:https://kaotiyun.com/show/0hQZ777K
0

最新回复(0)