社区
软件水平考试
帖子详情
n个理发师的睡眠理发师问题求解,高分求解,在线等待!
xiehui19830207
2003-10-07 08:18:57
rt
...全文
607
20
打赏
收藏
n个理发师的睡眠理发师问题求解,高分求解,在线等待!
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
千里之外-pongphy
2003-10-09
打赏
举报
回复
这种恶心龌促的问题不会考的。
没意义,没水准!
liyi_99
2003-10-09
打赏
举报
回复
xtyqzp(xh) 说的没错。采用3个标志量就可以了。书上都有的。
geodetic
2003-10-09
打赏
举报
回复
http://learn.bitsde.com/hep/os/chapter2/section3/2.3.3.htm
pebble
2003-10-09
打赏
举报
回复
除了理发师,我觉得n把椅子也属于资源,相当于缓冲区,也需要进行PV操作
liuhelin
2003-10-09
打赏
举报
回复
think
xstarwish
2003-10-09
打赏
举报
回复
标记以下`
ManZY
2003-10-08
打赏
举报
回复
理发师是个临界资源!
P操作,V操作.
等待队列,
就是这些东西,
剩下的你自己去看吧!
他们说的有点道理!
orc
2003-10-08
打赏
举报
回复
remiand_position + remaind_customer==n
只用一个信号量可以吗?
orc
2003-10-08
打赏
举报
回复
remiand_position + remaind_customer==n
只用一个信号量可以吗?
xtyqzp
2003-10-07
打赏
举报
回复
显然这是一个同步问题,即只有有顾客在等待理发师才理发,该问题的解法如下:
remaind_customer //该信号量表示等待的顾客的人数,初值为0
remaind_position //该信号量表示剩余的椅子数,初值为n
理发师:
P(remaind_customer)
理发师理发
V(remaind_position)
顾客:
P(remiand_position)
顾客等待
V(remaind_customer)
执行过程如下:
(1)开始时,没顾客,remaid_customer=0,理发师“阻塞”,remaind_position=n
(2)一个顾客来,然后remaind_position减一个,等待,remaind_customer加一个,顾客“进程”完毕,等待新的进程来到
(3)理发师:当remaind_customer>0时,执行理发动作,然后remiand_position加一个。
注意:每个进程都是自己循环执行的,比如当理发师“进程”执行完最后一个V原语后就再执行第一个P原语,顾客“进程”也一样。
理发师进程和顾客进程是同步关系,需要两个信号量来保持同步。不存在互斥关系,因为理发师理发时顾客也可以进店。
望大家讨论,多请指教!
xtyqzp
2003-10-07
打赏
举报
回复
显然这是一个同步问题,即只有有顾客在等待理发师才理发,该问题的解法如下:
remaind_customer //该信号量表示等待的顾客的人数,初值为0
remaind_position //该信号量表示剩余的椅子数,初值为n
is_not_cuting_hair //该信号量初值为1,表示没有顾客正在理发
理发师:
P(remaind_customer)
理发师理发
V(remaind_position)
顾客:
P(remiand_position)
顾客等待
V(remaind_customer)
执行过程如下:
(1)开始时,没顾客,remaid_customer=0,理发师“阻塞”,remaind_position=n
(2)一个顾客来,然后remaind_position减一个,等待,remaind_customer加一个,顾客“进程”完毕,等待新的进程来到
(3)理发师:当remaind_customer>0时,执行理发动作,然后remiand_position加一个。
注意:每个进程都是自己循环执行的,比如当理发师“进程”执行完最后一个V原语后就再执行第一个P原语,顾客“进程”也一样。
理发师进程和顾客进程是同步关系,需要两个信号量来保持同步。不存在互斥关系,因为理发师理发时顾客也可以进店。
望大家讨论,多请指教!
skylinux
2003-10-07
打赏
举报
回复
和事件模拟差不多吧
mll5644
2003-10-07
打赏
举报
回复
如果今年出这到题,哈哈,你小子死定了
静水流深_和光同尘
2003-10-07
打赏
举报
回复
“整个过程”我没有!
不过看懂PV操作,不会用掉你很多时间,十分钟足够了!!!
快点去看,时间还来的及。
xiehui19830207
2003-10-07
打赏
举报
回复
顶一下,大家帮帮忙!!
xiehui19830207
2003-10-07
打赏
举报
回复
没时间了,哪位大侠有整个过程的麻烦贴出来看看,万分感激!!
静水流深_和光同尘
2003-10-07
打赏
举报
回复
去看懂PV操作,你一定会明白的!
DRGF
2003-10-07
打赏
举报
回复
6、考虑一个理发店,只有一个理发师,只有n张可供顾客等待理发的椅子,如果没有顾客,则理发师睡觉;如果有一顾客进入理发店发现理发师在睡觉,则把他叫醒,写一个程序协调理发师和顾客之间的关系。
答:考虑一下理发师(barber)重复的下列活动:(1)睡觉;(2)为顾客理发;
顾客(customers)重复的下列活动:(3)在椅子上等候;(4)理发;离开;
显然,理发师在(1)处要考察是否有顾客等候理发,如果没有,理发师睡觉;在(2)处理发师等待最先进入理发店的顾客唤醒,开始理发。
顾客在(3)处先看是否有座位,没有则离开;等候理发的顾客在(4)处被理发师唤醒(最先理发的顾客要唤醒理发师);理发结束后离开。
在这两个活动中,从资源的角度来看,理发师是顾客争用的资源,用信号量barber表示,初值为0;除此以外,顾客还要争用n张椅子,信号量customers表示等候理发的顾客数,初值为0;最后设置信号灯变量mutex用于这两个活动对资源barber、customers的互斥,初值为1。
也期待一下~
DRGF
2003-10-07
打赏
举报
回复
好像是程序并发处理问题
smuwcwt
2003-10-07
打赏
举报
回复
不知道,帮你顶一下
理发师
睡眠
问题
线程调度算法
理发师
睡眠
问题
线程调度 算法
理发师
数目为1人,算法比较巧妙
进程间
理发师
通信实验
理发店
问题
:假设理发店的理发室中有 3 个理发椅子和 3 个
理发师
,有一个可容 纳4个顾客坐等理发的沙发。此外还有一间等候室,可容纳13位顾客等候进入理发 室。顾客如果发现理发店中顾客已满(超过 20 人),就...
IPC读者写者和
睡眠
理发师
问题
两个文件一个主要是读者写者,一个是
睡眠
理发师
。读者写者
问题
有修改,当写者处于
等待
状况的时候,新来到的读者不能读入数据库。
睡眠
理发师
问题
中
理发师
有两个。基于windows平台实现。操作系统实验!
进程互斥实验 理发店
问题
理发店
问题
:假设理发店的理发室中有3个理发椅子和3个
理发师
,有一个可容纳4个顾客坐等理发的沙发。此外还有一间等候室,可容纳13位顾客等候进入理发室。顾客如果发现理发店中顾客已满(超过20人),就不进入理发店...
Linux系统分析之
理发师
问题
本例是Linux系统分析的经典
问题
——
理发师
问题
的模拟
求解
,以C语言实现,源代码中以3种不同的随机函数来模拟顾客到来速率的情况。
软件水平考试
2,948
社区成员
22,580
社区内容
发帖
与我相关
我的任务
软件水平考试
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
复制链接
扫一扫
分享
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证
c4java
c4前端
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章