首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
面包店有3 个售货员,每个顾客进店后先获得一个号码,等待叫到
[问答题]
面包店有3 个售货员,每个顾客进店后先获得一个号码,等待叫到自己的号码时才能购
买面包,售货员空闲时就叫下一个号码,如果没有顾客则休息片刻之后再看是否有顾客取了号码,
无需顾客唤醒售货员。(1)系统中最少有多少个进程?(2)请设计一个同步算法。
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(0)
分享
纠错
1个回答
添加回答
0
蜡蜡
(1)该问题中每个售货员都是一个进程,每个顾客也是一个进程,当没有顾客的时候,系统中的进
程数量最少,有3 个售货员进程。(1 分)
(2)该问题中的临界资源是当前取到的号码get 和当前叫到的号码call。多个售货员都要访问叫的
号码,所以要互斥;顾客取号码必须互斥。
int get=0, call=0;
semaphore mutex_get=1, mutex_call=1; //信号量和临界资源(2 分)
Seller(){
while(1){
wait(mutex_call);
if(call<get){
叫号码call;
call++;
signal(mutex_call);
销售面包;
} else {
signal(mutex_call);
休息片刻; //一段时间的延迟,无需顾客唤醒。
}
}
}//售货员进程(3 分)
Customer(){
进入面包店;
wait(mutex_get);
取号码;
get++;
signal(mutex_call);
等待叫号购买面包;
} //顾客进程(2 分)
发表于 2017-05-16 20:59:00
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
操作系统
上传者:
蜡蜡
难度:
1条回答
0收藏
661浏览
热门推荐
相关试题
请编写实现malloc()内存分配...
微软
C++
操作系统
评论
(3)
有两个N*N的矩阵A和B,想要在P...
阿里巴巴
操作系统
评论
(38)
来自
2025年春招-中国电信...
给定A B C D E出现的频率是...
树
2016
楚楚街
评论
(1)
来自
楚楚街2016非北京地区...
android中Activity在...
360集团
Android
安卓工程师
测试工程师
2019
评论
(1)
来自
360公司-2019校招...
关于抢占式调度器和时间片调度器的说...
FreeRTOS
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题