首页 考试资料幻灯片工程技术公务员考试小学教学中学教学大学教学外语资料
操作系统课程设计银行家算法81


银行家算法的模拟实现
1 课设简介:
1.1 课程设计题目 银行家算法的模拟实现 1.2 课程设计目的 1.2.1 了解进程产生死锁原因,了解为什么要进行死锁的避免。 1.2.2 掌握银行家算法的数据结构,了解算法的执行过程,加深对银行家算法 的理解。 1.3 课程设计内容 设计一个 n 个并发进程共享 m 个系统资源的系统。进程可动态申请资源和释 放资源,系统按各进程的申请动态的分配资源。要求采用银行家算法实现。 2 实验原理分析: 2.1 整个银行家算法的思路 先对用户提出的请求进行合法性检查,再进行预分配,利用安全性检查算法进 行安全性检查。 2.2 算法用到的主要数据结构和 C 语言说明。 2.2.1 可利用资源向量 INT AVAILABLE[M] M 为资源的类型。 2.2.2 最大需求矩阵 INT MAX[N][M] N 为进程的数量。 2.2.3 已分配矩阵 INT ALLOCATION[N][M] 2.2.4 还需求矩阵 INT NEED[N][N] 2.2.5 申请各类资源数量 int Request[x]; 2.2.6 工作向量 int Work[x]; 2.2.7 int Finish[y]; //是否有足够的资源分配给进程,0 为否,非 0 为是 2.3 银行家算法主程序 2.3.1 系统初始化。调用函数 chushihua(),输入进程数量,资源种类,各 资源可用数量,各进程已分配、最大需求各资源数量等 2.3.2 安全性算法调用函数 safe()检查当前资源分配状态。

2.3.3 调用 bank()函数,输入用户的请求三元组(I,J,K),为进程 I 申请 K 个 J 类资源。 2.3.4 检查用户请求是否小于还需求量,条件是 K<=NEED[I,J]。如果条件不 符则提示重新输入,即不允许索取大于需求量 2.3.5 检查用户的请求是否小于系统中的可利用资源数量,条件是 K<=AVALIABLE[I,J]。如果条件不符则申请失败,阻塞该进程,重新进行进程动 态资源申请(使用 goto 语句跳转) 2.3.6 进行资源的预分配,语句如下: AVALIBLE[I][J]= AVALIBLE[I][J]-K; ALLOCATION[I][J]= ALLOCATION[I][J]+K; NEED[I][J]=NEED[I][J]-K; 2.3.7 系统调用安全性检查算法 (safe()函数) 进行检查, 如果检查不安全, 则进行回收,进程资源申请失败进入等待。否则不用回收,并检查该进程是否已 获得所有需要资源,如是则进行其拥有资源释放,语句如下: Available[j]=Available[j]+Allocation[k][j]; Allocation[k][j]=0; 2.3.8 do{?}while 循环输入字符 Y/N 判断是否继续进行资源申请。 2.4 安全性检查算法(safe()函数) 2.4.1 设置两个临时变量: FINISH[N]记录进程模拟执行的结束状态,初值为 0,如果可以模拟执行结束, 则可设为 1。 WORK[M]记录模拟执行中资源的回收情况,初值为 AVAILABLE[M]的值。 2.4.2 在进程中查找符合以下条件的进程。 条件 1:FINISH[I]=0 条件 2:NEED[I][J]〈=WORK[J] 2.4.3 如果查找成功则存储安全序列并进行资源的模拟回收,语句如下: FINISH[I]=1 WORK[J]=WORK[J]+ALLOCATION[I][J]; 2.4.4 如查找不成功,则根据不同地方的调用情况进行相应判断处理。

3 程序结构分析: 3.1 程序流程图 3.2 程序模块划分 本程序共有以下六个模块: 3.2.1、字符判断模块:判断输入的字符是否为数字,如果不是则提示出错 并重新输入, 主要处理输入为非数字时程序出现运行错误现象。此模块功能由数 字判断函数( int shuzi(int sz); )实现。 3.2.2、程序初始化模块:用于程序开始进行初始化输入数据:进程数量、 资源种类、各种资源可利用数量、各进程的各种资源已分配数量、各进程对各类 资源最大需求数等。此模块功能在系统初始化函数(void chushihua(); )中实 现。 3.2.3、当前安全性检查模块:用于判断当前状态安全性,根据不同地方的 调用提示处理不同,在安全性算函数(void safe(); )中实现。 3.2.4、银行家算法模块:进行银行家算法模拟实现的模块,调用其他各个 模块进行银行家算法模拟过程,在银行家算法函数(void bank();)中实现。 3.2.5、显示分配模块:显示当前资源分配详细情况,包括:各种资源的总 数量(all)、系统目前各种资源可用的数量、各进程已经得到的资源数量、各进 程还需要的资源量,在显示分配情况函数(void showdata(); )中实现。 3.2.6、签名模块:用于程序结束时显示程序版权声明签名等,在签名函数 (void sign(); )中实现。 4 数据结构分析 本程序所使用的主体数据结构如下: 4.1 定义全局变量 const int x=50,y=100; //定义常量,便于修改 int Available[x]; //各种资源可利用的数量 int Allocation[y][y]; //各进程当前已分配的资源数量 int Max[y][y]; //各进程对各类资源的最大需求数 int Need[y][y]; //还需求矩阵 int Request[x]; //申请各类资源的数量

int Work[x]; //工作向量,表系统可提供给进程运行所需各类资源数量 int Finish[y]; //表系统是否有足够的资源分配给进程,0 为否,1 为是 int p[y]; //存储安全序列 int i,j; //全局变量,主要用于循环语句中 int n,m; //n 为进程的数量,m 为资源种类数 int l=0,counter=0; 4.2 函数声明 int shuzi(int sz); //数字判断函数,还可使用 void shuzi(int& sz); 方式 void chushihua(); //系统初始化函数 void safe(); //安全性算法函数 void bank(); //银行家算法函数 void showdata(); //函数 showdata,输出当前资源分配情况 void sign(); //签名函数 4.3 主函数结构 int main(){ system("color 06f"); //设置当前窗口的背景色和前景色 cout<<?? //显示程序开始提示信息 chushihua(); //初始化函数调用 cout<<endl<<endl; showdata(); //输出初始化后的状态 //===判断当前状态的安全性=== safe(); //安全性算法函数调用 if (l<n){ cout<<"n 当前状态不安全,无法申请,程序退出!!!!!"<<endl; cout<<endl; system("pause"); sign(); //调用签名函数 return 0; // break; }

else{ int i; //局部变量 l=0; cout<<"n 安全的状态!!!"<<endl; cout<<"安全序列为: "; cout<<endl<<"进程"<<"("<<p[0]<<")"; //输出安全序列,考虑显示格式,先输 出第一个 for (i=1; i<n; i++){ cout<<"==>>"<<"进程"<<"("<<p[i]<<")"; } for (i=0; i<n; i++) Finish[i]=0; //所有进程置为未分配状态 cout<<endl<<endl; } bank(); //银行家算法函数调用 return 0; }

123456

 


 

  【Top

最新搜索

 

操作系统课程设计报告题目:银行家算法安全性算法 院 (系) :计算机科学与工程 专班学学业:软件工程 级:130608 班生:姚骏川 号:130608118 指导教师:姜虹 2015 年...

操作系统课程设计 设计题目 银行家算法 姓学专班名号业 物联网工程 级 完成日期 2015 年 1 月 14 日 一.设计任务进程死锁的避免:银行家算法。 要求建立银行...

中国计量学院操作系统课程设计答辩记录1 - 《计算机操作系统》课程设计答辩记录 姓名: 班级:12 计算机 1 学号: 指导老师:潘巨龙 银行家算法 1、银行家算法安全...

操作系统课程设计(银行家算法的模拟实现) - 操作系统课程设计 (银行家算法的模拟实现) 一、设计目的 1、进一步了解进程的并发执行。 2、加强对进程死锁的理解。 ...

操作系统课程设计——银行家算法的模拟实现 - C 语言实现银行家算法程序设计实验报告 实验报告题目名称院系 信息工程学院 班级 完成时间 银行家算法的模拟实现 指导...

2013级操作系统课程设计要求 - 操作系统课程设计要求 以下题目二选一完成: 题目一编程序模拟银行家算法 1. 引言 为了提高资源利用率,应采用动态分配资源的方法。...

编程序模拟银行家算法 - 武汉理工大学华夏学院 课程设计报告书 课程名称: 操作系统原理 题系 目: 名: 编程序模拟银行家算法 信息工程系 软件 1121 钟伟 ...

银行家算法课程设计报告 - 操作系统课程设计报告 题目:银行家算法 院 (系) :专班学学业: 级: 生: 号: 计算机科学与工程学院 计算机科学与技术 120605 蔡学利...

操作系统课程设计 - 操作系统 课程设计 题系班姓学 目 (部) 级名号 银行家算法 电子与信息工程系 12 级计本 5 班 范慧敏 2012020418 徐江涛 刘宏 ...

操做系统课程设计 - 操作系统 课程设计报告 课程设计题目:银行家算法 学生姓名: 周智丽专业: 计算机应用技术 班级: 1240301 学号: 201240030111 指 ...


 

热点推荐