【操作系统】-同步互斥-【2011真题】-某银行提供一个服务窗口...
同步关系:有座位才能取号;营业员空闲才能叫号;有顾客时才能叫号互斥关系:取号机互斥访问【解题步骤】1.草稿上进行进程行为轨迹,多留空位2.一步一步往下走,要等待的地方就p一下3.pv操作成对出现,根据p写完v4.x先确定pv操作的位置,再思考设置什么样的信号量,信号量的含义是什么?【坑点】serve=0;是因为,serve代表的是营业员叫号,所以对于初始情况下,如果serve=1,顾客进程不需要叫
·
同步关系:有座位才能取号;营业员空闲才能叫号;有顾客时才能叫号
互斥关系:取号机互斥访问
【解题步骤】
1.草稿上进行进程行为轨迹,多留空位
2.一步一步往下走,要等待的地方就p一下
3.pv操作成对出现,根据p写完v
4.x先确定pv操作的位置,再思考设置什么样的信号量,信号量的含义是什么?
【坑点】
serve=0;是因为,serve代表的是营业员叫号,所以对于初始情况下,如果serve=1,顾客进程不需要叫号也获得了服务,这里的逻辑就不对了。
但是serve代表叫号这层含义让人很犹豫,因为题目中把“叫号”写出来了,让我觉得叫号是与“获取服务”/“取号”这类与信号量无关的操作。啊一西!
semaphore serve=0//1个服务窗口
semephore empty=10//10个座位
semaphore full=0;
semaphore mutex=1//1个取号机
process 顾客 i
{
p(empty)//没有座位的时候要等待
p(mutex)//取号机被占用的时候要等待
从取号机上取号
v(mutex)
v(full)//坐上座位
等待叫号
p(serve)//营业员没叫号要等待
获取服务
}
process 营业员
{
while(true)
{
p(full)//座位上没有一个人的时候要等待
叫号
v(serve)//营业员叫号
v(empty)//离开座位
为客户服务
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)