5
第 1 页 共 20 页
OS 课程设计
操作系统课程设计
基于Windows平台VC++模拟实现
银行家算法模拟
指导
教师:
邹淑稚
学生姓名: 刘玮钰
学生学号: 151303111
学生成绩:______________
5
第 2 页 共 20 页
OS 课程设计
目 录
一、课程设计的目的与要求.......................................................................................................3
1.1课程设计的目的...................................................................................................................... 3
1.2课程设计的要求.............................................................................................................. 3
二、设计正文............................................................................................................................... 3
2.1需求分析.......................................................................................................................... 3
2.2流程图............................................................................................................................... 4
2.2.1系统主要过程流程图............................................................................................4
2.2.2银行家算法流程图................................................................................................4
2.2.3 安全性算法流程图...............................................................................................5
三 概要设计................................................................................................................................. 5
3.1算法思路.......................................................................................................................... 5
3.2银行家算法步骤.............................................................................................................. 5
4.1运行界面.......................................................................................................................... 7
4.7主程序源程序清单.......................................................................................................... 9
5
第 3 页 共 20 页
OS 课程设计
一、课程设计的目的与要求
1.1课程设计的目的
1.加深了解资源申请、避免死锁等概念。
2.体会避免死锁的具体实施方法——银行家算法的实现过程。
3.进一步提高软件开发能力。
1.2课程设计的要求
1.复习银行家算法,设计一个具有若干(不少于3种)资源和若干(不少于5
个)进程的
系统。
2.定义系统的初始状态,即进程获得的资源数,还需要的资源数以及系统可用
的资源数。
3.以用户输入的方式提出资源请求,并用银行家算法避免可能发生的死锁,若
系统安全,
允许用户继续申请资源。
4.设计的系统要求结构清晰,与用户的交互界面友好,能动态地实现资源的申
请和分配。
二、设计正文
2.1需求分析
在多道程序系统中,多个进程的并发执行来改善系统的资源利用率,提高系
统的吞吐量,但可能发生一种危险——死锁。所谓死锁(Deadlock),是指多个
进程在运行过程中因争夺资源而造成的一种僵局(DeadlyEmbrace),当进程
处于这种状态时,若无外力作用,他们都无法在向前推进。
要预防死锁,有摒弃“请求和保持”条件,摒弃“不剥夺”条件,摒弃“环路等
5
第 4 页 共 20 页
OS 课程设计
待”条件等方法。 但是,在预防死锁的几种方法之中,都施加了较强的限制条件
而在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性
能。在该方法中把系统状态分为安全状态和不安全状态,便可避免死锁的发生。
而最具代表性的避免死锁的算法,便是Dijkstra的银行家算法。 利用银行家算法
我们可以来检测CPU为进程分配资源的情况,决定CPU是否响应某进程的的请求
并为其分配资源,从而很好避免了死锁的产生。
2.2流程图
2.2.1系统主要过程流程图
2.2.2银行家算法
流程图
5
第 5 页 共 20 页
OS 课程设计
2.2.3 安全性算法流程图
三 概要设计
3.1算法思路
先对用户提
出的请求进行合法
性检查,即检查请
求是否大于需要
的,是否大于可利
用的。若请求合
法,则进行预分
配,对分配后的状
态调用安全性算法
进行检查。若安
全,则分配;若不
安 全 , 则 拒 绝 申 请 , 恢 复 到 原 来 的 状 态 , 拒 绝 申 请 。
3.2银行家算法步骤
(1)如果Requesti<or =Need,则转向步骤(2);否则,认为出错,因为它所需要的
资源数已超过它所宣布的最大值。
(2)如果Request<or=Available,则转向步骤(3);否则,表示系统中尚无足够
的资源,进程必须等待。
(3)系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:
Available=Available-Request[i];
Allocation=Allocation+Request;