• 2022-06-09
    (8分)某银行提供1个服务窗口和10个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下:某银行提供1个服务窗口和10个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下:cobegin{process顾客i{从取号机获取一个号码;等待叫号;获取服务;}process营业员{while(TRUE){}}}coend叫号;为客户服务;请添加必要的信号量和P、V(或wait、signal)操作,实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。
  • semaphoreseets=10,//有10个坐位的资源信号量mutex=1,//取号机互斥信号量haveCustom=0;//顾客与营业员同步,无顾客时营业员休息.process顾客{P(seets);//等空位P(mutex);//申请使用取号机从取号机上取号;V(mutex);//取号完毕V(haveCustom);//通知营业员有新顾客到来等待营业员叫号;V(seets);//离开坐位接受服务;}process营业员{while(True){P(haveCustom);//没有顾客则休息叫号;为顾客服务;}}

    举一反三

    内容

    • 0

      某银行提供1个服务窗口和10个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。以下是利用PV操作描述顾客和营业员协同工作的活动过程,其中信号量mut是管理取号机的互斥信号量; seatsNum表示空余座位数量; custNum表示顾客数量。对信号量初始化操作如下:Semaphore custNum = 0;Semaphore seatsNum =( 2 ) A: 1 B: 0 C: 10 D: 9

    • 1

      某银行提供1个服务窗口和10个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。以下是利用PV操作描述顾客和营业员协同工作的活动过程,其中信号量mut是管理取号机的互斥信号量; seatsNum表示空余座位数量; custNum表示顾客数量。请选择相应位置上信号量的P、V操作。Process 营业员{ while(true){…… //判断是否有等待的顾客叫号; (8) ;;为顾客服务;}} A: P(seatsNum) B: P(custNum) C: V (mut) D: V(seatsNum)

    • 2

      某银行提供1个服务窗口和10个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。以下是利用PV操作描述顾客和营业员协同工作的活动过程,其中信号量mut是管理取号机的互斥信号量; seatsNum表示空余座位数量; custNum表示顾客数量。请选择相应位置上信号量的P、V操作。Process 营业员{ while(true){ (7) ; //判断是否有等待的顾客叫号;……;为顾客服务;}} A: P(seatsNum) B: P(custNum) C: V(custNum) D: V(seatsNum)

    • 3

      某银行通过1个服务窗口和10个顾客等待座位。顾客到达银行时,若有座位,则到取号机领取一个号,等待叫号。取号机每次仅允许一个顾客取号。当营业员空闲时,通过叫号选取一位顾客并为其服务。假定用seets表示空余座位数量的资源信号量,用custom表示顾客数量的资源信号量,用mutex作为互斥信号量。试用wait(),signal()操作实现上述过程的互斥和同步,要求写出完整的过程,并给信号量赋初值。SemahporeSeets,mutex,Custom;

    • 4

      某银行提供若干服务窗口可办理业务,提供10个可用于顾客等待的座位。顾客到达银行时,若有空座位,则到取号机领取一个号,等待叫号。取号机每次仅允许一个顾客使用。当窗口有空时,系统通过叫号选取一位顾客,并为其服务。假设顾客取号后等待窗口服务的优先级相同,即取号仅代表获得服务的资格,不代表获得服务的先后顺序,也就是顾客进程可并发执行,请用P、V原语(wait和signal操作)实现上述过程的互斥和同步。要求写出完整的过程,说明各信号量的含义并赋初值。void main(){ cobegin pmach1(); pmach2(); pmach3(); ... //服务窗口进程 pcus1(); pcus2(); pcus3(); ... //顾客进程 coend}