




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上操作系统实验三:银行家算法的实现一、 基本信息:a) 实验题目:银行家算法的实现b) 完成人姓名:韩璐璐c) 学号:d) 报告日期:2016.5.27二、 实验目的通过实验,加深对多实例资源分配系统中死锁避免方法银行家算法的理解,掌握Windows环境下银行家算法的实现方法,同时巩固利用Windows API进行共享数据互斥访问和多线程编程的方法。三、 实验内容1. 在Windows操作系统上,利用Win32 API编写多线程应用程序实现银行家算法。2. 创建n个线程来申请或释放资源,只有保证系统安全,才会批准资源申请。3. 通过Win32 API提供的信号量机制,实
2、现共享数据的并发访问。四、程序运行时的初值和运行结果(系统截图)五、源程序并附上注释#include <iostream>#include <time.h>#include <vector>#include <windows.h>using namespace std;int r3 = 3, 3, 2 ;/系统拥有的资源int r0 = 0, r1 = 0, r2 = 0;/记录申请资源class pcbpublic:int id;bool state;int max3;int alc3;int need3;pcb()void init()sta
3、te = false;cout << "请输入进程的id,各个资源总需求量和已占用资源" << endl;cin >> id;cout << "a,b,c三种资源的最大使用量" << endl;cin >> max0 >> max1 >> max2;cout << "a,b,c三种资源的已占有量" << endl;cin >> alc0 >> alc1 >> alc2;int rd
4、(int n)return rand() % (n + 1);int request()/Sleep(1000);r0 = rd(max0 - alc0);r1 = rd(max1 - alc1);r2 = rd(max2 - alc2);cout << "进程" << id << "申请资源a" << " " << r0 << " 申请资源b" << " " << r1 << "
5、; 申请资源c" << " " << r2 << endl;if (r0>r0 | r1>r1 | r2>r2)cout << "没有那么多资源!" << endl;return 0;if (r0 = (max0 - alc0) && r1 = (max1 - alc1) && r2 = (max2 - alc2)r0 = r0 + alc0;r1 = r1 + alc1;r2 = r2 + alc2;return 1;return 2
6、;bool safe(vector <pcb> temp, int i)int u = r0 - r0, k = r1 - r1, l = r2 - r2;for (int j = i; j<temp.size() - 1; j+)tempj = tempj + 1;temp.pop_back();int size = temp.size();/记录下容器内还有多少个进程/int rangesize;/记录下队列int x = 0;/计数器while (!temp.empty()static int j = 0;if (tempj.max0 - tempj.alc0) <
7、;= u && (tempj.max1 - tempj.alc1) <= k &&(tempj.max2 - tempj.alc2) <= l)/判断是否能运行完cout << "运行" << tempj.id << endl;u = u + tempj.alc0;k = k + tempj.alc1;l = l + tempj.alc2;for (int e = j; e<temp.size() - 1; e+)tempe = tempe + 1;temp.pop_back();if (
8、j >= temp.size()j = 0;elsej+;if (j >= temp.size()j = 0;x+;if (x = (size*size)cout << "没有安全队列,以上情况不成立" << endl;cout << endl;return false;return true;int main()srand(time(0);pcb p4;vector <pcb> vp;for (int i = 0; i<4; i+)pi.init();vp.push_back(pi);int x = 0;/
9、计算器int c;cout << "请选择分配资源方法:1.银行家算法 2.随机算法" << endl;cin >> c;switch (c)case 1:while (!vp.empty()int a;static int i = 0;if (a = vpi.request() != 0)if (a = 1)cout << "进程" << vpi.id << "已经结束" << endl;for (int j = i; j<vp.size()
10、- 1; j+)vpj = vpj + 1;vp.pop_back();if (i >= vp.size()i = 0;cout << "a资源还剩" << r0 << " b资源还剩" << r1 << " c资源还剩" << r2 << endl;cout << endl;elseif (safe(vp, i)cout << "存在安全队列" << endl;cout <<
11、endl;vpi.alc0 = vpi.alc0 + r0;vpi.alc1 = vpi.alc1 + r1;vpi.alc2 = vpi.alc2 + r2;r0 = r0 - r0;r1 = r1 - r1;r2 = r2 - r2;cout << "a资源还剩" << r0 << " b资源还剩" << r1 << " c资源还剩" << r2 << endl;cout << endl;i+;if (i >= vp.size()
12、i = 0;elsei+;if (i >= vp.size()i = 0;x+;if (x >= 200)cout << "初始化的表不安全" << endl;return 0;cout << "进程已经全部结束" << endl;break;case 2:while (!vp.empty()int a2;static int i2 = 0;if (a2 = vpi2.request() != 0)if (a2 = 1)cout << "进程" <<
13、vpi2.id << "已经结束" << endl;for (int j = i2; j<vp.size() - 1; j+)vpj = vpj + 1;vp.pop_back();if (i2 >= vp.size()i2 = 0;cout << "a资源还剩" << r0 << " b资源还剩" << r1 << " c资源还剩" << r2 << endl;cout << end
14、l;elsevpi2.alc0 = vpi2.alc0 + r0;vpi2.alc1 = vpi2.alc1 + r1;vpi2.alc2 = vpi2.alc2 + r2;r0 = r0 - r0;r1 = r1 - r1;r2 = r2 - r2;cout << "a资源还剩" << r0 << " b资源还剩" << r1 << " c资源还剩" << r2 << endl;cout << endl;i2+;if (i2 >= vp.size()i2 = 0;elsei2+;if (i2 >= vp.size()i2 = 0;x+;if (x >= 200)cout << "产生死锁" << endl;return 0;cout << "进程已经全部结束" << endl;b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国特种养殖行业深度发展研究与“”企业投资战略规划报告
- 2025-2030中国物流行业市场现状供需分析及投资评估规划分析研究报告
- 临床工程师试题及答案
- 2024年医学基础知识考试结构观察试题及答案
- 2025-2030中国热转印收据打印机行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国漱口液行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国液压破碎机系统行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国液体铵和液体硫代硫酸钾行业市场现状供需分析及投资评估规划分析研究报告
- 湖北省孝感市文昌中学2024-2025学年高考冲刺物理模拟试题含解析
- 2025-2030中国活性药物成分行业市场发展趋势与前景展望战略研究报告
- 联通数字化转型的一书一表
- 高一离子方程式书写专题训练及答案
- 劳务报酬个税计算表,正算反算都可以
- 张元鹏《微观经济学》(中级教程)笔记和课后习题详解
- 如何有效管理90-00后新员工技巧方法-123课件
- 第十三讲 全面贯彻落实总体国家安全观PPT习概论2023优化版教学课件
- 建筑施工安全风险辨识分级管控(台账)清单
- 人教版语文能力层级-·-教材-·-中考
- 2017年一点点奶茶技术配方
- 中山大学PPT模板-中山大学01
- 2022年湖北省高中学业水平考试真题-音乐学科
评论
0/150
提交评论