标签:cti lin 放弃 dfa 关注 libz use 银行 jpeg
今天分享给大家操作系统中死锁的相关概念和解决办法,内容来自与自己当时做的笔记和网络~有问题可以后台回复,会尽量回答哦
一、死锁的概念
当两个以上的运算单元,双方都在等待对方停止运行,以获取系统资源,但是没有一方提前退出时,就称为死锁。
在操作系统中,死锁指的是在多任务的系统中,一个或者多个进程因为请求系统的资源而暂停,而该资源又被其他进程或者自己占用,这样形成的僵持的状态就是死锁。
比如,进程A占有打印机资源,请求音响资源,进程B占用音响但是请求打印机资源。这样在没有外力的作用下将导致死锁状态。
二、死锁产生的条件
禁止抢占:no preemption:一个进程占有某种资源不能被强行剥夺,只能自己放弃该资源;
持有和等待:hold and wait:进程占有某种资源同时请求别的资源;
互斥:mutual exclusion :一种资源同时只能被一个进程使用;
循环等待:circular waiting:形成一个等待的回路;
要想产生死锁,四种条件缺一不可。
三、死锁的三种处理策略
死锁的预防:通过设定一些限制条件,破坏“禁止抢占”、破坏“持有等待”、破坏“资源互斥”和破坏“循环等待”四个死锁产生条件之一;
死锁的避免:资源的动态分配中,采用某种策略防止系统进入死锁状态,比如银行家算法,银行家算法其实不需要书上的公式那么麻烦,理解了其实很简单,次下次单独讲一次银行家算法;
死锁的检测和解除:分配资源时候不采取任何措施,而是在死锁产生之后再进行解决,这里一个概念就是资源分配图,比如:
这就是死锁的检测方法之一,图中 的状态明显不是一个死锁状态。
四、死锁和不安全状态的关系
安全状态:指系统能按某种顺序如<P1,P2,...,Pn>(称<P1,P2,...Pn>序列为安全序列),来为每个进程分配其所需资源,直到最大需求,使每个进程都可顺序完成。若系统不存在这样一个安全序列,则称系统处于不安全状态。
并非所有的不安全状态都是死锁状态,只是系统进入了不安全状态之后有可能进入死锁状态,只要系统处于安全状态就可避免进入死锁状态。
喜欢就关注哦~
标签:cti lin 放弃 dfa 关注 libz use 银行 jpeg
原文地址:http://www.cnblogs.com/robin2ML/p/6863238.html