2.23死锁的处理策略——死锁的检测和解除

一,死锁检测:

为了能系统是否已经发生死锁进行检测,必须

1,用一种数据结构来保存资源的请求和分配信息

2,用一种算法,利用上述信息来检测系统是否进入死锁状态

如果系统中剩余的可用资源足够满足进程的需求,那么这个进程暂时不会被堵塞,可用继续执行下去。如果这个进程执行结束了把资源归还给系统,就可能使得某些正在等待的进程被激活,并且顺利的执行下去。相应的,这些被激活的进程执行完之后又会归还一些资源,这样可能激活另外一些阻塞的进程...

如果按上述过程,最终能消除所有的变,就称这个图是可以完全简化的。此时一定没有发生死锁

反之,最终不能消除所有的边,那么此时就是发生了死锁,最终还连着边的那些进程就是处于死锁状态的进程

二,死锁解除:

补充:并不是系统中所有的进程都是 死锁状态,用死锁检测算法化简资源分配图后,还连着边的那些进程就是死锁进程

1,资源剥夺法:挂起(暂时放到外存上)某些死锁进程,并抢占它的资源,将这些资源分配给 其他死锁进程。但是应防止被挂起的进程长时间得不到进程而导致饥饿

2,撤销进程法(终止进程法):强制撤销部分,甚至是全部死锁进程,并且剥夺这些进程的全部资源,这种方式的优点是实现简单,但是付出的代价可能会很大。因为有些进程可能已经运行很长时间,已经接近结束,一旦被终止可谓是功亏一篑

扫描二维码关注公众号,回复: 11373040 查看本文章

3,进程会退法:让一个或者多个进程回退到足以避免死锁的地步。这就要求系统要记录进程的历史消息,设置还原点

4,如何决定对哪些进程下手?

1)进程的的优先级低

2)已经执行的时间长度短的

3)还要很久进程才结束

4)进程使用的资源数多的

5)进程是批处理式,不是交互式的

考虑把它们干掉

猜你喜欢

转载自blog.csdn.net/weixin_44841312/article/details/106192190
今日推荐