死锁预防和死锁避免的区别

死锁预防和死锁避免的区别

1. 死锁预防

死锁预防意味着阻止发生死锁所需的四个条件中的至少一个。如果我们能够阻止其中任何一个,那么就可以防止死锁。

需要阻止的四个条件是:

  • 互斥
  • 等待
  • 无抢占
  • 循环等待

假脱机和非阻塞同步算法用于防止上述情况。在死锁预防中,所有请求都在有限的时间内被授予。

2. 避免死锁

在死锁避免中,我们必须在死锁真正发生之前预见到死锁,并确保系统不会进入不安全状态。如果仔细分配资源,就有可能避免死锁。为了避免死锁,我们使用银行家和安全算法进行​​资源分配。在死锁避免中,将需要的每种类型的最大资源数在流程开始时说明。

死锁预防和死锁避免之间的区别:

编号 比较项 预防死锁 避免死锁
1 概念 预防死锁至少阻止了发生死锁的必要条件之一。 避免死锁确保系统不会进入不安全状态
2 资源请求 预防死锁所有的资源都是一起请求的。 资源请求是根据可用的安全路径完成的。
3 所需信息 预防死锁不需要关于现有资源、可用资源和资源请求的信息 避免死锁需要关于现有资源、可用资源和资源请求的信息
4 过程 通过限制资源请求过程和资源处理来防止死锁。 避免死锁会自动考虑请求并检查它是否对系统安全。
5 抢占 有时,抢占会更频繁地发生。 避免死锁在死锁避免中没有抢占。
6 资源分配策略 用于防止死锁的资源分配策略是保守的。 防止死锁的资源分配策略并不保守。
7 未来的资源请求 预防死锁不需要知道未来的进程资源请求。 避免死锁需要了解未来的进程资源请求。
8 优点 预防死锁不涉及任何成本,因为它只需使条件之一为假,这样就不会发生死锁。 由于此方法动态工作以分配资源,因此没有系统未充分利用。
9 缺点 死锁预防设备利用率低。 避免死锁会使进程阻塞太久。
10 使用示例 假脱机和非阻塞同步算法。 使用银行家和安全算法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程