zoukankan      html  css  js  c++  java
  • 银行家算法

    银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。
     
    背景
        在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。
     
    数据结构:

    Process   进程编号      

    Available  系统目前可分配出去的资源数

    Work    现在分配给该进程的各类资源数

    Allocation   最初已分配给该进程的各类资源数

    Need  该进程还需要的各类进程数

    Work+Allocation 该进程现在回收到的资源数,初值=Available ,也可以理解为系统目前可分配出去的的各类资源数

    安全序列:

    用系统的Avilable可各进程的Need作比较,编号从小到大开始比较

    每当进程结束之后,其Allocation都需要回收

    判断是否能满足某个进程的Request请求:

    先做合法性判断假设满足,修改Avilable 和 该进程的 Allocation以及Need ,再寻找安全序列,若无安全序列则表示不能满足还进程的请求

     

  • 相关阅读:
    Java的常用API之System类简介
    Java的常用API之Date类简介
    Java的常用API之Object类简介
    数据库知识总结(全)
    学习:浏览器访问网站的总流程
    学习:TCP/UDP协议分析(TCP四次挥手)
    学习:TCP/UDP协议分析(TCP三次握手)
    学习:ICMP协议
    实现:ARP探测存活主机
    学习:ARP协议/数据包分析
  • 原文地址:https://www.cnblogs.com/2sheep2simple/p/10234227.html
Copyright © 2011-2022 走看看