其他分享
首页 > 其他分享> > 第七章:死锁

第七章:死锁

作者:互联网

第七章:死锁

在多道程序系统中,由于多个进程并发执行,大大改善了系统资源的利用率并提高了系统处理能力,但也带来了新的问题--死锁。

死锁

在多道程序环境中,多个进程可以竞争有限数量的资源。当一个进程申请资源的时候,如果此时无可用资源,则该进程进入waiting state。有时如果所申请的资源被其他进程占有,则该进程有可能再也无法改变其状态,这种情况叫做死锁。多个进程由于竞争有限资源导致僵局(互相等待),若无外力作用,则这些进程都无法向前推进。

ps: 此处注意理解 “互相等待” 的具体含义。同时注意:一般 os 不提供死锁预防措施。

7.1 系统模型

系统资源:有限种类,有限实例。

正常模式下,进程按照, 申请(request),使用(use) ,释放(release)来使用资源。

7.2 死锁特征

死锁的识别和检测是有一定难度的,因为它只在某些调度情况下出现。

四个死锁的必要不充分条件

资源分配图:(Resource Allocation Graph)--- to describe the deadlock

image-20210509155532585 黑点表示资源实例,注意下分配边和申请边。

要求:通过观察图判断是否有deadlock,下面列举三个例子

image-20210509155739668

结论:(a),(c) 无死锁,(b)有死锁

我们可以总结发现: 如果分配图中无环则系统无死锁,若有环则可能存在死锁。如果每种资源的实例只有一个,则存在环 等价于 出现死锁(环上的进程出现死锁)。如果每种资源有多个实例,则有环不一定会出现死锁,此时为必要不充分条件。

7.3死锁处理方法

-----设备利用率低,系统吞吐率低

7.4 Deadlock Prevention

确保死锁的四个必要条件至少有一个不成立即可预防死锁。

7.5 Deadlock Avoidance

一个最简单的模型:算法检查资源分配状态(进程可分配资源,已分配资源,最大需求),确保循环等待条件不会成立。

安全状态(safe state):如果系统能按一定顺序为每个进程分配资源(不超过它的最大需求),仍然避免死锁,那么系统的状态就是安全的(safe)。更为正式地说,只有存在一个安全序列(safe sequence),系统才处于安全状态。进程序列〈P1,P2,…,Pn.〉在当前分配状态下为安全序列是指:对于每个Pi,,Pi,仍然可以申请的资源数小于当前可用资源加上所有进程Pj(其中j<i)所占有的资源。在这种情况下,进程pi需要的资源即使不能立即可用,那么pi,可以等待直到所有pj,释放资源。当它们完成时,pi;可得到需要的所有资源,完成给定任务,返回分配的资源,最后终止。当pi.终止时,pi +="" 1可得到它需要的资源,如此进行。如果没有这样的序列存在,那么系统状态就是非安全的(unsafe)。<="" span="">

标签:系统,互斥,死锁,第七章,进程,Deadlock,资源
来源: https://www.cnblogs.com/Ivessas/p/14748167.html