银行家算法中安全检查算法正确性证明

符号说明

< :如果两个同维行向量 AB 中,A 中任意一个元素都小于 B 中对应位置上的元素,则 A<B 为真。

<:如果两个同维行向量 AB 中,A 中存在一个元素小于 B 中对应位置上的元素,则 A<B 为真。

=> 等同理。

R0 :系统初始资源向量

Need:如果作业 i 能够被释放,则需要 R0Needi

A :作业当前占有的资源向量,作业 i 释放后,Ai 将累加到资源向量 R0

证明:

​ 设安全性检查算法无法找到合法的安全序列时,已经释放的作业的集合为 W 。此时,系统资源向量 R=R0+WAwi

此时无法找到安全序列,这说明,对于所有剩余未释放的作业 wWWNeedw>R

  • 不可能通过调整 W 中作业释放的顺序改变 R 的值。

因为 W 中的作业的任何一种可能的释放顺序所释放的资源都是 WAwi

  • 不可能改变 W

WW 的一个子集,那么,必有

wiWAwiwiWAwi

因此,RR,释放 W 的任何一个子集都不能把 WW 中的作业某一作业纳入集合,因为 wWW,Needw>RR

​ 因此我们证明了,对于一个给定的状态,如果系统中不存在安全序列,那么一定能被释放的作业的集合 W 和不可能被释放的作业的集合 WW 是确定的,不因为算法的不同而不同。

​ 在安全检查算法中,内层循环遍历所有未释放的作业,发现没有任何一个作业可被释放,就是上述的情况,已经证明了,在这种情况下,判定系统不存在安全序列是正确的。反之不出现上述情况,则系统存在安全序列的判定也是正确的。

posted @   Sarfish  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示