死锁/资源分配/银行家算法

一、死锁

        1、原因

                竞争资源/程序推进顺序不当

        2、必要条件

                1、互斥条件

                2、请求和保持条件

                3、不剥夺条件

                 4、环路等待条件

        3、处理死锁基本方法

                1、预防死锁(摒弃除1以外的条件)
                2、避免死锁(银行家算法)
                3、检测死锁(资源分配图)
                4、解除死锁
                       剥夺资源
                       撤销进程

二、银行家算法

        概念

        在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。

银行家算法

银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构

要解释银行家算法,必须先解释操作系统安全状态和不安全状态。

安全序列是指一个进程序列{P1,…,Pn}是安全的,即对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j < i )当前占有资源量之和

以下为示例帮助理解:

系统有A、B、C、D四种资源供5个进程P1、P2、P3、P4、P5共享。系统拥有资源A3个、B14个、C12个、D12个
资源分配情况如下:

                                   各进程已占用资源数                       各进程所需最大资源数

ABCDABCD
P100120012
P210001750
P313542356
P406320652
P500140656

 1、问系统中各种资源还剩多少?

        A资源=总数(3) - P2(1) - P3(1) = 1个

        B资源=总数(14) - P3(3) - P4(6) = 5个

        C资源=总数(12) - P1(1) - P3(5) - P4(3) - P5(1) = 2个

        D资源=总数(12) - P1(2) - P3(4) - P4(2) - P5(4) = 0个

2、现在系统是否出于安全状态,为什么?

      Max(进程最大需求数)    AL(进程已分配数)   Need(进程待分配数) Available(系统可用内存)

      目前:Available=1520(依次代表ABCD四种资源)

WorkALNeed(小与Work)Work+AL(P1释放)
P11 5 2 00 0 1 20 0 0 01 5 3 2True
P41 5 3 20 6 3 20 0 2 01 11 6 4True
P21 11 641 0 0 00 7 5 02 11 6 4True
P32 11 641 3 5 41 0  0 23 14 11 8True
P53 14 11 80 0 1 40 6 4 23 14 12 12True

        答:系统属于安全,因为能找到安全序列P1、P2、P3、P4、P5、、、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值