银行家算法课程设计

发布 2022-10-01 22:27:28 阅读 3468

银行家算法的模拟。

1 实验目的。

银行家算法是避免死锁的一种重要方法。通过编写一个模拟动态资源分配的银行家算法程序,进一步深入理解死锁、产生死锁的必要条件、安全状态等重要概念,并掌握避免死锁的具体实施方法。

2 任务及要求。

编程序模拟银行家算法,要求能体现算法的全过程。

3 算法及数据结构。

3.1 算法的整体思想。

银行家算法又称“资源分配拒绝”法,其基本思想是,系统中的所有进程放入进程集合,在安全状态下系统受到进程的请求后试探性的把资源分配给他,现在系统将剩下的资源和进程集合中其他进程还需要的资源数做比较,找出剩余资源能满足最大需求量的进程,从而保证进程运行完成后还回全部资源。这时系统将该进程从进程集合中将其清除。此时系统中的资源就更多了。

反复执行上面的步骤,最后检查进程的集合为空时就表明本次申请可行,系统处于安全状态,可以实施本次分配,否则,只要进程集合非空,系统便处于不安全状态,本次不能分配给他。请进程等待。

3.2 主函数模块。

3.2.1 功能。

用于程序与用户的交互操作,由用户选择模拟实验的算法,并执行相应的算法。

3.2.2 数据结构。

void main()

3.2.3 算法。

void main()

int i,j;

inputdata();

for(i=0;i

if (i>=m)

cout<<"错误提示:经安全性检查发现,系统的初始状态不安全!!!n"< else

3.3 数据输入模块。

3.3.1 功能。

系统由此输入数据,并检测输入的数据是否超过了系统最大的进程数或最大数据种类。

3.3.2 数据结构。

void inputdata()

3.3.3 算法。

void inputdata()

int i=0,j=0,p;

cout<<"请输入总进程数:"w);

cout< cout<<"请输入资源的种类数:"

cout< cout<<"请依次输入各进程已经占据的各类资源数量,即设置矩阵allocation:"

cout< for (i=0;i for(j=0;jneed[i][j]=max[i][j]-allocation[i][j];

for (j=0;j

3.4 数据显示模块。

3.4.1 功能。

显示系统运行过程中数据的变化,并显示出系统所需数据。

3.4.2 数据结构。

void showdata()

3.4.3 算法。

void showdata()

int i,j;

cout<<"各种资源的总数量,即向量all_resource为:"

for (j=0;j cout<<"资源"< cout< cout<<"当前系统中各类资源的可用数量,即向量**ailable为:"

for (j=0;j cout<<"资源"< cout< cout<<"各进程还需要的资源数量,即矩阵need为:"

cout< cout<<"各进程已经得到的资源量,即矩阵allocation为: "for (i=0;i cout<}

3.5 安全检查模块。

3.5.1 功能。

检测系统的运行过程中系统是否安全。

3.5.2 数据结构。

int chksec(int s)

3.5.3 算法。

int chksec(int s)

int work,finish[w];

int i,j,k=0;

for(i=0;i finish[i]=false;

for(j=0;j

while(i for(i=0;iif(finish[i]==false)

return 1;

} return 0

3.6 资源检测模块。

3.6.1 功能。

检测系统分配的资源是否合理,3.6.2 数据结构。

void bank();

3.6.3 算法。

void bank()

int i=0,j=0;

char flag='y';

while(flag=='y'||flag=='y')

cout<<"请输入进程p"< for (j=0;jcout<<"资源">request[j];

if(request[j]>need[i][j])

cout<<"进程p"<

银行家算法课程设计

信息与计算科学。操作系统原理。课程设计报告。题目 银行家算法程序设计。班级 姓名 专业 银行家算法程序设计。1.绪论 2 2.需求分析 2 2.1 功能需求 2 2.2 数据需求 2 3.总体设计 2 3.1 功能模块设 2 3.2 系统设计方案 3 3.3 开发工具 4 4.详细设计 4 4.1 ...

银行家算法 课程设计

课程设计报告。操作系统原理。银行家算法。银行家算法。一 银行家算法原理。银行家算法是一种最有代表性的避免死锁的算法。要解释银行家算法,必须先解释操作系统安全状态和不安全状态。安全状态 如果存在一个由系统中所有进程构成的安全序列p1,pn,则系统处于安全状态。安全状态一定是没有死锁发生。不安全状态 不...

银行家算法课程设计

课程名称 操作系统。设计题目 银行家算法模拟。院系。班级。设计者。学号。指导教师。设计时间 2013.12.23 2013.12.27 昆明学院。姓名院 系 信息技术。专业 计算机科学与技术学号 任务起止日期 2013.12.23 2013.12.27 课程设计题目 银行家算法模拟 课程设计要求及任...