在某超市里有一个收银员,且同时最多允许有n个顾客购物,我们可以将顾客和收银员看成是两类不同的进程,且工作流程如图5-4所示。为了利用P-V操作正确地协调这两类进程之间的工作,设置了三个信号量S1、S2和Sn,且初值分别为0,0和n。这样图中的口应填写(46

admin2019-03-04  43

问题 在某超市里有一个收银员,且同时最多允许有n个顾客购物,我们可以将顾客和收银员看成是两类不同的进程,且工作流程如图5-4所示。为了利用P-V操作正确地协调这两类进程之间的工作,设置了三个信号量S1、S2和Sn,且初值分别为0,0和n。这样图中的口应填写(46),图中的b1,b2应分别填写(47),图中的c1,c2应分别填写(48)。


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

答案A

解析 操作系统的重要功能是解决进程间的同步与互斥问题。解决的办法主要有加锁法、信号量机制、管程机制等。信号量是由一个整型变量和一个等待队列构成的,对这个整型变量除了做初始化之外,只能实施P-V操作,即P操作和V操作。P-V操作是原子操作,不可分割使用,必须成对出现,属于低级的进程通信原语。采用P-V操作实现进程同步的步骤是首先为各并发进程设置私用信号量,然后为私用信号量赋初值,最后利用P-V原语和私用信号量规定各进程的执行顺序。采用P-V操作实现进程互斥的步骤是首先为临界资源设置公用信号量,然后为公用信号量赋初值,最后利用P-V原语和公用信号量实现并发进程的互斥使用临界资源。在本题中,收银员进程和顾客付款进程类似于生产者和消费者进程,顾客要想付款必须判断收银员是否忙,忙则等待,不忙则付款。因此,对应的收银员进程和顾客付款进程私用信号量分别是S1和S2,由于开始时没有顾客去付款,收银员也没有收费,所以S1和S2的初值为0。这里的公用临界资源是允许进入的(可容纳的)顾客人数n,如果有n+1个顾客想购物,那么第n+1个顾客就得等待,直到有人购物完毕出来方能进去,所以临界资源的信号量为Sn=n。顾客进入超市时,允许进入的顾客人数减1,执行P(Sn),购物完毕准备付款时,通知收银员进程有顾客付款,执行V(S1),此时收银员进程执行P(S1)操作后就可进入收费,收费完成后收银员进程执行V(S2),以通知顾客收费完毕,此时顾客执行P(S2)就可离开收银台,在离开超市时需执行V(Sn),释放资源。
转载请注明原文地址:https://jikaoti.com/ti/oKx7FFFM
0

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