清华大学操作系统课程笔记:死锁

本文已收录于 清华大学操作系统课程笔记 系列,共计 6 篇,本篇是第 6 篇

死锁

资源类型:

资源分类

资源分配图

死锁处理方法

由进程处理死锁,操作系统不管这事。

死锁预防:限制申请方式

eg:早期打印机同时把两个打印作业发送给打印机,那么打出来的东西谁都没法用。现在打印机内部通常有缓冲池,由打印机内部调度众多的打印作业。

你要申请资源,就一次性全部申请完,别一会儿要,一会儿又要的。

eg:贷款的时候,一次把所有需要的钱贷出来。

进程开始的时候申请所有必要的资源,否则不开始。

不过这样子,效率很比较低。

eg:两个车窄桥相遇,都同时倒车,再尝试申请。

死锁避免

分配资源的时候,就去先验证下会不会出现死锁。只有不会出现死锁才给分配资源。

银行家算法

银行家算法是一种避免死锁产生的办法。是由银行借贷分配作为基础的,判断并保证系统处于安全状态。

银行家算法基本思想

银行家算法的数据结构

银行家算法安全状态判断

 

死锁检测

与银行家算法区别是没有最大资源请求量的判断,其他的类似。

Ps:死锁检测开销很大,还需要定期扫描。因为开销大,所以操作系统不管死锁的事。

死锁检测算法的使用

选择时间和周期。

死锁恢复:进程终止

死锁恢复:资源抢占

作者: 高志远

高志远,23岁,男生,毕业于上海杉达学院电子商务系。

发表评论

邮箱地址不会被公开。