首页 > 编程语言 >银行家算法小笔记

银行家算法小笔记

时间:2024-10-10 15:00:09浏览次数:6  
标签:Request 笔记 Allocation 安全 算法 进程 资源 银行家

最著名的避免死锁算法:
将操作系统视为银行家,操作系统管理的资源视为银行家管理的资金。

  1. 数据结构的描述
    假设n个进程,m类资源,银行家需要定义下面4个数据结构:
    1. 可利用资源向量
    2. 最大需求矩阵
    3. 分配矩阵
    4. 需求矩阵
  2. 描述:
    设Requests_i 是进程P-i的请求向量,Request_i[j]=K表示进程P-i需要j类资源K个。当P-i发出资源请求后,系统按照下述步骤进行检查:
    1. 若$Request_i[j] \le Need[i,j]$,则转向步骤2,否则认为出错,因为它所需的资源数已经超过它所宣布的最大值。
    2. 若$Request_i[j]\le Available[j]$,转向步骤3,否则没有足够的资源,进程必须等待
    3. 系统试探着将资源分配给进程P-i,修改下面数据结构中的数值
      $$\begin{aligned}Available &= Available-Request\ Allocation[i,j]&=Allocation[i,j]+Request_i[j]\Need[i,j]&= Need[i,j]-Request_i[j]\end{aligned}$$
    4. 系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程P-i,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程P-i等待。
  3. 安全性算法
    设置安全向量,表示系统中的剩余可用资源数目,它有m个元素,在执行安全性算法前,令Work=Available
    1. 初始为空
    2. 从Need矩阵中找出复合下面条件的行:该行对应的进程不在安全序列中,而且该行小于或等于Work向量,找到后,将对应的进程加入安全序列;若找不到,则执行步骤4
    3. 进程P-i进入安全序列后,可顺利执行,直至完成,并释放分配给它的资源,所以应该执行$$Work = Work + Allocation[i]$$其中Allocation[i]是Allocation矩阵中对应的行,返回步骤2
    4. 若此时安全序列中已有所有进程,则系统处于安全状态,否则系统处于不安全状态。

标签:Request,笔记,Allocation,安全,算法,进程,资源,银行家
From: https://www.cnblogs.com/notebox/p/18456392

相关文章

  • Alder32校验算法
    c源码/*adler32.c--computetheAdler-32checksumofadatastream*Copyright(C)1995-2004MarkAdler*Forconditionsofdistributionanduse,seecopyrightnoticeinzlib.h*//*@(#)$Id$*/#defineZLIB_INTERNAL#include"zlib.h"#defineBAS......
  • 基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真
    1.算法运行效果图预览(完整程序运行后无水印)   2.算法运行软件版本matlab2017b 3.部分核心程序(完整版代码包含中文注释和操作步骤视频)function[Ic,Xmin3,Xmax3,Ymin3,Ymax3]=func_merge(I,Trafficxy,Smj,SCALE);%提取交通标志的中心点,判断是否为同一......
  • prometheus学习笔记之进程监控process_exporter
    项目地址:https://github.com/ncabatoff/process-exporter一、安装process-exporterhttps://github.com/ncabatoff/process-exporter/releases/download/v0.8.3/process-exporter-0.8.3.linux-amd64.tar.gztarxfprocess-exporter-0.8.3.linux-amd64.tar.gzmvprocess-expo......
  • 多线程面试笔记
    1-多线程与并发基础1.1-线程和进程的区别什么是线程和进程?进程:程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的。当一个程序被运行,......
  • STL——2.算法
    一、遍历1.for_eachvoidMyPrint(intval){cout<<val<<endl;}vector<int>v1={1,2,3,4};for_each(v1.begin(),v1.end(),MyPrint);2.transformv2.resize(v1.size());//先开辟空间,否则报错transform(v1,begin(),v1.end(),v2.begin(),MyPri......
  • 《Programming from the Ground Up》阅读笔记:p217-p238
    《ProgrammingfromtheGroundUp》学习第11天,p217-p238总结,总计22页。一、技术总结1.Ccompilingp216,Ccompilingissplitintotwostages-thepreprocessorandthemaincompiler。注:感觉这个写法不好,因为preprocessor和compiler都是对象,这里应该指动作。应该是:Cco......
  • Bluespec SystemVerilog(BSV) 及 MIT 体系结构公开课 笔记
    前言早年MIT有三门用bsv作为硬件描述语言的体系结构课程,代号分别为6.004,6.175和6.375.根据MITCScourselist,现在这三门课分别改名为了6.1910、6.1920和6.5900.本文是自学这三门课所需的bsv时记录的笔记,内容主要来源于这三门课目前公开的资料(6.17516fall,6.375......
  • [编程笔记] 当前上下文中不存在名称"ViewBag"
    最近在弄另外一个项目,很长一段时间没接触MVC了,VisualStudio2022识别cshtml文件的时候,出了一点故障!很多ViewBag、@Html.Partial、@Html.FunctionBar()等这些地方都报波浪线了,提示不存在这个名称,但是代码是可以运行的,这种一般就是本地环境或者配置的问题了。......
  • 【Python脚本】getopt参数解析笔记
    getopt参数解析笔记背景在Python中,使用getopt模块进行命令行参数解析是常见的需求。在编写脚本时,正确地定义参数选项对于确保程序正常运行至关重要。这是一个用于检测安卓软件版本的脚本一部分,有些用法和笔记分享给大家问题描述在某个脚本中,使用getopt解析命令......
  • K近邻算法
    一、K近邻算法基础介绍K近邻算法也是常说的KNN算法,是一种常见的分类和回归算法,当然我们常将其用于分类。是一种监督算法,该算法的内容其实和名字很像,根据邻居来进行判断。有点近朱者赤近墨者黑的意味。比如我们常说:某个人的工资一般是与其玩的最好的5个朋友(或者说是N个)工资......