版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、南华大学计算机科学与技术学院实 验 报 告课程名称操作系统 i姓名学号专业班级任课教师日期一、 实验内容死 的 与解除二、 实验目的掌握操作系 的 程管理与 源分配原理,掌握 操作系 安全性 和死 的解除的原理和方法。三、 实验题目系 中有 m 个同 源被 n个 程共享,每个 程 源的最大需求数分 s1,s2, ,sn ,且 max(si)=m, (i=1,2,n) 。 程可以 地申 源和 放 源。 写一个程序, 行家算法,当系 将 源分配 某一 程而不会死 ,就分配之。否 ,推 分配,并 示适当的信息。分 使用 “ 程 源循 等待 ”的方法和coffman的算法来 程的死 状 。 于相同的
2、程 源分配、占用次序,比 两个算法的 果。四、设计思路和流程图1. 入系 程数量 n 和 源 型数量 m。2. 入每 源的数量。3. 入每个 程每 源的最大需求量和已 源量。4. 系 的安全。5. 若 果 系 不安全,可以 死 行解除,直到安全 止再 。6. 重复 5 操作,直到所有 程运行完 。五、 主要数据结构及其说明int max100100=0; /各进程所需各类资源的最大需求 ;int available100=0; /系统可用资源 ;char name100=0; /资源的名称 ;int allocation100100=0; /系统已分配资源 ;int need100100=0;
3、 /还需要资源int request100=0; /请求资源向量 ;int temp100=0; /存放安全序列 ;int work100=0; /存放系统可提供资源 ;bool finish100=0;/存放已完成的序列六、 源程序并附上注释#include stdafx.h#include#define false 0#define true 1using namespace std;int max100100=0; /各进程所需各类资源的最大需求;int available100=0; /系统可用资源 ;char name100=0; /资源的名称 ;int allocation1001
4、00=0; /系统已分配资源 ;int need100100=0; /还需要资源int request100=0; /请求资源向量 ;int temp100=0; /存放安全序列 ;int work100=0; /存放系统可提供资源 ;bool finish100=0;int m=100; /作业的最大数int n=100; /资源的最大数int l=0;/记录安全进程的temp下标void showdata()/初始化资源矩阵int i,j;cout系统可用资源available:endl;for(i=0;in;i+)coutnamei;coutendl;for(j=0;jn;j+)cout
5、availablej ;/显示可分配的资源coutendl;coutmaxallocationneedendl;cout进程名;for (j=0;j3;j+)/max allocation need共列for (i=0;in;i+)coutnamei ;cout; coutendl;for(i=0;im;i+)cout i;/for(j=0;jn;j+)coutmaxij ;/cout;for(j=0;jn;j+)coutallocationij ;/cout;for(j=0;jn;j+)coutneedij ;/coutendl;输出进程名输出最大输出已分配输出需求bool safe() /
6、安全性算法int i,j,k;for(i=0;in;i+)worki=availablei;/初始化工作向量for(i=0;im;i+)finishi=false;/判断进程i 是否已执行for(i=0;im;i+)if(finishi=true)continue; elsefor(j=0;jworkj)break;if(j=n)/若 need 都小于 workfinishi=true;for(k=0;kn;k+)workk+=allocationik;/进程 i 执行完后回收资源templ+=i;i=-1;elsecontinue;if(l=m)cout系统是安全的 endl;cout安全序
7、列 :endl;for(i=0;il;i+)couttempi;if(i!=l-1)cout;coutendl;return true;for(i=0;im;i+)if(finishi=false)cout 会发生死锁 , 发生死锁的进程是 :i endl; coutendl;return false;void unlock()int i,j;i=0;cout死锁解除开始;coutendl;while(im&finishi=false)/查找未完成的进程for(j=0;jn;j+)availablej+=allocationij;/回 收 该进 程所 有 资源allocationij=0;if
8、(safe()cout 死锁已解除 endl;elsei+;/到下一个进程safe();int main()int i,j,number,m,n,flag;int over;char mc;cout-死锁的检测与解除-;coutendl;coutendl;coutn;n=n;for (i=0;in;i+)cout 资源 i+1mc;namei=mc;cout 资源 i+1number;availablei=number;coutendl;coutendl;coutm;m=m;cout请输入各进程的最大需求量(m*n矩阵 )max:endl;for (int i=0;im;i+)for (int
9、 j=0;jmaxij;doflag=0;cout请输入各进程已经 分配资源量(m*n矩阵 )allocation:endl; for (int i=0;im;i+)for (j=0;jallocationij;if(allocationijmaxij)flag=1;needij=maxij-allocationij;if(flag)coutwhile(flag);/showdata();/首次输入的已分配资源已经大于最大需求量请重新输入当申请资源符合要求时end do显示!n;safe();/if(l!=m)/安全检测当安全进程数不等于所有进程数unlock();cout 运行结束 over;七、 程序运行时的初值和运行结果八、 实验体会通过本次实验,比较完整的掌握了操作系统的进程管理与资源分配原理,以及对操作系统安全性检验和死锁的解除的原理和方法。 一开始,对于死锁的解除,我只是从第一个进程开始剥夺其资源,也不管它是不是发生了死锁,一直剥夺到死锁解除为止。然后,通过对程序进行改进,让其可以判断死锁进程与非死锁进程, 然后从第一个死锁进程开始剥夺已分配资源。到最后,又进一步完善程序,让其判断一下在死锁进程中,哪个的已分配资源最多,就先剥夺它的资源,直到死锁解除。通过以上这几次对程序的改进,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院感染科护理工作计划2篇
- T/CACM 016.26-2026经方临床应用指南 当归四逆汤
- T/CAPEB 00002-2025绿色设计产品评价技术规范 滚筒式包衣机
- 保险公司财务主管述职报告
- 2026年秋招:福建能源石化集团笔试题及答案
- 2026年秋招:东风汽车笔试题及答案
- T/CAR 30-2026铝制换热器原材料技术要求
- T/CAAMTB 183-2023北斗高精度定位小型智能车 第2部分:自动驾驶功能封闭测试场测试方法及要求
- T/CAPE 11008-2025选煤厂瓦斯巡检机器人系统技术要求
- 陕西省安康市汉滨区七校联考2025-2026学年高一下学期期末质量检测数学试卷(含答案)
- 虚拟电厂接入侧电能计量管理规范
- 2026年西餐厅行业分析报告及未来发展趋势报告
- 医院工程验收方案
- ECMO患者的营养支持策略
- 2026年文综卷中考试卷及答案
- 2026年脑出血的护理常规课件
- 预防呛咳课件
- 2025年中国地震局事业单位235人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 高速公路消防安全监管
- 2025数据基础设施用户身份管理和接入要求
- 白银市2025-2026学年七年级上学期语文月考测试试卷
评论
0/150
提交评论