2025 年软件设计师教程重难点精讲(一) 2025 下半年软考软件设计师报名即将开始,下面是希赛软考学院整理的软件设计师教程重点难点精讲,希望对大家有所帮助
死锁(Deadlock)是指多个进程在运营的过程中因争夺资源而导致的一种僵局
当进程处在这种僵持状态时,若无外力作用,它们都将无法再向前推动
在软件设计师的考试当中,这个知识点的考察是以选择题的形式出现的,考点重要有:死锁的必要条件、解决死锁的方法,最难高难度会考到“银行家算法”
本文将介绍死锁的相关知识,但不会具体讲解“银行家算法”,该算法将在本系列的下一篇文章中具体说明
1、死锁发生的必要条件 死锁的发生必须具有四个必要条件,这四个条件互相联系、缺一不可
(1)互斥条件:指进程对所分派到的资源进行排他性使用,即在一段时间内某资源只由一个进程占用
假如此时尚有其他进程请求该资源,则请求者只能等待,直至占有该资源的进程用完并释放
(2)请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又已被其他进程占有,此时请求进程堵塞,但又对自己已获得的其他资源保持不放
(3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放
(4)环路等待条件:指在发生死锁时,必定存在一个进程--资源的环形链,即进程集合{P0,P1,P2…Pn}中的 P0 正在等待一个 P1 占用的资源,P1 正在等待 P2 占用的资源,……Pn 正在等待已被 P0 占用的资源
2、推断系统是否也许进入死锁状态 从上面的死锁解决方案来看,无论哪一种方式都不可避开的要增长系统的承担
而同时一个系统是否有可进入死锁状态受系统资源数量,需要使用该资源的进程数量等因素影响
若系统本不也许引起死锁,而我们采纳了死锁解决方案,是很不合理的
所以,考试中常考到这样的题型:给出系统的资源数,以及需要使