操作系统实验报告
课题:银行家算法
专 业: 班 级:
学 号:
姓 名:
年 月 日
目 录
一 实验目的 ……………………………………………………错误!未定义书签。
二 实验容 ………………………………………………………3
三 问题描述 ……………………………………………………3
四 设计思路 ………………………………………………………4
五 详细设计 ……………………………………………………5
六 运行结果 …………………………………………………10
七 心得体会 ……………………………………………………16
八 参考文献 ………………………………………………………17
附 源程序 ………………………………………………………17
一、 实验目的
模拟实现银行家算法,用银行家算法实现资源分配。 1.加深了解有关资源申请、避免死锁等概念。 2.体会和了解死锁和避免死锁的具体实施方法。 3、输入:
1.系统中各类资源表
2.每个进程需要各类资源总数 系统分配给各个进程各类资源数 4、输出:
1.判断T0时刻的安全性2.如果系统是安全的,任意给出某个进程的一
个资源请求方式并判断系统能否接受此请求,如果可以接受,其输出全部安全序列,反之,不予分配。
二、实验容
1.设计进程对各类资源最大申请表示及初值的确定。 2.设定系统提供资源的初始状况。
3.设定每次某个进程对各类资源的申请表示。
4.编制程序,依据银行家算法,决定其资源申请是否得到满足。 5.显示资源申请和分配时的变化情况。
三、 问题描述
银行家算法.顾名思义是来源于银行的借贷业务,一定数量的本金要应多个客户的借贷周转,为了防止银行加资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。在操作系统中研究资源分配策略时也有类似问题,系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间归还资源,以供其他进程使用资源。如果资源分配不得到就会发生进程循环等待资源,则进程都无法继续执行下去的死锁现象。
在死锁的避免中,银行家算法把系统状态分为安全状态和不安全状态,只要能使系统始终处于安全状态,便可以避免发生死锁。所谓安全状态,是指系统能按某种顺序为每个进程分配所需资源,直到最大需求,使每一个进程都可以顺利完成,即可找到一个安全资源分配序列。模拟实现这个工作过程。
四、设计思路
我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。
银行家算法是一种最具代表性的避免死锁的算法。要解释银行家算法,
必须先解释操作系统的安全状态和不安全状态。安全状态:如果存在一个由系统中所有进程构成的安全序列P1,…,Pn,则系统处于安全状态。安全状态一定没有死锁发生。
不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。 安全序列:一个进程序列{P1,…,Pn}是安全的,如果对于每个进程Pi
(0≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj(j<i)当前占有资源量之和。
先对系统从源文件中读取的数据进行安全性判断,然后对用户提出的请
求进行合法性检查,即检查请求的是不大于需要的,不大于系统可利用的资源。