首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
某银行的营业厅有多个柜员窗口,可以同时办理业务。银行的营业厅中安排有n张座椅供储户休息等候。每个储户在进入营业厅时会在排队机上取得一个号码,若此前没有客户,则排队机就会唤醒一个柜员为储户服务,当没有储户时柜员便可以休息。若储户较多,则所有柜员均会参与服务,
某银行的营业厅有多个柜员窗口,可以同时办理业务。银行的营业厅中安排有n张座椅供储户休息等候。每个储户在进入营业厅时会在排队机上取得一个号码,若此前没有客户,则排队机就会唤醒一个柜员为储户服务,当没有储户时柜员便可以休息。若储户较多,则所有柜员均会参与服务,
admin
2013-12-31
49
问题
某银行的营业厅有多个柜员窗口,可以同时办理业务。银行的营业厅中安排有n张座椅供储户休息等候。每个储户在进入营业厅时会在排队机上取得一个号码,若此前没有客户,则排队机就会唤醒一个柜员为储户服务,当没有储户时柜员便可以休息。若储户较多,则所有柜员均会参与服务,当排队储户数超过柜员数时,没有被服务的储户便会在座椅上休息,并等候叫号。当座位满时,再进入营业厅的储户不再从排队机上获取号码,会离开去找另外的营业厅。若将银行的柜员和储户的行为看成是不同类型的进程,请设计一个程序,利用信号量来完成上述操作,用C语言写出程序。
选项
答案
设信号量teller,customer和mutex,其中waiting是整型量,表示排队的储户数,其初始为0,最大不超过n。 #define CHAIRS=n //座椅数,也是最多排队的储户数 typedef int semaphore //定义信号量 semaphore teller:0; //等待储户的柜员数 semaphore customer=0; //等待服务的储户数 semaphore mutex=0; //对排队机操作的互斥量 int waiting=0; //等待的储户数 void teller() { while(TRUE) //并发调度 { P(customer); //查看有无储户 P(mutex); //需要获得排队机的控制权 waiting=waiting-1; //将等候的顾客数减1 V(teller); //提供1个可服务的柜员 V(mutex); //释放排队机 service(); //为储户服务 } } void customer() //储户进程 { P(mutex); //先获得排队机 if(waiting<CHAIRS) //若还有座椅则取号 { waiting=waiting+1; //取号,占用座椅等待叫号 V(customer); //告知系统储户加1 V(mutex); //释放排队机 P(teller); //看是否有柜员空闲 serviced(); //进入窗口被服务 } else //若没有座椅了,则不取号 { V(mutex); //不取号,释放排队机 } } //离开
解析
转载请注明原文地址:https://jikaoti.com/ti/l9ajFFFM
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
所罗门死后不久,以色列犹太王国遂分裂为北方的以色列王国和南方的犹太王国。后来,两国分别为哪两个国家所灭?()
洪秀全以宗教手段组织起义,主要利用的是()。
苏俄实施新经济政策的根本目的是()。
巴拉圭战争中的交战双方是()。
以下选项不属于希腊城邦的形成方式和途径的是()。
美国工业革命的有利条件包括()。①美国自然资源丰富②独立战争后,美国创立了资产阶级共和制度③地理位置优越,远离动乱的欧洲④拥有潜在的广阔的国内市场
某系统中n个相互独立的生产者进程为一个消费者进程提供数据,假设每个生产者提供的数据写入各不相同的缓冲区,且生产者写缓冲区的速度比消费者读缓冲区的速度快,则缓冲区个数的最优值应为()。
假设某计算机的存储系统由Cache和主存组成j某程序执行过程中访存1000次,其中访问Cache缺失(未命中)50次,则Cache的命中率是()。
一个由高速缓冲存储器Cache与主存储器组成的二级存储系统。已知主存容量为1MB,按字节编址,缓存容量为32KB,采用组相联方式进行地址映射与变换,主存与缓存的每一块为64B,缓存共分8组。(1)写出主存与缓存的地址格式(标明各字段名称与位数)
随机试题
重度精神发育迟滞者其成年后相当智龄为
新生儿护理的重点是
()的经济业务会引起资产总额发生变化。
当前国际发展援助的援助格局变为以日本、西欧和美国为主要援助国的世界双边发展援助的新体系。()
对于有下列()情形之一的具体行政行为,人民法院可作出撤销判决。
甲、乙和丙共同投资一个项目并约定按投资额分配收益。甲初期投资额占初期总投资额的1/3,乙的初期投资额是丙的2倍。最终甲获得的收益比丙多2万元。则乙应得的收益为多少万元?()
简述罗马早期共和时代贫民反对贵族的斗争。
建立一个学生信息表student,要求它由学号sno,姓名sname,性别sex,年龄age,4个属性组成,其学号属性惟一,学号、姓名字段不能为空。下列语句正确的是
对二进制数进行算术右移的运算符是【】。
Readthefollowingpassageanddecidewhichanswerbestfitseachspace.Forquestions26-45,markoneletterA,B,CorDo
最新回复
(
0
)