银行家算法(自己写的)_第1页
银行家算法(自己写的)_第2页
银行家算法(自己写的)_第3页
银行家算法(自己写的)_第4页
银行家算法(自己写的)_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

23 实验时间 2011 10 27 E10914123 崔平平 银行家算法算法 代码 运行结果 include include include define a 10 define b 10 银行家算法中的数据结构 int Available a 各资源可利用的数量 int Max b b 各进程对各类资源的最大需求数 int Allocation b b 各进程当前已分配的资源数量 int Need b b 尚需多少资源 int Request a 申请多少资源 int Work a 工作向量 表示系统可提供给进程继续运行所需的各类资源数量 int Finish b 表示系统是否有足够的资源分配给进程 1 为是 函数声明 void init 创建进程 资源种类与分配等 初始化函数 int banker 银行家分配算法 void safe 判断算法的安全性 过程中定义的全局变量 int i j x y l counter 0 int p 记录是哪个进程正在申请资源 int q b 存储安全序列 23 创建进程 void init 初始化 printf 输入当前进程量 n scanf d printf 输入资源的种类数目 n scanf d printf 输入各种资源当前可用的数量 n for i 0 i y i printf 请输入资源 d 的资源可利用量 n i scanf d Work i Available i 初始化 Work i 它的初始值就是当前可用的资源数 printf 请输入每个进程申请到的资源 n for j 0 j x j for i 0 i y i printf 请输入进程 d 的申请到的资源 d n j i scanf d Finish j 0 初始化 Finish j printf 请输入每个进程需要的最大的资源数目 n for j 0 j x j for i 0 i Allocation j i 根据 需求量 需要最大资源数目 已分配数目 计算需求量 need Need j i Max j i Allocation j i else Need j i 0 资源充足 不需要再申请 23 printf 初始化完成 n 安全性算法函数 void safe l 0 for j 0 j y j if Finish j 0 逐个查找 Finish j 0 的进程 条件一 counter 0 记数器 for i 0 i Need j i counter counter 1 可用大于需求 记数 if counter x i 进程的每类资源都符合 Work i Need j i 条件二 q l j 存储安全序列 Finish j 1 i 进程标志为可分配 for i 0 i x i Work i Work i Allocation j i 释放资源 l l 1 记数 现在有 L 个进程是安全的 当 L N 时说明满足安全序列 j 1 从第一个进程开始继续寻找满足条件一二的进程 银行家算法 int banker 银行家分配算法 printf 请输入请求资源的进程 n scanf d printf n 请输入此进程请求各种资源的个数 n for i 0 iNeed p i 申请量不能超过需求量 printf 申请量超过需求量出错 请重新输入 n 23 else if Request i Available i printf 资源不充足 目前可用资源只有 d 进程要等待 Available i Finish p 0 该进程等待 return 0 while Request i Need p i Request i Available i for i 0 i x i Available i Available i Request i Allocation p i Allocation p i Request i Need p i Need p i Request i Work i Available i 改变 Avilable Allocation Need 的值 判断银行家算法的安全性 if l x l 0 printf 试分配不成功 不与分配 恢复原状态 for i 0 i x i Available i Available i Request i Allocation p i Allocation p i Request i Need p i Need p i Request i Work i Available i for j 0 j y j Finish j 0 进程置为未分配状态 else l 0 printf n 申请资源成功 n for i 0 i x i if Need p i 0 else 有一种资源还没全部申请到 该进程还处于就绪态 l 1 判断标志 break 23 if l 1 进程可以执行 释放该进程的所有资源 for i 0 i x i Available i Available i Allocation p i Allocation p i 0 printf 有需求资源 执行后将释放其所有拥有资源 l 0 归零 printf 安全序列为 n printf 进程 d q 0 输出安全序列 考虑显示格式 先输出第一个 Finish 0 0 for i 1 i y i printf 进程 d q i Finish i 0 重新将所有进程置为未分配状态 printf n n n return 0 void main printf n n printf n 银行家算法模拟 n printf n n init safe 判断当前状态的安全性 if l y printf 找不到安全序列 拒绝申请 n else

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论