实验二死锁的检测与避免

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

实验二死锁的检测与避免—银行家算法

一、实验目的

1、了解进程产生死锁原因,了解为什么要避免死锁。

2、掌握银行家算法的数据结构,了解算法的执行过程,加深对银行家算法的理

解。

二、实验内容及步骤

采用银行家算法来实现一个n 个并发进程共享m 个系统资源的系统。进程可

以申请和释放资源,系统可以按照各进程的申请计算是否可以分配给其资源。

1、创建C语言工程项目,按照教材上的有关说明,定义相应的数据结构。

2、给各个数据结构设定合适的初始值。

注意:步骤1、2可同时进行,即利用C语言中的定义变量就可同时初始化的

方式进行数值初设。

3、依据银行家算法的描述依次进行资源的试探性分配,直至成功或失败,成功

则说明当前状态是安全的;失败后,还应该将资源回到初始状态,并进行另一

次试探;只有所有的试探都失败了,才能说明当前状态是不安全的。

通常,这种试探性算法采用递归的方法是很合适的,程序也是很简洁的。

三、实验原理

1、银行家算法的思路

先对用户提出的请求进行合法性检查,即检查请求的是不大于需要的,是否不大于可利用的。若请求合法,则进行试分配。最后对试分配后的状态调用安全性检查算法进行安全性检查。若安全,则分配,否则,不分配,恢复原来状态,拒绝申请。

2、银行家算法程序流程图(图2-1)

银行家算法(图2-1)

安全性算法(图2-2)

四、实验结果及分析

(一):

1、T0时刻安全性

2、P1发出请求向量Request 1(1,0,2)

3、P4发出请求向量Request 4(3,3,0)

4、P0发出请求向量Request 0(0,2,0) (二):

1、 该状态是否安全?

2、 P2发出请求向量Request (1,2,2

,2)后,系统能否将资源分配给它?

(三)、自行设计一组资源分配数据,要求资源数大于等于3,进程数大于等于3,有2次预分配。

相关文档
最新文档