死锁预防和死锁避免的区别
1. 死锁预防
死锁预防意味着阻止发生死锁所需的四个条件中的至少一个。如果我们能够阻止其中任何一个,那么就可以防止死锁。
需要阻止的四个条件是:
- 互斥
- 等待
- 无抢占
- 循环等待
假脱机和非阻塞同步算法用于防止上述情况。在死锁预防中,所有请求都在有限的时间内被授予。
2. 避免死锁
在死锁避免中,我们必须在死锁真正发生之前预见到死锁,并确保系统不会进入不安全状态。如果仔细分配资源,就有可能避免死锁。为了避免死锁,我们使用银行家和安全算法进行资源分配。在死锁避免中,将需要的每种类型的最大资源数在流程开始时说明。
死锁预防和死锁避免之间的区别:
编号 | 比较项 | 预防死锁 | 避免死锁 |
---|---|---|---|
1 | 概念 | 预防死锁至少阻止了发生死锁的必要条件之一。 | 避免死锁确保系统不会进入不安全状态 |
2 | 资源请求 | 预防死锁所有的资源都是一起请求的。 | 资源请求是根据可用的安全路径完成的。 |
3 | 所需信息 | 预防死锁不需要关于现有资源、可用资源和资源请求的信息 | 避免死锁需要关于现有资源、可用资源和资源请求的信息 |
4 | 过程 | 通过限制资源请求过程和资源处理来防止死锁。 | 避免死锁会自动考虑请求并检查它是否对系统安全。 |
5 | 抢占 | 有时,抢占会更频繁地发生。 | 避免死锁在死锁避免中没有抢占。 |
6 | 资源分配策略 | 用于防止死锁的资源分配策略是保守的。 | 防止死锁的资源分配策略并不保守。 |
7 | 未来的资源请求 | 预防死锁不需要知道未来的进程资源请求。 | 避免死锁需要了解未来的进程资源请求。 |
8 | 优点 | 预防死锁不涉及任何成本,因为它只需使条件之一为假,这样就不会发生死锁。 | 由于此方法动态工作以分配资源,因此没有系统未充分利用。 |
9 | 缺点 | 死锁预防设备利用率低。 | 避免死锁会使进程阻塞太久。 |
10 | 使用示例 | 假脱机和非阻塞同步算法。 | 使用银行家和安全算法。 |