自建网站三种模式/哈尔滨企业网站模板建站
银行家算法,以及安全检测算法:
import copy# 银行家算法(资源分配合法性)
def BankersAlgorithm(Process_num, Resources_num, Request, Max, Available, Allocation, Need):PID = Request['PID'] # 获取发起请求的进程ID# Step1.如果该进程(PID)请求的RID类资源个数加上已经给它分配的RID类资源的个数小于等于该进程PID类资源最大需求量则转入Step2,否则报错,中断返回for rId in range(1, Resources_num):if Request['Request_num'][rId] + Allocation[PID][rId] > Max[PID][rId]:print('Request resource overage!')return # 请求非法,终止分配# Step2.若PID进程请求RID类资源个数小于等于当前可分配的资源个数,则转向Step3.否则系统中RID类资源不能满足该PID进程PID的资源申请,将其阻塞for rId in range(Resources_num):if Request['Request_num'][rId] > Available[rId]:print('Insufficient resources!')return # 资源不足,终止分配,进入阻塞队列# Step3.系统资源试分配for rId in range(Resources_num):Available[rId] = Available[rId] - Request['Request_num'][rId] # 更新系统剩余可用资源Allocation[PID][rId] = Allocation[PID][rId] + Request['Request_num'][rId] # 更新各进程已分配资源Need[PID][rId] = Need[PID][rId] - Request['Request_num'][rId] # 更新各进程资源需求# 安全检查算法(资源分配合理性)
# 拿什么来检查就合理了?--如果该进程下一次请求其剩余所需的全部资源时,会不会发生资源不足的情况。
def security_check(Process_num, Resources_num, Request, Available, Allocation, Need):# Step1 工作向量Work[1:m](m表示资源种数) 表示系统当前可供分配的各资源个数,执行算法开始时Work = AvailableWork = copy.deepcopy(Available) # 重要!! copy.deepcopy() 深度拷贝,浅拷贝(具体原因不再深究)# Step2 布尔型向量Finish[1:n] 表示是否有足够的资源分配给各进程,使之运行完成。开始时Finish[i] = false。Finish = [False] * Process_num # 初始化所有进程的可执行状态sequence = [] # 初始化安全序列(主要是方便后续存储)# Step3.寻找安全进程为什么这里就单单加一个大循环就能找出符合要求的序列?--因为Available一直在增加for _ in range(Process_num): # 重要!!! 每轮至少需要找出一个安全进程,至多Process_num轮可找出安全序列for pID in range(Process_num): # 遍历进程sign = 1 # 是否满足资源充足的标志位if Finish[pID] == False:for rId in range(Resources_num): # 遍历每种资源的需求量if Need[pID][rId] > Work[rId]: # 需要的某类资源大系统当前拥有的资源时#标志位 置0sign = 0break # 放弃本轮对该进程的其它资源检查if sign != 0: # sign != 0,表示该进程各资源需求可以满足# 这里实际是需要给该进程分配资源,由于只是检查,再加之并发实际是串行,分配了执行完毕还得回收# 所以没有进行:Available = Available - Need# Availbale = Available + Needfor rId in range(Resources_num):# 可以完成,并释放出分配给它的资源,故应该执行:Work[rId] = Work[rId] + Allocation[pID][rId] # 将之前分配的资源回收# 该进程若运行有足够的资源,故置Finish[i] = TrueFinish[pID] = Truesequence.append(f'P{pID}') # 将改进程添加到安全序列中# Step4 如果所有进程的Finish[i]== True,说明所有进程都已经出现在安全序列中,表明当前系统处于安全状态,只要有一个进程的Finish为false则当前系统处于不安全状态if all(Finish):return sequence # 返回该安全序列else:# 安全序列不存在,驳回银行家算法的分配操作(加回去)PID = Request['PID']for rId in range(Resources_num):Available[rId] = Available[rId] - Request['Request_num'][rId] # 更新系统剩余可用资源Allocation[PID][rId] = Allocation[PID][rId] + Request['Request_num'][rId] # 更新各进程已分配资源Need[PID][rId] = Need[PID][rId] - Request['Request_num'][rId] # 更新各进程资源需求return sequence # 照例返回,但这不是一个完整的安全序列,调用者需要判断if __name__ == '__main__':# 初始化:Process_num = 3 # 并发进程个数Resources_num = 3 # 系统资源种类个数Resources_All = [8, 3, 6] # 各系统资源的总个数# 进程资源申请矩阵Request = {'PID': 0, 'Request_num': [1, 0, 0]} # Process_name:发出该请求的经进程PID,Request_num:请求的各类资源数量 安全# 各进程已分配(持有)的资源数量矩阵Allocation = [[0, 0, 0],[4, 1, 2],[1, 0, 1]]# 进程需要的最大资源数量Max = [[5, 3, 2],[7, 3, 4],[3, 0, 2]]# 当前系统可分配资源矩阵(动态计算)Available = []for rId in range(Resources_num):Allocation_sum = 0for pId in range(Process_num):Allocation_sum += Allocation[pId][rId]Available.append(Resources_All[rId] - Allocation_sum)# 各进程还需要的各资源数量矩阵(动态计算)Need = []for pId in range(Process_num):need = []for rId in range(Resources_num):need.append(Max[pId][rId] - Allocation[pId][rId])Need.append(need)# 调用银行家算法BankersAlgorithm(Process_num, Resources_num, Request, Max, Available, Allocation, Need)sequence = security_check(Process_num, Resources_num, Request, Available, Allocation, Need)# 检查得到的进程序列是否包含了全部进程,如果包含全部进程则是一个安全序列,否则不是安全序列if len(sequence) == Process_num:print(f'系统安全,允许分配请求。存在安全序列:{sequence}')else:print('不存在安全序列,系统不安全。驳回分配请求!!!')
相关文章:

银行家算法(Python实现)
银行家算法,以及安全检测算法: import copy# 银行家算法(资源分配合法性) def BankersAlgorithm(Process_num, Resources_num, Request, Max, Available, Allocation, Need):PID Request[PID] # 获取发起请求的进程ID# Step1.如…...

安装终端 ·Terminator
安装终端 在 ROS 中,需要频繁的使用到终端,且可能需要同时开启多个窗口,推荐一款较为好用的终端:**Terminator。**效果如下: 1.安装 sudo apt install terminator2.添加到收藏夹 显示应用程序 —> 搜索 terminator —> 右击 选择 添…...

【Python文件操作的其他例子】
A.Python文件操作的其他例子 当然,以下是一些Python文件操作的其他例子: 1. 读取文件内容: with open(example.txt, r) as f:content f.read()print(content)这个例子会打开名为’example.txt’的文件,读取其内容,…...

使用Terraform管理已经存在的kubernates和默认的节点池
背景: 通过terraform resource "alicloud_cs_managed_kubernetes" "k8s" {...}创建集群时,会产生一个默认的节点池default-nodepool,但是如何去修改这个默认节点池的信息呢? 解决思路: 因为Ter…...

在HTML当中引入Vue控件,以element-ui为例
前情:需要实现一个同时满足按天、按周、按月选择的时间选择器,但是以HTML为基础写的都不太满足我的要求,要么只能按天选择,要么就是想选择久远的时间得点很久,除非自己写捷径,所以就看上了element-ui的这个…...

UE5实现相机水平矫正
UE5实现相机水平矫正 思路,用HIT获得基于相机视角的 离散采样点,然后根据距离相机距离进行权重分析。 距离越近,采样约中心,即越接近人眼注意点,最后算出加权平均高度,赋予给相机,相机将水平旋…...

Word插入Latex语句并编译为数学公式
WPS不可行,正版word可以(垃圾WPS) 选中Latex语句并按下Alt (此处以后补一张图) 该方法不需要额外安装什么插件哦!...

Google Play PolicyBytes 政策更新中文视频 | 2023 年 10 月
Google Play 持续帮助开发者开启成功出海之旅,为用户提供安全优质的应用。也感谢大家与我们携手合作,继续努力将 Google Play 打造为一个安全可信赖的平台。欢迎您观看 Google Play PolicyBytes 中文视频了解 2023 年 10 月政策更新内容,更及…...

pytorch-fastrcnn识别王者荣耀敌方英雄血条
文章目录 前言效果如下实现训练数据获得训练数据和测试数据yaml文件训练py画框文件的修改py测试py升级 前言 最近看王者荣耀视频看到了一个别人提供的一个百里自动设计解决方案,使用一个外设放在百里的二技能上,然后拖动外设在屏幕上滑动,当外设检测到有敌方英雄时外设自动松开…...

阿里云推出通义千问App,提供全方位的协助
🦉 AI新闻 🚀 阿里云推出通义千问App,提供全方位的协助 摘要:阿里云旗下大模型通义千问App登陆各大安卓应用市场,具有超大规模预训练模型,可在创意文案、办公助理、学习助手、趣味生活等方面协助用户。功…...

深入解析 Spring Framework 中 @Autowired 注解的实现原理
关于Autowired注解的作用 Autowired 注解在Spring中的作用是实现依赖注入(Dependency Injection),它用于自动装配(autowiring)Spring Bean 的依赖关系。具体来说, Autowired 注解有以下作用: …...

电脑数据文件恢复工具easyrecovery14中文版
当不小心将回收站的文件删除了怎么办?想找回但是不知道怎么找回需要的数据文件?别担心今天小编就为大家介绍一款非常专业的电脑数据文件恢复工具,easyrecovery14是由Ontrack专为电脑用户推出的一款专业的数据恢复软件,这款软件功能…...

Android NDK开发详解之Application.mk探秘
Android NDK开发详解之Application.mk探秘 概览变量APP_ASFLAGSAPP_ASMFLAGSAPP_BUILD_SCRIPTAPP_CFLAGSAPP_CLANG_TIDYAPP_CLANG_TIDY_FLAGSAPP_CONLYFLAGSAPP_CPPFLAGSAPP_CXXFLAGSAPP_DEBUGAPP_LDFLAGSAPP_MANIFESTAPP_MODULESAPP_OPTIMAPP_PLATFORMAPP_PROJECT_PATHAPP_STL…...

(草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
子窗口向主窗口发射信号。 只需要插入两行代码 class CodeSettingWindow(Ui_CodeSetting, QMainWindow):_signal pyqtSignal(int, int, int) # 这个信号要放在class之下,———init————函数上def __init__(self):# self.Win_X, self.Win_Y, self.CodeNum表示…...

Golang Web3钱包开发指南
简介 以太坊(Ethereum)是目前最受欢迎的区块链平台之一,它提供了智能合约功能和去中心化应用(DApps)的开发能力。在以太坊生态系统中,Web3钱包扮演着关键角色,允许用户管理账户和密钥、发送交易…...

Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库
Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库 Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库安装 IndexDB类库引入 localForage测试 新增数据、获取数据 Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库 大部分场景使用 LocalStore都…...

CentOS 安装 Hadoop Local (Standalone) Mode 单机模式
CentOS 安装 Hadoop Local (Standalone) Mode 单机模式 Hadoop Local (Standalone) Mode 单机模式 1. 修改yum源 并升级内核和软件 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repoyum clean allyum makecacheyum -y update2. 安…...

jenkins工具系列 —— 删除Jenkins JOB后清理workspace
文章目录 问题现象分析解决思路脚本实现问题现象分析 Jenkins使用过程中,占用空间最大的两个位置: 1 、workspace: 工作空间,可以随便删除,删除后再次构建时间可能会比较长,因为要重新获取一些资源。 2 、job: 存放的是项目的配置、构建结果、日志等。不建议手动删除,…...

超越人眼,好用的OCR软件推荐
OCR技术(Optical Character Recognition)是一种将图像或扫描的文字转化为可编辑、搜索、存储、分享的文本的技术。OCR技术除了能够将纸质文档数字化,还可以将手写文本、印刷文本、数码照片中的文字等转化为电子文本。 以下是几个比较知名的O…...

Go语言开发网站
引言 随着互联网的迅速发展,网站已经成为人们获取各种信息和服务的主要途径。而开发一个高性能、可扩展的网站是一项挑战。Go语言作为一门现代化的编程语言,具有强大的并发能力和高效的性能,逐渐成为网站开发的首选语言之一。本文将介绍如何…...

第18章_MySQL8其它新特性
第18章_MySQL8其它新特性 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. MySQL8新特性概述 MySQL从5.7版本直接跳跃发布了8.0版本,可见这是一个令人兴奋的里程碑版本。MySQL 8版…...

Python爬虫实战(六)——使用代理IP批量下载高清小姐姐图片(附上完整源码)
文章目录 一、爬取目标二、实现效果三、准备工作四、代理IP4.1 代理IP是什么?4.2 代理IP的好处?4.3 获取代理IP4.4 Python获取代理IP 五、代理实战5.1 导入模块5.2 设置翻页5.3 获取图片链接5.4 下载图片5.5 调用主函数5.6 完整源码5.7 免费代理不够用怎…...

【操作系统】考研真题攻克与重点知识点剖析 - 第 1 篇:操作系统概述
前言 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术…...

Mac删除照片快捷键ctrl加什么 Mac电脑如何批量删除照片
Mac电脑是很多人喜欢使用的电脑,它有着优美的设计、高效的性能和丰富的功能。如果你的Mac电脑上存储了很多不需要的照片,那么你可能会想要删除它们,以节省空间和提高速度。那么,Mac删除照片快捷键ctrl加什么呢?Mac电脑…...

数据安全认证:保护您的数据安全的关键步骤
随着信息技术的飞速发展,数据安全问题日益凸显。数据泄露、网络攻击等事件频发,给企业和个人带来极大的损失。因此,数据安全认证成为保护数据安全的重要措施。本文将探讨数据安全认证的重要性、认证流程和相关标准,以期帮助读者更…...

表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
🧸欢迎来到dream_ready的博客,📜相信你对这篇博客也感兴趣o (ˉ▽ˉ;) 用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程 目录 项目前端页面展…...

【海德教育】报考建筑八大员需要满足下列条件:
1 、初级(具备以下条塌氏件之一) ( 1 )本专业或相关专业中专以上学历竖陆。 ( 2 )从事本职业工作 2 年以上。 2 、中级(具备以下条件之一) ( 1 )本专业或相关专业大专以上学历。 ( 2 )连续从事本职业工作 4 年以上。 ( 3 )取得余衫顷本职业初级证书,从事本职业工作 …...

酷开科技,让家庭更有温度!
生活中总有一些瞬间,会让我们感到无比温暖和幸福。一个拥抱、一句问候、一杯热茶,都能让我们感受到家庭的温馨和关爱。酷开科技也用自己的方式为我们带来了独属于科技的温暖,通过全新的体验将消费者带进一个充满惊喜的世界,让消费…...

九州未来入选“2023边缘计算产业图谱”三大细分领域
10月26日,边缘计算社区正式发布《2023边缘计算产业图谱》,九州未来凭借深厚的技术积累、优秀的产品服务、完善的产品解决方案体系以及开源贡献,实力入选图谱——边缘计算平台、边缘计算开源、边缘云服务提供商三大细分领域,充分彰…...

centos ubantu IP一直变化,远程连接不上问题
文章目录 一、为什么IP地址会变1.主机DHCP导致 二、解决IP地址变化1.centos2.ubantu 总结 虚拟机能连接为互联网,但下一次启动IP地址再发生变化,无法使用ssh远程连接 一、为什么IP地址会变 1.主机DHCP导致 虚拟机系统(ubantu,centos…)启动后会向本地申请IP地址租约,租聘的I…...