某工厂仓库有一名保管员,该仓库可存放n箱零件。该工厂生产车间有m名工人,只要仓库空闲,工人将生产好的整箱零件放入仓库,并由保管员登记入库数量。该工厂销售部有k名销售员,只要仓库库存数能满足客户要求,便可提货,并由保管员登记出库数量。规定工人和销售员不能同时

admin2010-01-23  36

问题 某工厂仓库有一名保管员,该仓库可存放n箱零件。该工厂生产车间有m名工人,只要仓库空闲,工人将生产好的整箱零件放入仓库,并由保管员登记入库数量。该工厂销售部有k名销售员,只要仓库库存数能满足客户要求,便可提货,并由保管员登记出库数量。规定工人和销售员不能同时进入仓库,但是工人和工人,销售员和销售员可以同时进入仓库,其工作流程如图1-1所示。

   为了利用PV操作正确地协调工人和销售员进程之间的工作,设置了信号量S1、S2和S3,它们的初值分别为n、0和1。图1-1中的a、b、e和f应分别填写(25);图1-1中的c、d、g和h应分别填写(26)。

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

答案D

解析 这是一道考查利用P、V操作实现进程间的同步和互斥工作的综合理解题。试题中已给出了P、V操作的基本规则。假设系统中P操作表示申请一个资源,当执行P操作时对信号量减1,若信号量S≥0,则执行P操作的进程继续执行,否则等待。系统中V操作表示释放一个资源,当执行V操作时对信号量加1,若信号量S>O,则执行V操作的进程继续执行;若信号量S≤0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续。
   由试题中关健信息“只要仓库空闲,工人将生产好的整箱零件放入仓库”可知,图1-1工人进程中“零件送仓库”之前需判断一下仓库中是否有空闲的位置。为此可设置信号量S1表示仓库空闲位置个数,初值为n。
   结合试题中关健信息“只要仓库库存数能满足客户要求,便可提货”可知,图1-1销售员进程中“在仓库提货”之前需判断一下仓库中是否有满足要求的货物。为此可设置信号量S2表示仓库中零件箱数,初值为0。
   由于保管员需要进行入库数量和出库数量登记工作,因此可设置信号量S3用于实现对保管员的互斥访问,初值为1。
   对于图1-1中工人进程,首先应执行P(S1),用于查看仓库中是否有空闲位置。若有空闲位置,则将零件送入仓库,然后执行V(S2),表明仓库中已有一箱零件,并通知销售员可以提货;若没有空闲位置,则进入等待状态。
   工人进程将零件送入仓库后,还需执行P(S3),用于查看保管员是否空闲。若空闲,则登记入库数,然后执行V(S3),使保管员处于空闲状态;若保管员正在忙碌(例如销售员进程已占用信号量S3),则进入等待状态。
   对于销售员进程,首先执行P(S2),用于查看仓库中是否有货物。若有货物,则让销售员提货,然后执行V(S1),表明已经提走了一箱零件,仓库中空闲出一个位置,并通知工人进程可以放置货物;若没有货物,则进入等待状态。
   销售员进程提货后,还需执行P(S3),用于查看保管员是否空闲。若空闲,则登记出库数,然后执行V(S3),使保管员处于空闲状态;若保管员正在忙碌(例如销售员工人进程已占用信号量S3),则进入等待状态。
   由以上分析可知,(25)空缺处的正确答案为选项B,(26)空缺处的正确答案为选项D。
转载请注明原文地址:https://kaotiyun.com/show/nvxZ777K
0

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