软件设计师考试重点难点: 死锁、流水线、关键路径、系统可靠性计算、多媒体、操作系统、数据库
软件设计师重点难点——死锁 死锁(Deadlock)是指多个进程在运行的过程中因争夺资源而造成的一种僵局
当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进
在软件设计师的考试当中,这个知识点的考查是以选择题的形式出现的,考点主要有:死锁的必要条件、解决死锁的方法,最难高难度会考到“银行家算法”
本文将介绍死锁的相关知识,但不会具体讲解“银行家算法”,该算法将在本系列的下一篇文章中详细说明
1、死锁发生的必要条件 死锁的发生必须具备四个必要条件,这四个条件相互联系、缺一不可
(1)互斥条件:指进程对所分配到的资源进行排他性使用,即在一段时间内某资源只由一个进程占用
如果此时还有其他进程请 求 该资源,则 请 求 者 只能 等 待 ,直 至 占有该资源的进程用完 并 释 放
(2)请 求 和 保 持条件:指进程已 经 保 持了 至 少 一个资源,但又 提 出了 新 的资源请 求 ,而该资源又 已 被 其他进程占有,此时请 求 进程阻 塞 ,但又 对自 己 已 获 得 的其他资源保 持不放
(3)不剥 夺条件:指进程已 获 得 的资源,在未 使用完 之 前,不能 被 剥 夺,只能 在使用完 时由自己 释 放
(4)环 路等 待 条件:指在发生死锁时,必然 存 在一个进程--资源的环 形链 ,即进程集 合 {P0,P1,P2… Pn}中的 P0 正 在等 待 一个 P1 占用的资源,P1 正 在等 待 P2 占用的资源,… … Pn 正 在等 待 已 被 P0占用的资源
2、解决死锁的策 略 解决死锁的策 略 通 常 有三 种:死锁预 防 、死锁避 免 以及 死锁解除
前两 种方法是“事 前措 施 ”,而死锁解除 是“事 后 解决方案 ”
(1)死锁预