(4)我们再利用安全性检查此时系统是否安全。
由所进行的安全性检查得知,可以找到一个安全序列{P1,P3,P4,P2,P0}。因此,系统是安全的,可以立即将P1所申请的资源分配给它。
(3)P4请求资源
P4发出请求向量Request(3,3,0),系统按银行家算法进行检查:
(1)Request4(3,3,0)≤Need4(4,3,1)。
(2)Request4(3,3,0)>Available(2,3,0),让P4等待。
(4) P0请求资源
P0发出请求向量Request0(0,2,0),系统按银行家算法进行检查:
(1)Request0(o,2,0)<或=Need0(7,4,3));
(5)进行安全性检查
可用资源Available{2,1,0}已不能满足任何进程的需要,故系统进入不安全状态,此时系统不分配资源。
如果在银行家算法中,把P0发出的请求向量改为Request(0,1,0),系统是否能将资源分配给它,请读者考虑
四、实验所需仪器、设备、材料
PC机
五、实验预习要求、实验条件、方法及步骤
1)熟练掌握死锁相关的基本概念。
2)熟练掌握避免死锁的有关算法。
3)熟练掌握银行家算法所需的数据结构和算法流程;
4)熟练掌握某一门编程语言,如C、C++或者Dephi等。479
银行家算法课程设计
#include <stdio.h>
#include <stdlib.h>
/*----------------------常量定义--------------------*/
#define F 0
#define T 1
#define n 5 //进程数量
#define m 3 //资源种类数量
/*--------------------------------------------------*/
/*--------------------数据结构定义------------------*/
int Available[m]={3,3,2}; //可用资源
int Work[m]; //工作向量
int Finish[n]; //用以判断系统是否有足够资源分给相应进程
void Recycle(); //若进程运行完资源回收
int backDos(); //判断所有进程是否运行完,完后返回操作系统
/*--------------------------------------------------*/
/*-----------------------进程-----------------------*/
struct PCB
{
int flag; //状态标志,是否运行完
int Max[m]; //资源最大需求量
int Allocation[m]; //已分配资源
int Need[m]; //还需要的资源
int Request[m]; //请求资源量
}P[n];
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-32716-2.html
你那是WiFi热点吧
目标明确
帅呀