死锁避免:银行家算法

面试常考的死锁避免的知识点:银行家算法。

首先总结一下死锁四大条件:

  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

原文地址:https://www.cnblogs.com/BillowJ/p/13125466.html