n个理发师的睡眠理发师问题求解,高分求解,在线等待!

xiehui19830207 2003-10-07 08:18:57
rt
...全文
607 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这种恶心龌促的问题不会考的。

没意义,没水准!
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
  • 打赏
  • 举报
回复
如果今年出这到题,哈哈,你小子死定了
  • 打赏
  • 举报
回复
“整个过程”我没有!
不过看懂PV操作,不会用掉你很多时间,十分钟足够了!!!
快点去看,时间还来的及。
xiehui19830207 2003-10-07
  • 打赏
  • 举报
回复
顶一下,大家帮帮忙!!
xiehui19830207 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
  • 打赏
  • 举报
回复
不知道,帮你顶一下

2,948

社区成员

发帖
与我相关
我的任务
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证c4javac4前端 技术论坛(原bbs)
社区管理员
  • 软件水平考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧