资源描述:
《计算机操作系统银行家算法》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、计算机操作系统必考题(银行家算法)银行家算法(banker'salgorithm)由Dijkstra于1965提出,关键是将死锁的问题演示为一个银行家贷款的模型,由于能用于银行系统的现金贷款而出名。一个银行家向一群客户发放信用卡,每个客户有不同的信用额度。每个客户可以提出信用额度内的任意额度的请求,直到额度用完后再一次性还款。银行家承诺每个客户最终都能获得自己需要的额度。所谓“最终”,是说银行家可以先挂起某个额度请求较大的客户的请求,优先满足小额度的请求,等小额度的请求还款后,再处理挂起的请求。这样,资金能够永远流通。所以银行家算法其核心是:保证银行家
2、系统的资源数至少不小于一个客户的所需要的资源数。银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但银行家算法在系统在进行资源分配之前(并不是真的不分配,这样就没法做了,只不过是试探性分配,不满足的话再恢复),应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构。要解释银行家算法,必须先解释操作系统安全状态和不安全状态。安全序列是指存在一个进程序列{P1,…,Pn}是安全的,不会死锁(至少两个线程占有某资源A,但是都不满足,剩余的资源A分配给谁仍然
3、无法满足),安全状态如果存在一个由系统中所有进程构成的安全序列P1,…,Pn,则系统处于安全状态,安全状态一定是没有死锁发生;不安全状态不存在一个安全序列,不安全状态不一定导致死锁。木算法在理论上是出色的,能非常有效地避免死锁,但从某种意义上说,它缺乏实用价值,因为很少有进程能够在运行前就知道其所需资源的最大值,且进程数也不是固定的,往往在不断地变化(如新用户登录或退岀),况且原来可用的资源也可能突然间变成不可用(如打印机、磁带机可能被损坏)。二.算法原理银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。每分配一次资源就测试一次是
4、否安全,不是资源全部就位后才测试,注意理解checkError函数的循环顺序。我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。为保证资金的安全,银行家规定:1.当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客(试探性分配)2.顾客可以分期贷款,但贷款的总数不能超过最大需求量(可能一次并不能满足所需要的全部资源)3•当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款(不存在死锁)4.当顾客得到所需的全部资金
5、后,一定能在有限的时间里归还所有的资金(运行后释放)操作系统按照银行家制定的规则为进程分配资源,当进程首次中请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程本次申请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配资源,若能存在安全状态,则按当前的申请量分配资源,否则也要推迟分配。例:设系统中有3种类型的资源(A,B,C)和5个进程Pl、P2、P3、P4、P5,A资源的数量为17,B资源的数量为5,C资源的数量为20。在TN寸刻系统
6、状态见下表(T。时刻系统状态表)所示。系统采用银行家算法实施死锁避免策略。(12分)T。时刻系统状态表最大资源需求量已分配资源数量ABCABCP1559212P2536402P34011405P4425204P5424314T0时刻系统状态表(1)To时刻是否为安全状态?若是,请给出安全序列。(2)在T。时刻若进程P2请求资源(0,3,4),是否能实施资源分配?为什么?(3)在(2)的基础上,若进程P4请求资源(2,0,1),是否能实施资源分配?为什么?(4)在(3)的基础上,若进程P1请求资源(0,2,0),是否能实施资源分配?为什么?答:C(最大需
7、求量),A(已分配资源数),R(初始可用资源数),V(T°时刻剩余可用资源数)当前的系统状态描述为:「559~~212「3415364021344011A=405C-A=006425204221424314_11020)33)V=(25/?=(17(C-A)中P5所在行的向量(1,(1)在T0吋刻,由于V(2,3,3)大于等于因此V能满足P5的运行,在P5运行后,系统的状态为:1,0),~212~347_402134405C-A=006204221000_000V=(547)A=同样的,在P5运行后,V’1),则能满足P4的运行。P4运行后,系统的状态
8、为:(5,4,7)也大于等于C-A中P4所在的行(2,2,'212~「34T402134405