【OS笔记 19】经典同步问题——哲学家就餐问题(信号量解决方案)

一、问题描述

在这里插入图片描述


二、哲学家 i 的进程描述(可能引起死锁)

在这里插入图片描述



三、死锁分析

1. 什么情况下会发生死锁

假如五位哲学家同时饥饿,并且都拿起自己左边的筷子,就会使五个 chopstick[i] 信号量变为0,当它们再试图去拿自己右边的筷子时,都会由于无筷子可拿而无限地等待。

2. 避免死锁的几种解决办法

至多同时允许四位哲学家去拿自己左边的筷子,这样就可保证最终至少有一位哲学家能够进餐,并且他用完之后会释放两个筷子,从而使其他哲学家也能够进餐。图解如下:

在这里插入图片描述


② 仅当哲学家的左、右筷子均可用时,才允许他拿起两个筷子进餐。(这也是比较好理解的,既然你只有一只筷子可用,就算拿了也吃不成,为啥要拿呢,浪费资源)

③ 非对称解决方法
规定奇数号的哲学家必须先拿左边的筷子,再拿右边的筷子;偶数号的则相反。图解如下:

在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值