OS 基础教程

进程管理

同步

死锁

内存管理

文件管理

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/os-deadlock-avoidance.html

避免死锁


在避免死锁的情况下,如果系统的结果状态不会导致系统中的死锁,那么将会授予对任何资源的请求。系统的状态将持续检查安全和不安全的状态。

为了避免死锁,进程必须告诉OS,进程可以请求完成其执行的最大资源数量。

最简单和最有用的方法指出,流程应声明它可能需要的每种类型的最大资源数量。 死锁避免算法检查资源分配,以便永远不会有循环等待条件。

安全和不安全的状态

系统的资源分配状态可以由可用资源和已分配资源的实例以及进程所需资源的最大实例来定义。

下面显示了随机时间记录的系统状态。

已分配资源

仍然需要的资源

E = (7 6 8 4)  
P = (6 2 8 3)  
A = (1 4 0 1)

上表和向量E,P和A描述了系统的资源分配状态。 系统中有4个进程和4个类型的资源。 表1 显示了分配给每个进程的每个资源的实例。

表2显示了每个流程仍然需要的资源实例。 向量E表示系统中每个资源的总实例。

向量P表示已分配给进程的资源实例。 向量A表示未使用的资源的数量。

如果系统可以分配所有进程请求的所有资源而不进入死锁,则系统的状态称为安全

如果系统不能满足所有进程的请求,那么系统的状态称为不安全

死锁避免方法的关键在于当对资源进行请求时,只有在结果状态也是安全状态的情况下才能批准请求。