文档介绍:O南昌丸学卖验掖告
---(2)備程实观辗行家妥舍算该
学生姓名: 学 号: 专业班级:
实验类型:口验证□综合■设计口创新 实验日期: 实验成绩:
一、 实验目的
通过实验加强对银行家安全算法的理解和掌握。
二、 实验内容
熟悉避免死锁发生的方法,死锁与安全序列的关系,编程实现银行家算法,要求输出进程的安全序列。
三、 实验要求
1、 需写出设计说明;
2、 设计实现代码及说明
3、 运行结果;
四、 主要实验步骤
设计说明:
假定系统中有五个进程PO, Pl, P2, P3, P4,和三类资源A、B、C,在TO时刻的资源分配情况如下图所示, 且TO时刻系统安全。
进程
A
Max#
Allocation*-'
B O
A
Need*-1
B O
Available^1
ABO
B O
A
1
P"
1
7
5 3"'
1
0
1 “
7
4 3"
L
Ph
1
3
2 2“'
1
2
0 2
|
1
P2"
9
0 2“'
3
0 2“
P3" 1
1
2
2 2“ '
1
2
1 1"
1
L
P4#
1
4
3 3"
1
0
0 2“
4
3
1
流程图:
重要数据说明:
请求向量:request[3]
可利用资源向量:available⑶ 分配矩阵:allocation⑸⑶ 需求矩阵:need⑸[3]
工作向量:work[3]
进程完成标志:finish[5]
安全序列:safe⑸ 请求进程号:proc 找到满足条件的进程的标志:found 系统处于安全的标志:safty 系统能满足请求向量的标志:give 设计实现代码:
#include<>
void main()
{
int request[3];
int available[]={?>,3,2};
int allocation [5][3]={{0,l, 0},{2,0,0},{3,0,2},{2 丄 1},{0,0,2}};
int need [5][3]={{7,4,3},{1,2,2},{6,0,0},{0丄1},{4,3,1}};
int work[3];
int finish[]={0,0,0,0,0};
int safe[5];
int proc,found=0,safty= 1 ,i,j=0,n,x,give= 1;
printf(”资源情况
allocation
need
I available\nn); /*显示TO时刻资源分配情况表*/
printf(”进程
A
B
c
A
B
C A
B
C\n");
printf(”
P0
0
1
0
7
4
3 3
3
2\n");
printf(”
P1
2
0
0
1
2
2\n");
printf(”
P2
3
0
2
6
0
0\n");
printf(”
P3
2
1
1
0
1
l\n");
printf(”
P4
0
0
2
4
3
l\n");