操作系统实验银行家算法 操作系统实验银行家算法是操作系统中避免死锁的一种重要方法,本实验要求使用高级语言编写和调试一个简单的银行家算法程序,以实现资源分配和避免死锁。 一、实验目标和要求 * 加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 * 编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用银行家算法,有效的防止和避免死锁的发生。 二、实验设计思路 * 设计进程对各在资源最大申请表示及初值确定。 * 设定系统提供资源初始状态。 * 设定每次某个进程对各类资源的申请表示。 * 编制程序,依据银行家算法,决定其申请是否得到满足。 三、主要数据结构 * MAX[M*N]:M 个进程对 N 类资源的最大需求量 * AVAILABLE[N]:系统可用资源数 * ALLOCATION[M*N]:M 个进程已经得到 N 类资源的资源量 * NEED[M*N]:M 个进程还需要 N 类资源的资源量 四、银行家算法 * 设进程 I 提出请求 Request[N],则银行家算法按如下规则进行判断。 * 如果 Request[N]<=NEED[I,N],则转(2);否则,出错。 * 如果 Request[N]<=AVAILABLE,则转(3);否则,出错。 * 系统试探分配资源,修改相关数据:AVAILABLE=AVAILABLE-REQUEST、ALLOCATION=ALLOCATION+REQUEST、NEED=NEED-REQUEST。 * 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。 五、安全性检查 * 设置两个工作向量 WORK=AVAILABLE;FINISH[M]=FALSE * 从进程集合中找到一个满足下述条件的进程,FINISH[i]=FALSE、NEED<=WORK * 如找到,执行(3);否则,执行(4) * 设进程获得资源,可顺利执行,直至完成,从而释放资源。WORK=WORK+ALLOCATION、FINISH=TRUE、GO TO 2 * 如所有的进程 Finish[M]=true,则表示安全;否则系统不安全。 六、主要代码源程序 * #include <iostream> * using namespace std; * #define MAXPROCESS 50 /*最大进程数*/ * #define MAXRESOURCE 100 /*最大资源数*/ * int AVAILABLE[MAXRESOURCE]; /*可用资源数组*/ * int MAX[MAXPROCESS][MAXRESOURCE]; /*最大需求矩阵*/ * int ALLOCATION[MAXPROCESS][MAXRESOURCE]; /*分配矩阵*/ * int NEED[MAXPROCESS][MAXRESOURCE]; /*需求矩阵*/ * int REQUEST[MAXPROCESS][MAXRESOURCE]; /*进程需要资源数*/ * bool FINISH[MAXPROCESS]; /*系统是否有足够的资源分配*/ * int p[MAXPROCESS]; /*记录序列*/ * int m,n; /*m个进程,n个资源*/ * void Init();bool Safe();void Bank(); * int main(){ Init(); Safe(); Bank();} * void Init() /*初始化算法*/ { int i,j; cout<<"请输入进程的数目:"; cin>>m; cout<<"请输入资源的种类:"; cin>>n; cout<<"请输入每个进程最多所需的各资源数,按照"<<m<<"x"<<n<<"矩阵输入"<<endl; for (...) { ... } } 本实验的设计和实现可以帮助学生更好地理解银行家算法的原理和实现方法,并掌握避免死锁的具体实施方法。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/release/download_crawler_static/87331206/bg1.jpg)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/5aae13958c82419c9c42cd3306ea6ab6_qq_43934844.jpg!1)
- 粉丝: 180
- 资源: 3万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)