没有合适的资源?快使用搜索试试~ 我知道了~
银行家算法的模拟与实现.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 146 浏览量
2022-05-30
22:28:05
上传
评论
收藏 235KB DOCX 举报
温馨提示
试读
13页
银行家算法的模拟与实现.docx
资源推荐
资源详情
资源评论
实验四 银行家算法的模拟与实现
1、实验目的
(1) 进一步了解进程的并发执行。
(2) 加强对进程死锁的理解。
(3) 掌握使用银行家算法避免死锁问题。
2、实验内容
本实验的内容是要通过编写和调试一个模拟系统动态分配资源的银行家算法程
序,有效地防止和避免死锁发生。具体要求如下:
( 1) 初始化时让系统拥有一定的资源;
( 2) 用键盘输入的方式允许进程动态申请资源;
( 3) 如果预分配后,系统处于安全状态,则修改系统的资源分配情况,正式
分配资源;
( 4) 如果预分配后,系统处于不安全状态,则提示不能满足请求,恢复原状
态。
银行家算法. 顾名思义是来源于银行的借贷业务,一定数量的本金要应多个客
户的借贷周转,为了防止银行加资金无法周转而倒闭,对每一笔贷款,必须考
察其是否能限期归还。在操作系统中研究资源分配策略时也有类似问题,系统
中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间
内归还资源,以供其他进程使用资源。如果资源分配不当,就会发生进程循环
等待资源,则进程都无法继续执行下去的死锁现象。把一个进程需要和已占有
资源的情况记录在进程控制中,假定进程控制块 PCB 其中“状态”有就绪态、等
待态和完成态。当进程在处于等待态时,表示系统不能满足该进程当前的资源
初始化函数 init_data() 开始
输入进程序号
输入该进程申请的
资源
输入出错提示语:“请求资
源超过需求资源”和“进程
[i] 请求资源超过可利用资
源用资源”和“进程号非法
( 越界 )” 等
F
T
进程执行成功,资源重置
进程是否全部执行结束
结束
F
T
申请。“资源需求总量”表示进程在整个执行过程中总共要申请的资源量。显然 ,
每个进程的资源需求总量不能超过系统拥有的资源总数,
3、 银行家算法中的数据结构与流程图
4、 银行家算法编程实现
#include<stdio.h>
#include<stdlib.h>
#ifndef MY_MAX
#dene MY_MAX 5
#endif
//最大分配需求矩阵
int max1[5][3]={{7,5,3},
{3,2,2},
{9,0,2},
{2,2,2},
{4,3,3}
};
//已分配矩阵
int allocation1[5][3]={ {0,1,0},
{2,0,0},
{3,0,2},
{2,1,1},
{0,0,2}
};
//现在需求矩阵
int need1[5][3]={{7,4,3},
{1,2,2},
{6,0,0},
{0,1,1},
{4,3,1}
};
//现可利用矩阵
int available1[3]={3,3,2};
int max[10][10],allocation[10][10],need[10]
[10],available[10];
int n_proc; //进程数
int type_src; //资源种类数
int request[10][10]; //进程请求资源
int work[10]; //可供进程继续运行所需资源的向量
int nish[10]; //标识是否有足够的资源分配给进程
int index[10]; //用于记录进程顺序
int t=0; //记录当前的进程数
int serial_proc=0; //当前请求进程
/*************************************************/
剩余12页未读,继续阅读
资源评论
oligaga
- 粉丝: 50
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功