c语言实现银行家算法避免死锁,操作系统课设(模拟实现银行家算法实现死锁避免).docx...

计算机与信息工程系

?计算机系统与系统软件?

课程设计报告

目:模拟实现银行家算法实现死锁避免

业:信息管理与信息系统级:信管

业:

信息管理与信息系统

级:

信管082班

t=r.

号: 名:

指导老师:

2010年 9 月 9 日

、实验题目

模拟实现银行家算法实现死锁避免

、目的:

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

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

三、内容:

模拟实现银行家算法实现死锁避免。要求:初始数据(如系统在 况、每一种资源的总数量)从文本文件读入,文件中给出最大需求矩阵 Allocation ,在程序中求得需求矩阵 Need 和可利用资源向量 Available 。

T0 时刻的资源分配情

Max 、分配矩阵

四、实验提示:

1、整个银行家算法的思路。

先对用户提出的请求进行合法性检查, 再进行预分配, 利用安全性检查算法进行安全性检 查。

2、算法用到的主要数据结构和

( 1 )、

( 2 )、

( 3 )、

(4)、

( 5 )、

( 6 )、

( 7 )、

可利用资源向量 最大需求矩阵 已分配矩阵 还需求矩阵 申请各类资源数量 工作向量

INT

INT

INT

C 语言说明。

AVAILABLE[M] M 为资源的类型。

MAX[N][M] N 为进程的数量。 ALLOCA TION[N][M]

NEED[N][N]

INT

int Request[x]; // int Work[x];

int Finish[y]; // 表示系统是否有足够的资源分配给进程, 主程序) 系统初始化。输入进程数量,资源种类,各进程已分配、 源可用数量等 输入用户的请求三元组(I, J, K),为进程I申请 检查用户的请求是否小于还需求的数量,条件是 提示重新输入,即不允许索取大于需求量 检查用户的请求是否小于系统中的可利用资源数量,条件是K<=AVALIABLE[I,J] 。

如果条件不符则申请失败,阻塞该进程,重新进行进程动态资源申请(使用goto 语

句) 进行资源的预分配,语句如下: AVALIBLE[I][J]= A VALIBLE[I][J]-K ; ALLOCA TION[I][J]= ALLOCA TION[I][J]+K ; NEED[I][J]=NEED[I][J]-K ; 系统调用安全性检查算法(safe()函数)进行检查,如果检查通过,则不用回收,否 则进行回收,进程资源申请失败进入等待。

4、安全性检查算法(safe()子函数)

( 1 )、设置两个临时变量。

FINISH[N] 记录进程模拟执行的结束状态,初值为 0,如果可以模拟执行结束,则可

0 为否,非 0 为是

3、银行家算法

( 1 )

还需求各资源数量,各资

2)、

3)、

4)、

6)、

K 个 J 类资源。

K<=NEED[I,J] 。如果条件不符则

(2 )、

(3 )、

(4 )、

设为1,也可设为其它非零值以表示执行的先后次序。

WORK[M]记录模拟执行中资源的回收情况,初值为 AVAILABLE[M]的值。 在进程中查找符合以下条件的进程。

条件 1: FINISH[I]=O

条件 2: NEED[I][J] 〈=WORK[J]

如果查找成功则进行资源的模拟回收,语句如下:

WORK[J]=WORK[J]+ALLOCA TION[I][J];

FINISH[I]=1 或查找到的顺序号

如果查找不成功,则检查所有进程的FINISH[],如果有一个为 0,则系统不为0,

返回不成功标志。否则返回成功标志。

五、程序源代码

Hrintt): 〃用于打印输出表格的函娄 read(取文件函数Inputt)://^^ 输入的? 数 tri/fenpeitint i);"试分配函数 refenpeitint

Hrintt): 〃用于打印输出表格的函娄 read(取文件函数

Inputt)://^^ 输入的? 数 tri/fenpeitint i);"试分配函数 refenpeitint复数据?教

checksafeCint s);//安全检测函数

ifit temp [ t ]: ifit workfc]: "定义初始化数组 int Auailabl色[c],

MaK[t][c], flllocation[t][c], Heed[t][c], Requ9St[c], tntal[c];

Int In;//用户选择的进程号

*/7*nairi 函数

*/

int pidin(int argc, char *a『gu[]){ int i;

chat" C"h=*V* ■ coutw打开葬谍取文件内容…YGrun: readO 7"读敢X件函薮

Prin

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值