进程管理 -银行家算法(假设系统中有三类互斥资源R1 R2 R3 可用资源分别是9,8,5.在T0时刻系统中有P1,P2,P3,P4和P5五个进程,这些进程对资源的最大需求量和已分配资源数如下所示,)

本文主要是介绍进程管理 -银行家算法(假设系统中有三类互斥资源R1 R2 R3 可用资源分别是9,8,5.在T0时刻系统中有P1,P2,P3,P4和P5五个进程,这些进程对资源的最大需求量和已分配资源数如下所示,),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

银行家算法的目的

解决死锁问题,也就是旧进程资源不释放,新进程得不到资源。

什么是银行家算法

银行家就理解成放贷的人,放贷的人,是需要通过放贷赚钱的,所以他必须准确的把握放出去的钱能不能收回来,因为众所周知,有很多老赖,拖着钱不还,甚至自杀,携款潜逃,所以放贷的人必须确保钱能收回盈利,因为银行家自己的钱也是有限的,他要有资源,给更多对他有利的人放贷。操作系统就是一个银行家,它有很多资源,也有很多进程向他申请资源,所以操作系统必须管控好这些资源,避免造成死锁。

银行家算法的具体规则

1.当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳进该进程
2.进程可以分期请求资源,但请求的总数不能超过最大需求量
3.当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间内得到资源

具体例子:
假设系统中有三类互斥资源R1 R2 R3 可用资源分别是9,8,5.在T0时刻系统中有P1,P2,P3,P4和P5五个进程,这些进程对资源的最大需求量和已分配资源数如下所示,如果进程按 序列执行,那么系统状态是绝对安全。

这个很好算,在图片右侧有已经分配好的资源数,所以我们得先计算,系统还剩下多少资源。
R1: 9-1-2-2-1-1=2
R2: 8-2-1-1-2-1=1
R3: 5-1-1-3=0

而P1还缺 5个R1 3 R2 1R3 A选项排除
P2还缺 1个R2 可先走R2
P4还缺 1个R3 但是R3已经没了 所以D排除

所以先走P2 P2执行完空闲资源变成
R1:4 R2:3 R3:1 此时走P1以及资源不足,所以C排除,答案选B

在这里插入图片描述

这篇关于进程管理 -银行家算法(假设系统中有三类互斥资源R1 R2 R3 可用资源分别是9,8,5.在T0时刻系统中有P1,P2,P3,P4和P5五个进程,这些进程对资源的最大需求量和已分配资源数如下所示,)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288583

相关文章

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.