现代操作系统笔记——第六章死锁

第六章死锁

可抢占资源:可以从拥有它的进程中抢占而不会产生任何副作用,例如存储器

不可抢占资源:在不引起相关的计算失败的情况下,无法把它从占有它的进程处抢占过来。

死锁与不可抢占资源有关,有关可抢占资源的潜在死锁通常可以通过在进程之间重新分配资源而化解。

使用资源的顺序:请求、使用、释放资源。

死锁定义

死锁的必要条件

死锁建模

检查资源分配图是否有环路来判断死锁。

四种处理死锁策略

一、鸵鸟算法:把头埋到沙子里,假装没有问题发生

二、死锁检测与死锁恢复

并不阻止死锁的产生,而是允许死锁发生,检测到死锁之后就采取措施进行恢复。

    每种类型一个资源的死锁检测

    画资源分配图,看有无环,整个图不存在环就不存在死锁

    每种类型多个资源的死锁检测(应该不会考这么深吧……)

   

    死锁恢复

  1. 利用抢占恢复

在不通知原进程的情况下,将某一资源从一个进程强行取走给另一个进程,接着送回。

  1. 利用回滚恢复

将进程复位到一个更早的状态,那时他还没有取得所需的资源,接着把这个资源分配给一个死锁进程。

  1. 通过杀死进程恢复

杀死环中进程;杀死环外进程作为牺牲品释放该进程资源。

死锁避免

安全状态和不安全状态

安全状态:如果没有死锁发生并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能使每一个进程运行完毕,则该状态安全。

不安全状态并不是死锁

安全状态与不安全状态的区别:从安全状态出发,系统能够保证所有进程都完成,从不安全状态出发就没有这个保证。

 

单个资源的银行家算法

多个资源的银行家算法

 

死锁预防

1、破坏互斥条件

2、破坏占有并等待条件

规定所有进程在开始执行前请求所需的全部资源,如果所需的全部资源可用就将它们分配给这个进程,该进程肯定能运行结束,否则就不进行分配,进程等待。

问题:很多进程直到运行时才知道需要多少资源,且资源利用率不高。

另一种方案:进程请求资源时释放占有的所有资源,再尝试一次获得所需的全部资源。

3、破坏不可抢占条件
可能会引起混乱,可通过虚拟化解决。

4、破坏环路等待条件

发布了124 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_36718317/article/details/89111547
今日推荐