c++银行家算法
#include <iostream> #include<string> #define False 0 #define True 1 using namespace std; ] = { }; //系统->拥有资源 ][] = { }; //进程->共需要 ][] = { }; //进程->已得到 ][] = { }; //进程->还需要 ] = { }; //模拟->系统->拥有资源 //int Request[100] = { 0 }; //进程->请求资源 0.0貌似后来没用到 ] = { }; //资源名称。界面使用 ] = { }; //存放安全序列 ; //进程的最大数为 ; //资源的最大数为 void showdata(); //显示资源矩阵 int safe(); //安全性算法 int main()//主函数 { , m, n, flag; char ming; //------------------------------------------------------------->>>>>>>> 【界面】 >>> cout << "\t*-----------------------------------------------------*" << endl; cout << "\t|| ||" << endl; cout << "\t|| 银行家算法实现 ||" << endl; cout << "\t|| ||" << endl; cout << "\t|| 张金棒 ||" << endl; cout << "\t|| ||" << endl; cout << "\t|| 2016.06.29 ||" << endl; cout << "\t|| ||" << endl; cout << "\t*-----------------------------------------------------*" << endl; //------------------------------------------------------------->>>>>>>> 【初始化】 >>> cout << "请先输入系统可供资源种类的数量:"; cin >> n; N = n; ; i < n; i++) { cout << << "的名称:"; cin >> ming; name[i] = ming; cout << "资源的数量:"; cin >> number; Avaliable[i] = number; } cout << endl; cout << "请输入作业的数量"; cin >> m; M = m; cout << "请输入各进程的最大需求量(" << m << "*" << n << "矩阵)[Max]:" << endl; ; i < m; i++) ; j < n; j++) cin >> Max[i][j]; do { flag = ; cout << "请输入各进程已经申请的资源量(" << m << "*" << n << "矩阵)[Allocation]:" << endl; ; i < m; i++) ; j < n; j++) { cin >> Allocation[i][j]; ; Need[i][j] = Max[i][j] - Allocation[i][j]; Avaliable[j] = Avaliable[j] - Allocation[i][j]; } if (flag) cout << "申请的资源大于最大需求值,请重新输入!\n"; } while (flag); showdata();//显示各种资源 safe();//用银行家算法判定系统是否安全 system("pause"); ; } //------------------------------------------------------------->>>>>>>> 【界面·显示资源矩阵】 >>> void showdata() { int i, j; cout << "系统当前可用资源[Avaliable]:" << endl; ; i < N; i++) cout << name[i] << " "; cout << endl; ; j < N; j++) cout << Avaliable[j]<<" "; cout << endl; cout << " Max Allocation Need" << endl; cout << "process "; ; j < ; j++) { ; i < N; i++) cout << name[i] << " "; cout << " "; } cout << endl; ; i < M; i++) { cout << " " << i << " "; ; j < N; j++) cout << Max[i][j] << " "; cout << " "; ; j < N; j++) cout << Allocation[i][j] << " "; cout << " "; ; j < N; j++) cout << Need[i][j] << " "; cout << endl; } } //------------------------------------------------------------->>>>>>>> 【银行家算法】 >>> int safe() { , m, apply, Finish[] = { }; //apply [应用,使用] int j; ; i < N; i++) { Work[i] = Avaliable[i]; } ; i < M; i++)//------------------------------------->>>>>>>>>>选定进程 i { apply = ; ; j < N; j++)//--------------------------------->>>>>>>>>>选定资源 j { if (Finish[i] == False&&Need[i][j] <= Work[j])//------>>>>>>>>>>第i个进程j类所需资源小于系统拥有的资源 { apply++; if (apply == N)//--------------------------------->>>>>>>>>>当i进程各类资源都满足后 { ; m < N; m++) Work[m] = Work[m] + Allocation[i][m];//--->>>>>>>>>>分配其资源使其运行结束然后回收资源 Finish[i] = True;//--------------------------->>>>>>>>>>i进程执行完毕 temp[k] = i;//-------------------------------->>>>>>>>>>写入进程号到序列中 i = -;//------------------------------------->>>>>>>>>>检查前面的是否有可满足的 k++;//---------------------------------------->>>>>>>>>>准备好写下一个安全序列项 } } } } ; i < M; i++) { if (Finish[i] == False) { cout << "系统不安全" << endl;//不成功 系统不安全 ; } } cout << "系统是安全的!" << endl;//如果安全,输出成功 cout << "分配的序列:"; ; i < M; i++) //输出运行进程的数组 { cout << temp[i]; ) cout << "->"; } cout << endl; ; }
c++银行家算法的更多相关文章
- c/c++多线程模拟系统资源分配(并通过银行家算法避免死锁产生)
银行家算法数据结构 (1)可利用资源向量Available 是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目.如果Available[j]=K,则表示系统中现有Rj类资源K个. (2) ...
- Round() 四舍五入 js银行家算法(转)
首先问一下round(0.825,2) 返回的结果,大家猜一猜, 首先SQL server 返回的是 0.83 js的返回结果 是0.83,code 如下: var b = 0.825; ...
- 银行家算法java实现
关于银行家算法的理论知识,课本或者百度上有好多资料,我就不再多说了,这里把我最近写的银行家算法的实现带码贴出来. 由于这是我们的一个实验,对系统资源数和进程数都指定了,所以这里也将其指定了,其中系统资 ...
- 操作系统,银行家算法模拟实现(Windows 环境 C++)
计算机操作系统课设需要,写了两个下午的银行家算法(陷在bug里出不来耽误了很多时间),参考计算机操作系统(汤子瀛) 实现过程中不涉及难度较大的算法,仅根据银行家算法的思想和步骤进行实现.以下为详细步骤 ...
- 银行家算法C++程序
此程序在Windows10 CodeBlocks17.12环境下测试运行,其他编程环境未经测试! 作业需求↓↓↓↓↓↓ 运行效果图如下 (codeblocks下载地址http://www.cod ...
- python模拟银行家算法
前言: 大二第一学期学习了操作系统,期末实验课题要求模拟算法.遂根据自己学习的python写下此文.以此锻炼自己编码能力.虽说是重复造轮子,但还是自己的思路体现 代码及注释如下(银行家算法不再赘述): ...
- 预防和避免死锁的方法及银行家算法的java简单实现
预防死锁 (1) 摒弃"请求和保持"条件 基本思想:规定所有进程在开始运行之前,要么获得所需的所有资源,要么一个都不分配给它,直到所需资源全部满足才一次性分配给它. 优点:简单.易 ...
- Round() 四舍五入 js银行家算法
首先问一下round(0.825,2) 返回的结果,大家猜一猜, 首先SQL server 返回的是 0.83 js的返回结果 是0.83,code 如下: var b = 0.825; ...
- C程序模拟实现银行家算法
C程序模拟实现银行家算法 上周又做操作系统实验,题目是用程序模拟实现银行家算法,写了半天还真有点晕,主要是因为想尽可能符合课本上的描述,所以写出来的程序就比较恶心了,好了,银行家算法就不多说了,不了解 ...
随机推荐
- spark2.1:在RDD[unit].foreach(s=>{})内部调用sparkSession对象抛出NullPointException
问题代码: val sample_data_combine_result=List( (0,(List(FitModel(4022,1447.92,-8.38983306721434,2.0),Fit ...
- Django:(博客系统)使用使用mysql数据->后台管理tag/post/category的配置
Django后台一般是不需要人为的去开发的,因为django已经通过配置实现哪些模块是后台需要管理,如何排序,列表展示哪些列,列显示名称,是否为空(默认值),过滤条件,分页页数,列表中哪些项可编辑等等 ...
- 【转】Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的 ...
- [python]_ELVE_pip2和pip3如何共存
作者:匿名用户链接:https://www.zhihu.com/question/21653286/answer/95532074来源:知乎著作权归作者所有,转载请联系作者获得授权. 想学习Pytho ...
- [项目推荐] Corcel 让你在 WordPress 中使用 Laravel
你想过可以在 WordPress 中使用 Laravel 或者任意一种 PHP 框架吗? Corcel 可以帮你实现! 开发网站应用就应该是快捷并有趣的.当然了,每个应用都会有它自己的需求和生命周期. ...
- 使用YOLOv2进行图像检测
基本配置信息 tensorflow (1.4.0) tensorflow-tensorboard (0.4.0) Keras (2.1.5) Python (3.6.0) Anaconda 4.3.1 ...
- Headless Chrome:服务端渲染JS站点的一个方案【中篇】【翻译】
接上篇 防止重新渲染 其实说不对客户端代码做任何修改是忽悠人的.在我们的Express 应用中,通过Puppteer加载页面,提供给客户端响应,但是这个过程是有一些问题的. js脚本在服务端的Head ...
- 实验吧_NSCTF web200&FALSE(代码审计)
挺简单的一个代码审计,这里只要倒序解密就行了,这里给一下python版的wp import codecs import base64 strs = 'a1zLbgQsCESEIqRLwuQAyMwLy ...
- 深入探索.NET框架内部了解CLR如何创建运行时对象
原文地址:http://msdn.microsoft.com/en-us/magazine/cc163791.aspx 原文发布日期: 9/19/2005 原文已经被 Microsoft 删除了,收集 ...
- javascript的基础(2)--数据类型介绍
1. number数据类型 所有的数字都是Number数据类型 利用typeof运算符可以返回当前数据的数据类型 特殊值:NaN not a number 不是一个数字 注意 :小数的计算可能产生丢失 ...