imicman的个人空间 https://blog.eetop.cn/1518355 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

deadlock

已有 501 次阅读| 2016-6-1 19:47 |个人分类:杂谈

一 deadlock定义

当多个客体中的每个客体在等待事件该事件由其中另外一个客体去触发,则发生死锁。

deadlock有4个条件
1. 资源只能被客体独享
2.客体最少需要进行两次以上的资源申请
3.资源不可以被客体之外的第三方强行剥夺
4.至少2各客体之间发生你中有我我中有你的资源


二 deadlock模型
  客体行为:申请资源,使用资源,释放资源。

   从定义出发,多个客体多个资源构成复杂的死锁模型。考虑最简单的2客体2资源模型:客体K1和K2,资源R1和R2,每个客体都需要具备R1和R2以完成工作。
发生死锁的情形为:K1占有R1,K2占有R2,K1需要占有R2,K2需要占有R1,K1和K2占有了彼此都需要的资源,因此需要同时拥有R1和R2,K1和K2才能完成工作并释放资源,在当前情况下,彼此都不能获取到对方的资源,也不能释放资源,K1和K2卡在这种状态下。

形象的一个场景,在十字路口,有4量长公交车在向四个方向驶去,因为车很长,很容易出现4辆车在十字路口首位想接的情况,因此形成头尾想接的一个环,谁也动不了。

deadlock可以用图表示,定义圆表示客体,方表示资源,由方到圆的箭头线表示客体占有资源,反之表示客体需要占有资源。当把客体,资源,以及之间的关系,用圆,方,箭头线表示出来,当图中出现了一个环,则死锁发生。





三避免deadlock

综上所述,要避免死锁,需要从4个条件入手。通常可取的方法是增加资源的数量,如果资源的具体数量不好确认,那么我们需要将有限的资源实现分类使用(共享)。

四防止deadlock发生

五deadlock发现和恢复



点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 8

    获赞
  • 34

    评论
  • 访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-26 06:02 , Processed in 0.016510 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部