处理死锁策略2

一、避免死锁-动态策略

1.概述

安全序列-能使每个进程才能顺利完成的分配资源的序列,可有多种,此时系统处于安全状态下,系统一定不会发生死锁。

不安全状态-找不到一个安全序列时,系统处于不安全状态下,系统可能会发生死锁

关系-导致不安全状态的原因很多,但发生死锁时系统是处于不安全状态下的。

2.银行家算法

原理:在分配资源前对分配后系统安全状态进行判断,根据剩余可用资源数与进程需求资源数进行比较,再分配

二、检测和解除-允许死锁发生

1.检测

定义数据结构保存资源请求和分配信息,并用来检测系统是否已进入死锁状态

处理死锁策略2_第1张图片

可完全简化:资源分配图最终能消除所有边,此时能找到一个安全序列,一定没有发生死锁。但若最终不能消除所有边,此时发生了死锁,还连着边的进程就是处于死锁状态的进程。 

算法

找既不阻塞又非孤点的进程(非死锁进程),消去它所有的请求边和分配边,使之成为孤立的结点。

若不可完全简化,此时系统死锁。

2.解除

资源剥夺法-挂起(放入外存上)某些死锁进程并抢占其资源,将资源分配给其它死锁进程。

撤销进程法-强制撤销部分/全部死锁进程并剥夺其资源,代价较大

进程回退法-让一个/多个死锁进程回退到足以避免死锁的地步,要求记录进程历史信息。

你可能感兴趣的:(操作系统学习,笔记)