什么是死锁,产生死锁的原因和必要条件是什么,什么是死锁,产生死锁的原因是什么?
什么是死锁:
是指两个或两个以上的进程在执行过程中争夺资源或互相通信而导致的阻塞现象。如果没有外力,他们就无法前进。此时,系统处于死锁状态或系统出现死锁。这些总是互相等待的进程称为死锁进程。
死锁危险
(1)死锁会阻止进程得到正确的结果。因为死锁的进程得不到所需的资源,无法前进,所以得不到结果。
(2)死锁会降低资源的利用率。由于死锁的进程不释放被占用的资源,使得这些资源不能被其他进程使用,系统资源利用率降低。
(3)死锁也会导致新的死锁。死锁也会发生,因为其他进程无法请求死锁进程占用的资源,无法前进。
所以进程出现死锁,可能会产生多米诺骨牌效应,最终导致操作系统崩溃。
进程死锁有如此严重的副作用,那么它是在什么条件下发生的呢?
死锁条件
1.互斥:资源不能共享,只能被一个进程使用。
2.等待条件:已经获得资源的进程可以再次申请新的资源。
3.无预剥夺:分配的资源不能从相应的进程中被强制剥夺。
4.循环等待条件:系统中的几个进程形成一个循环,循环中的每个进程都在等待被相邻进程占用的资源。
僵局的原因
操作电脑时,最常见的问题就是系统的进程死锁。出现这种问题,电脑就会卡死,甚至无法在其他方面操作。进程被卡住的问题有两个原因。让我们和
系统之家
边肖一起探索和学习吧。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到达,然后将邮件S2发送给进程P3;并且进程P3也在发送邮件S3之前等待进程P2的邮件S2到达。在这种情况下,就会形成循环等待,出现死锁。
可以看出,很多进程都在争夺资源,系统提供的资源数量并不能完全满足进程的需求,所以资源不足是死锁的主要原因。但是需要注意的是,不能确定多个进程需要多个资源才能产生死锁。上面的例子还表明,进程运行中的资源需求冲突也是死锁的一个原因。
2.僵局是由不正确的进度顺序造成的。
因为进程的调度是独立的,所以它们请求和释放资源的顺序有很多,有些是不安全的,比如上面提到的临时资源的占用;但是,有些序列是安全的,例如,进程P1和P2需要资源R1和R2。如果两个进程的推进顺序是进程P1占领资源R1,那么在申请R2时,进程P2没有占领R2,这样就不会出现僵局。这说明死锁是一个与时间相关的错误,与每个进程的速度和清除资源的顺序有关。
通过以上两个教程的详细分析,可以简单的解决系统中死锁这个恼人的故障。这是系统最常见的故障,通过学习本教程,我们很容易成为计算机专家。