计算机专业操作系统+银行家算法详解.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
计算机专业操作系统+银行家算法详解 计算机专业操作系统中,银行家算法是一种最有代表性的防止死锁的算法。要解释银行家算法,必须先解释操作系统平安状态和不平安状态。 平安状态是指系统中所有进程构成的平安序列 P1,…,Pn,那么系统处于平安状态。在这种状态下,系统一定是没有死锁的。平安序列是指一个进程序列{P1,…,Pn},它满足对于每一个进程 Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程 Pj(j < i)当前占有资源量之和。 不平安状态是指不存在一个平安序列。在这种状态下,系统一定会导致死锁。 银行家算法的工作原理是将操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源。 当进程首次申请资源时,操作系统要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量那么按当前的申请量分配资源,否则就推迟分配。 当进程在执行中继续申请资源时,操作系统先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。如果超过那么拒绝分配资源,否则再测试系统现存的资源能否满足该进程尚需的最大资源量。如果能满足那么按当前的申请量分配资源,否则也要推迟分配。 银行家算法的数据结构包括: * Available:ARRAY[1..m] of integer; // 系统当前剩余资源量 * Max:ARRAY[1..n,1..m] of integer; // 进程对资源的最大需求量 * Allocation:ARRAY[1..n,1..m] of integer; // 进程当前占有资源量 * Need:ARRAY[1..n,1..m] of integer; // 进程尚需的资源量 * Request:ARRAY[1..n,1..m] of integer; // 进程的资源申请量 当进程 pi 提出资源申请时,系统执行以下步骤: 1.假设 Request≤Need,转2;否那么错误返回 2.假设 Request≤Available,转3;否那么进程等待 3.假设系统分配了资源,那么有:Available:=Available-Request; Allocation:=Allocation+Request; Need:=Need-Request 4.假设系统新状态是平安的,那么分配完成 假设系统新状态是不平安的,那么恢复原状态,进程等待 银行家算法的安全性检查步骤: 1.Work:=Available;Finish:=false; 2. 寻找满足条件的 i:a.Finish=false;b.Need≤Work; 如果不存在,那么转4 3.Work:=Work+Allocation;Finish:=true;转2 4.假设对所有 i,Finish=true,那么系统处于平安状态,否那么处于不平安状态 银行家算法是一种防止死锁的算法,它可以有效地避免操作系统中的死锁问题,它的工作原理是将操作系统看作是银行家,进程向操作系统请求分配资源相当于用户向银行家贷款。
- 粉丝: 9
- 资源: 20万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- python爬虫项目练习-教学资料案例
- HomeView.vue
- (4)字符串格式化输入输出
- 微信OpenDevTool-微信小程序强制开发者工具打开-WiChatOpenDevTools Python.zip
- NideShop:基于Node.js+MySQL开发的开源微信小程序商城(微信小程序
- 供应链金融项目的一个小功能
- 微信小程序开发资源总结-100款精彩微信微信.zip
- 本文介绍了计算机图形学中三维观察的基本概念和方法
- 【Unity波数生成插件】Ultimate Spawner 2.0 - Waves Add-On 轻松生成大量对象,敌人
- DIY官网打造微信小程序制作平台 在线可视化制作小程序组件及在线可视化设计小程序数据源能力