死锁预防

  防止死锁的发生只需破坏死锁产生的四个必要条件之一即可。

1.破坏互斥条件

     如果允许系统资源都能共享使用,则系统不会进入死锁状态。但有些资源根本不能同时访问,如打印机等临界资源只能互斥使用。所以,破坏互斥条件

而预防死锁的方法不太可行,而且在有的场合应该保护这种互斥性。

2.破坏不可剥夺条件:

      当一个已保持了某些不可剥夺资源的进程,请求新的资源而得不到满足时,它必须释放已经保持的所有资源,待以后需要时再重新申请。这意味着,一个进程

已占有的资源会被暂时释放,或者说是被剥夺了,或从而破坏了不可剥夺条件。

     该策略实现起来比较复杂,释放已获得的资源可能造成前一阶段工作的失效,反复得申请资源和释放资源会增加系统开销,降低系统的吞吐量。这种方法

常用于状态易于保存和恢复的资源,如CPU  的寄存器及内存资源,一般不能用于打印机之类的资源

3.破坏请求和保持条件:

      采用预先静态分配方法,即进程在运行前一次申请完它所需要的全部资源,在它的资源未满足前,不把它投入运行。一旦投入运行,这些资源就一直归它

所有,也不再提出其他资源请求,这样就可以保证系统不会发生死锁。

       这种方法实现简单,但缺点也显而易见,系统资源被严重浪费,其中有些资源可能仅在运行初期或运行快结束时才使用,甚至根本不会使用。而且还是导致

 “饥饿”现象,当由于个别资源长期被其他进程占用,将致使等待该资源的进程迟迟不能开始运行。

4.破坏循环等待条件:

       为了破坏循环等待条件,可采用顺序资源分配法。首先给系统中的资源编号,规定每个进程,必须按编号递增的顺序请求资源,同类资源一次申请完。也就是 

   说,只要进程提出申请分配资源 Ri ,则该进程在以后的资源申请中,只能申请编号大于 Ri 的资源。

       这种方法存在的问题是,必须编号相对稳定,这就限制了新类型设备的增加;尽管在为资源编号时已考虑到大多数作业实际使用这些资源的顺序,但也经常会

  发生作业使用资源的顺序与系统规定顺序不同的情况,造成资源的浪费;此外,这种按规定次序申请资源的方法,也必然会给用户的编程带来麻烦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达人Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值