正在进行安全检测...

发布时间:2024-03-08 23:45:38

实验六死锁避免的算法
【实验目的】
1了解死锁避免的原理。
2研究银行家算法的实现方法。
【实验内容】
编程实现银行家算法。
通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁地发生。要求如下:
1模拟一个银行家算法;
2初始化时让系统拥有一定的资源;3用键盘输入的方式申请资源;
4如果预分配后,系统处于安全状态,则修改系统的资源分配情况;5如果预分配后,系统处于不安全状态,则提示不能满足请求,

【实验报告】
1列出调试通过程序的清单,并附上文档说明。
2总结上机调试过程中所遇到的问题和解决方法及感想。
【实验相关资料】
一、死锁概念
多个并发进程,每个进程占有部分资源,又都等待其它进程释放所占资源,造成均不能向前推进的现象。二、死锁的避免
死锁避免原理就是使系统始终处于安全状态。
安全状态:所谓安全状态是指能够找到一个安全序列,系统能够按照这个安全序列依次为进程分配资源,使所有进程都能执行完毕,如果找不到这样的安全序列,系统就处于不安全状态。
三、银行家算法
银行家算法要求每个进程的最大资源需求,其基本思想是:始终保持系统处于安全状态,当进程提出资源请求时,系统先进行预分配,再判断系统分配后是否仍然处于安全状态。如果仍然处于安全状态,就进行实际分配;如果处于不安全状态,则拒绝该进程的资源请求。

四、银行家算法相关数据结构1最大需求矩阵:
d11d12...d1m
d21d22...d2m
d(t=

dd...dn1n2nm
其中,行表示进程,列表示资源,如:dij=5表示第i个进程最多需要j类资源5个。2资源分配矩阵:
a11a12...a1m

a21a22...a2m
a(t=

aa...an1n2nm
元素aij=8表示分配给第i进程8j类资源。3需求矩阵:
b11b12...b1m
b21b22...b2m
b(t=

bb...bn1n2nm
元素bij=3表示第i类进程还需要3j类资源。最大需求矩阵=分配矩阵+需求矩阵,即d(t=a(t+b(t

正在进行安全检测...

相关推荐