若某航空公司的飞机订票系统有n个订票终端,系统为每个订票终端创建一个售票终端的进

资格题库2022-08-02  42

问题 若某航空公司的飞机订票系统有n个订票终端,系统为每个订票终端创建一个售票终端的进程。假设Pi(i=1,2,…,n)表示售票终端的进程,Hj(j=1,2,…,m)表示公共数据区,分别存放各个航班的现存票数,Temp为工作单元。PJ进程的工作流程如图所示,a、b和c处将执行P操作和V操作,则图中a、b和c应填入 ( ) 。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(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)表示公共数据区,分别存放各个航班的现存票数",可见公共数据区Hj是一个临界资源,最多允许一个终端进程使用,因此需要设置一个互斥信号量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的使用权,并唤醒其他进入等待状态的售票终端进程。最后售票终端进程输出"票已售完"的提示信息。
转载请注明原文地址:https://tihaiku.com/congyezige/2425739.html

最新回复(0)