- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南华高校运算机科学与技术学院
|精.
|品.
|可.
|编.
|辑.
|学.
|习.
|资.
|料.
*
|
*
|
*
|
*
|
|欢.
|迎.
|下.
|载.
试验报告
课程名称 操作系统 I
姓 名
学 号
专业班级任课老师日 期
一、 试验容
死锁的检测与解除
二、 试验目的
把握操作系统的进程治理与资源安排原理, 把握对操作系统安
|精.
|品.
|可.
|编.
|辑.
|学.
|习.
|资.
|料.
*
|
*
|
*
|
*
|
|欢.
|迎.
|下.
|载.
全性检验和死锁的解除的原理和方法;
三、 试验题目
系统中有 m 个同类资源被 n 个进程共享, 每个进程对资源的最大需求数分别为 S1,S2, ?,Sn,且 Max(Si)=m, (i=1,2, ? n) ;进程可以动态地申请资源和释放资源;编写一个程序,实现银行家算法, 当系统将资源安排给某一进程而不会死锁时,就安排之;否如此,推 迟安排,并显示适当的信息;
分别使用检测“进程—资源循环等待链〞的方法和 Coffman 的算法来检测进程的死锁状态;对于一样的进程资源安排、占用次序, 比拟两个算法的结果;
四、设计思路和流程图
输入系统进程数量 n 和资源类型数量 m;
输入每类资源的数量;
输入每个进程每类资源的最大需求量和已获资源量;
检验系统的安全;
假如检测结果为系统担心全, 可以对死锁进展解除, 直到安全为止再检测; 6.重复 5 操作,直到全部进程运行完毕;
|精.
|品.
|可.
|编.
|辑.
|学.
|习.
|资.
|料.
*
|
*
|
*
|
*
|
|欢.
|迎.
|下.
|载.
|精.
|品.
|可.
|编.
|辑.
|学.
|习.
|资.
|料.
*
|
*
|
*
|
*
|
|欢.
|迎.
|下.
|载.
五、 主要数据结构与其说明
int Max[100][100]={0}; // 各进程所需各类资源的最大需求 ; int Available[100]={0}; // 系统可用资源 ;
char Name[100]={0}; // 资源的名称 ;
int Allocation[100][100]={0}; // 系统已安排资源 ; int Need[100][100]={0}; // 仍需要资源
int Request[100]={0}; // 恳求资源向量 ;
int Temp[100]={0}; // 存放安全序列 ;
int Work[100]={0}; // 存放系统可供应资源 ; bool Finish[100]={0};// 存放已完成的序列
六、 源程序并附上注释
#include stdafx.h #includeiostream #define False 0
#define True 1
using namespace std;
int Max[100][100]={0}; // 各进程所需各类资源的最大需求 ; int Available[100]={0}; // 系统可用资源 ;
char Name[100]={0}; // 资源的名称 ;
int Allocation[100][100]={0}; // 系统已安排资源 ; int Need[100][100]={0}; // 仍需要资源
int Request[100]={0}; // 恳求资源向量 ; int Temp[100]={0}; // 存放安全序列 ;
int Work[100]={0}; // 存放系统可供应资源 ; bool Finish[100]={0};
int M=100; // 作业的最大数
int N=100; // 资源的最大数
int l=0;// 记录安全进程的 TEMP下标void ShowData()// 初始化资源矩阵 {
int i,j;
cout 系统可用资源 [Available]:endl; for(i=0;iN;i++)
coutName[i] ; coutendl; for(j=0;jN;j++)
coutAvailable[j] ;// 显示可安排的资源
coutendl;
cout Max Allocation Needendl; cout 进程名 ;
for (j=0;j3;j++)//MAX ALLOCATION NEED 共列
{
for (i=0;iN;i++)
{
coutName[i] ;
}
|精.
|品.
|可.
|编.
|辑.
|学.
|习.
|资.
|料.
*
|
*
|
*
|
*
|
|欢.
|迎.
|下.
|载.
cout ;
} coutendl; for(i=0;iM;i++){
cout i ;// 输出进程名
for(j=0;jN;
原创力文档


文档评论(0)