zoukankan      html  css  js  c++  java
  • 死锁避免:银行家算法

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

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

      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

  • 相关阅读:
    Magic-Club开发--第十六天
    (待完成)
    (转)Python多任务之线程
    (转)机器学习常用性能度量中的Accuracy、Precision、Recall、ROC、F score等都是些什么东西?
    排序
    一些c++<new(std::nothrow) >
    一些c++<省去警告>
    一些c++<MFC
    一些c++<auto>
    Unity3D js和C# 间相互调用
  • 原文地址:https://www.cnblogs.com/BillowJ/p/13125466.html
Copyright © 2011-2022 走看看