操作系统之死锁的检测和解除

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统实验

死锁的检测与解除

实验报告

一、实验题目:死锁的检测与解除

二、实验内容:编程实现死锁检测与解除,要求能够输入资源数和作业数,输出进程的安全状况。若进程安全,输出安全序列。若进程不安全,发生死锁,可以进行解锁。若成功解锁,输出安全序列。

三、实验目的:通过实验,进一步了解死锁的检测,以及如何解除死锁。

四、实验过程:

1、基本思想:若发生死锁,从第一个未完成的进程开始强制释放其已分配资源,然后再次

运行安全算法判定系统是否安全。若安全,输出安全序列;若不安全,进入下一个未完成的进程,重复刚刚的步骤。

2、主要数据结构:

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};//存放已完成的序列

3、输入、输出:

输入可用资源种类:3;名称和数量分别为:资源A ,2;资源B,0;资源C,3.

进程数:2;

最大需求矩阵为:5 5 5 已分配矩阵为:1 1 1

6 6 6 3 5 2

得到结果是:进程0 、进程1会发生死锁。进入解锁算法,输出解锁成功,安全序列是0—>1;

4、程序流程图:

5、实验结果截屏:

6、源程序代码:

#include

#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]:"<

for(i=0;i

cout<

cout<

for(j=0;j

cout<

cout<

cout<<" Max Allocation Need"<

cout<<"进程名";

for (j=0;j<3;j++)//MAX ALLOCATION NEED 共列

{

for (i=0;i

{

cout<

}

cout<<" ";

}

cout<

for(i=0;i

cout<<" "<

for(j=0;j

cout<

cout<<" ";

for(j=0;j

cout<

cout<<" ";

for(j=0;j

cout<

cout<

}

}

bool Safe() //安全性算法

{

int i,j,k;

for(i=0;i

Work[i]=Available[i]; //初始化工作向量

for(i=0;i

{

Finish[i]=false; //判断进程i是否已执行}

for(i=0;i

{

if(Finish[i]==true)

{

continue;

}

else

{

for(j=0;j

{

if(Need[i][j]>Work[j])

{

break;

}

}

if(j==N)//若Need都小于Work

{

Finish[i]=true;

相关文档
最新文档