有一个大超市(意味着进入超市挑选、购物的人数不限),只有两个收银台。顾客挑选货物后,可以根据在收银台前排队交款的人数多少选择在哪一个收银台前排队。为保证正确的次序,需要设立(24)。

admin2009-02-15  40

问题 有一个大超市(意味着进入超市挑选、购物的人数不限),只有两个收银台。顾客挑选货物后,可以根据在收银台前排队交款的人数多少选择在哪一个收银台前排队。为保证正确的次序,需要设立(24)。

选项 A、两个信号量,初值分别为1,0
B、两个信号量,初值均为1
C、3个信号量,初值分别为1,1,0
D、3个信号量,初值均为1

答案D

解析 本题考查信号量机制的实现技术以及核心中数据结构的保护与访问所涉及的问题。
   本题的难点在于顾客需要了解在收银柜台前排队等待交款的人数,以决定自己在哪个柜台前排队。由于收银柜台一次只能为一个顾客服务,后面的顾客必须排队,自然,每个收银柜台应该设立一个信号量,初值均为1。令信号量S1、S2分别对应收银柜台T1、T2,在信号量S1、S2相应队列中等待的进程数目自然就是在柜台T1、T2前等待交款的人数。但是,信号量是操作系统核心设立并管理的数据结构,其访问操作只能由核心程序进行,进程是无法进行访问的。为了使顾客能够了解在收银柜台前排队的顾客人数,必须用程序实现。在程序中设两个整型变量m1、m2,分别记录到收银柜台T1、T2去交款的人数。顾客挑选完商品后,首先比较m1、m2的大小,确定去哪个(人数较少的)收银柜台交款。如去T1,去的时候m1加1,交完款离开时m1减1;如去T2,去的时候m2加1,交完款离开时m2减1。显然m1、m2是顾客的共享变量,对它们进行访问时必须互斥,所以应该设置1个信号量S3加以管理,S3的初值为1。
   这道题的难点是如何使得进程可以掌握某个信号量的数值,但又不能直接对信号量进行访问。其实,信号量的值是有物理意义的。当信号量S的值为正时,表示还有S个进程可以通过P(S)操作而不致被挂起等待;当信号量的值为负时,表示有-S个进程在它相应的队列上等待。掌握信号量的数值,就可以对某些需要定量比较才可以确定同步方式的问题进行处理。
   顾客在超市的流程如下。
转载请注明原文地址:https://kaotiyun.com/show/mVxZ777K
0

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