操作系统课程设计报告
任务五、死锁的避免
一、目的
在多道程序系统中,多个进程的并发执行来改善系统的资源利用率,提高系统的吞吐量,但可能发生一种危险——死锁。所谓死锁(Deadlock),是指多个进程在运行过程中因争夺资源而造成的一种僵局(DeadlyEmbrace),当进程处于这种状态时,若无外力作用,他们都无法在向前推进。
我们可以在分配资源时加上限制条件就可以预防死锁,但是,在每一种预防死锁的方法之中,都施加了较强的限制条件;而在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。 二、要求
利用银行家算法来避免死锁的发生 1、建立银行家算法的数据结构描述;
13
操作系统课程设计报告
2、将初始数据放在文件中,算法运行时读出; 3、对给定的资源请求,使用算法判断是否允许; 4、输出每次判断产生的执行序列; 三、程序框图
1.银行家算法
14
操作系统课程设计报告
void BankerArithmetic::Init(int a,int b) { int i,j;
for(i=0;i<100;i++)
Sign[i]=-1;
Available=new int[b];//Availablede的申请 Left=new int[b];//Left的申请
Allocation=new int*[a];//Allocation的申请 for(i=0;i Allocation[i]=new int[b]; Need=new int*[a];//Need的申请 for(i=0;i Need[i]=new int[b]; cout<<\请输入可用资源Available:\ for(i=0;i cin>>Available[i]; cout<<\请输入进程号:\ for(i=0;i cin>>Number[i]; cout<<\请输入分配资源矩阵Allocation:\ for(i=0;i cin>>Allocation[i][j];
相关推荐: