死锁避免:银行家算法
面试常考的死锁避免的知识点:银行家算法。
首先总结一下死锁四大条件:
1.互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。
2.请求与保持:当进程因请求资源而阻塞时,对已获得的资源保持不放。
3.不可剥夺:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。
4.环路等待:在发生死锁时,必然存在一个进程--资源的环形链。
预防死锁的基本方法就是破坏四个条件:
1.破坏请求与保持:
1): 一次性分配所以资源.这样就不会再有请求了。
2): 预先分配“所需”资源,运行过程中逐步释放掉使用完毕的资源,再去请求。
2.破坏不可剥夺:
1): 即当某进行获得部分资源,但请求其他资源失败,则释放已持有资源。
3.资源有序的分配:
1): 系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件)。
(死锁避免)银行家算法:
个人理解: 一种有效的资源分配策略。 要明确三点,1.进程所需的资源(need)2.系统分配给进程的资源(allocation)3.系统保留的可分资源(available)要使得分配安全,则每次分配,要使得need <= allocation + available.则进行分配,等进程执行完任务,立马归还资源(available = need + allocation),然后进行下一轮的分配,如此往复。
视频讲解:https://www.bilibili.com/video/BV1Nx411X7hT?from=search&seid=8739665572939657919