读书笔记-现代操作系统-6死锁-6.5死锁避免

本文是关于操作系统中死锁避免的读书笔记,重点介绍了资源轨迹图、安全状态与不安全状态的区别,以及银行家算法在单个资源和多个资源情况下的应用,强调了系统如何通过判断和调度防止进入不安全状态以避免死锁的发生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6.5 死锁避免

系统判断分配资源是否安全,并且只能在保证安全的条件下分配资源。

6.5.1 资源轨迹图

这里写图片描述
当在t点时系统必须做出正确的判断,应该将一部分程序挂起以避免产生死锁

6.5.2 安全状态和不安全状态

  • 安全状态
    如果没有死锁状态,而且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每个进程运行完毕,则该状态是安全的。
    如果线程可以通过仔细的调度避免死锁,所有状态时安全的,

需要区别的是不安全状态并不是死锁状态。
从安全状态出发,系统能够保证所有进程都能完成,而从不安全状态吃饭,就没有这样的保证。

这里写图片描述

从个人的理解看:
不安全状态有可能进入死锁状态但是不一定进入,是处于安全状态和死锁状态之间的情况。
关键点就是安全状态对所有资源的都突然请求最大资源也是可以科学调度后完成的,不安全状态所有进程同时请求最大资源后是无法完成调度的,但是未必所有资源都会同时产生最大资源请求,而死锁是已经发生了请求资源互斥而休眠的的情况。

6.5.3 单个资源的银行家算法

算法要做的判断是对请求的满足是否会导致进入不安全的状态,如果是则拒绝请求,如果不是则予以分配。
银行家算法就是对每一个请求,进行检测,先执行需要资源最少的进程,完成后资源返回资源池,不断进行直到所有进程都完成或者有无法完成的进程

6.5.4 多个资源的银行家算法

检测一个状态是否安全的算法:
1. 查找仍然需要资源矩阵中年是否有一行,其没有被满足的资源均小于或等于A。如果不存在,那么系统将死锁。
2. 如果找到这样的行,可以假设它所获得的资源并运行结束,该进程标记为终止,并将其资源返还给向量A。
3. 重复以上两步。
这里写图片描述

实际中很少使用,因为无法判断进程需要多少资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值