Advertisement

银行家算法

阅读量:

一、实验目的:
通过使用高级编程语言开发并调试一个用于模拟系统动态资源分配的程序,掌握死锁产生所依赖的条件及其成因,并借助银行家算法实现对死锁的有效预防,从而进一步加深对课堂所学知识的理解。
二、实验环境:
实现银行家算法的模拟功能:构建一个包含m个进程并共享n种系统资源的模型,各进程能够动态地提出资源申请与释放请求。在系统根据各进程的申请动态分配资源时,运用银行家算法确保不会出现死锁现象。
1.相关理论知识:
(1)银行家算法的核心思想
对每个进程提出的资源请求进行合法性验证;若请求符合规范,则尝试进行资源分配。在尝试分配后,调用安全性检查算法以评估当前系统的状态是否安全。若系统处于安全状态,则批准该请求并完成资源分配;若不安全,则拒绝该请求,并撤销之前尝试分配的状态,保持系统的原有资源配置不变。
(2)银行家算法中涉及的关键数据结构
可利用资源向量 int Available[j] // j表示不同种类的资源。
最大需求矩阵 int Max[i][j] // i代表不同的进程数量。
已分配矩阵 int Allocation[i][j]
剩余需求矩阵 int Need[i][j]= Max[i][j]- Allocation[i][j]
申请数量向量 int Requesti[j] //i表示某个进程申请j类资源的数量

全部评论 (0)

还没有任何评论哟~