《现代操作系统》中关于哲学家就餐的一个疑问?

发布于 2022-09-06 05:23:28 字数 214 浏览 19 评论 0

图片描述
图中被红线圈出来的那句“每个哲学家一个信号量”我不是很理解。这里,信号量的作用是什么?
还有一个不理解的地方就是:不是有5双筷子吗?为什么不是定义5个mutex?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萤火眠眠 2022-09-13 05:23:28

1.信号量就是一个可以用来被锁住的东西,就是一个标识,比如说一个班里面谁拥有"3道杠"这个袖标谁就是大队长,这个例子里谁拥有这个信号量谁就可以吃饭

2.为什么不定义5个mutex,那一个班可以有5个大队长么?本例子中的袖标就是吃饭的碗,且假设一个碗只能一个人吃,如果5个人5个mutex,那大家就可以各吃各饭,互不影响.程序最怕无序的状态,为了有序,我们就引入信号量.

十雾 2022-09-13 05:23:28

mutex可以看作计数为一的信号,实际这里换成5个mutex是没问题的,因为每个哲学家的信号量不会超过一。

我要拿筷子吃东西,我先把自己的状态成饥饿,然后看我左右两边的人是不是在吃,修改状态有一个mutex保护,所以不会有问题。

如果他们没在吃,那我就可以拿筷子,我拿筷子的时候,信号量up,拿到筷子之后信号量down,不用等待。

如果他们其中有人在吃,那我不能拿筷子,这时我直接信号量down,也就堵塞等待。

那谁通知我可以解除堵塞呢,就是我旁边两个拿了筷子的人。他们其中一个放下我要筷子的时候,看到我是饥饿的,而且我两边的人都没在吃了,就up了一下我的信号量,那刚才堵塞的down就会解除,我就可以重新尝试拿筷子了。

可以看出,这里的信号量起到了通知、等待的作用。

也就是说这5个信号量并不是用来保护或表示筷子的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文