什么是死锁、死锁的危害、死锁的条件、死锁的原因
什么是死锁:
是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
死锁的危害
(1)死锁会使进程得不到正确的结果。因为处于死锁状态的进程得不到所需的资源,不能向前推进,故得不到结果。
(2)死锁会使资源的利用率降低。因为处于死锁状态的进程不释放已占有的资源,以至于这些资源不能被其他进程利用,故系统资源利用率降低。
(3)死锁还会导致产生新的死锁。其它进程因请求不到死锁进程已占用的资源而无法向前推进,所以也会发生死锁。
所以进程出现了死锁,有可能产生多米诺骨牌效应,最终会导致操作系统崩溃。
进程死锁有这么厉害的副作用,那么在什么条件下产生死锁呢?
死锁的条件
1、互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
2、请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
3、非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
4、循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
死锁的原因
在操作电脑的时候最经常出现问题就是系统的进程产生死锁,出现这个问题电脑就会卡顿,甚至无法进行其他方面的操作。出现进程卡死这个问题是有两个原因,来一起跟系统之家小编一起来探索研究吧。
1、有限资源的竞争引起进程死锁
当系统中为多个进程所共享的资源不能同吋满足它们的需求时,引起它们对资源的竞争而产生死锁。在通常情况下,系统中的资源分为可剥夺、非剥夺和临时性资源,不同类型的资源在发生死锁时的处理方式不同。
(1)可剥夺资源如CPU和主存等,在系统中优先权高的进程可剥夺优先权低的进程对这些资源的占用。
(2)非剥夺资源如打印机、读卡机和磁带机等是属于吋顺序重复使用的资源。这类资源的特点是,当系统把某资源分配给某进程后,不能再强行收回,只能在进程用完后自动释放。图1所示是多个进程因争夺非剥夺资源产生死锁的典型例子。具体地说,如果有一组进程P1,P2,...,Pn,其中P1,P2,...,Pn分別占有资源R1,R2,...,Rn,P1同时又申请资源R2,P2同时又申请资源R3,…,Pn-1同时又申请Rn,Pn占有资源Rn同时再申请资源R1。此时,这组进程都因资源得不到满足而进人了互相等待的阻塞状态,永远也不可能前进并到达终点,这时就说系统中出现了死锁现象,P1,P2,...,Pn这组进程处于死锁状态。
(3)临时性资源是指由进程产生、使用后无用的资源。如进程通信时使用的信件,如果对信件的发送和接收不加限制的话,则可能引起死锁。如图2所示,S1、S2和S3是临时性资源,分别由进程P1、P2和P3产生,进程之间的通信情况是:P1要求从P3接收信件,P3要求从P2接收信件,P2要求从P1接收信件。而实际的操作过程是:进程P1等待进程P3的信件S3来到后再向进程P2发送信件S1,P2又要等待P1的信件S1来到后再向P3发送信件S2,而P3也要等待P2的信件S2来到后才能发出信件S3。在这种情况下就形成了循环等待,发生死锁。
由此可见,多个进程竞争使用资源,而系统提供的资源数不能完全满足进程的需求,所以资源不足是引起死锁的主要原因。但需要注意的是,并不是多个进程要求使用多个资源就一定会产生死锁,上例还表明,进程在运行中对资源要求在时间上的冲突也是产生死锁的一个原因。
2、进程推进的顺序不当引起死锁
由于进程的调度是独立的,因此它们对资源的请求和释放操作也存在多种序列,其中有些序列是不安全的,如上面提到的对临时性资源的占用情况;而有些序列是安全的,例如进程P1、P2都需要资源R1、R2,如果两个进程的推进顺序是,进程P1占有资源R1,申请R2时,进程P2还未占有R2,这样就不会发生死锁。这说明死锁是一种与时间有关的错误,它和各进程推进的速度以及对资源清求的顺序有关。
通过以上两个教程详细分析,我们可以简单解决掉了系统产生死锁的烦人故障。这是系统最容易出现的故障,我们去了解这个教程那么可以轻松的成为电脑达人。