学习啦 > 学习电脑 > 操作系统 > 操作系统基础知识 >

操作系统为什么会出现死锁

时间: 加城1195 分享

  操作系统中死锁很可能会导致进程堵塞,甚至电脑死机出现,产生的原因一般有多种,那有没有什么解决方法呢。具体是哪几种呢?下面由学习啦小编为大家整理了操作系统的死锁的相关知识,希望对大家有帮助!

  一、操作系统死锁的概念

  死锁是指多个进程在运行过程中因争夺资源造成的一种僵局。若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

  二、操作系统死锁产生的原因

  原因1:进程推进顺序不当引起死锁

  由于进程在运行中具有异步性特征,这可能使P1和P2两个进程按下述两种顺序向前推进。

  当进程P1和P2并发执行时,如果按照下述顺序推进:

  P1:Request(R1);

  P1:Request(R2);

  P1: Relese(R1);

  P1: Relese(R2);

  P2:Request(R2);

  P2:Request(R1);

  P2: Relese(R2);

  P2: Relese(R1);

  这两个进程便可顺利完成,这种不会引起进程死锁的推进顺序是合法的。

  但若P1保持了资源R1,P2保持了资源R2,系统处于不安全状态,因为这两个进程再向前推进,便可能发生死锁。

  原因2:竞争资源引起进程死锁

  a.竞争不可剥夺资源

  在系统中所配置的不可剥夺资源,由于它们的数量不能满足诸进程运行的需要,会使进程在运行过程中,因争夺这些资源而陷于僵局。例如,系统中只有一台打印机R1和一台磁带机R2,可供进程P1和P2共享。假定PI已占用了打印机R1,P2已占用了磁带机R2,若P2继续要求打印机R1,P2将阻塞;P1若又要求磁带机,P1也将阻塞。于是,在P1和P2之间就形成了僵局,两个进程都在等待对方释放自己所需要的资源,但是它们又都因不能继续获得自己所需要的资源而不能继续推进,从而也不能释放自己所占有的资源,以致进入死锁状态。

  b.竞争临时资源

  上面所说的打印机资源属于可顺序重复使用型资源,称为永久资源。还有一种所谓的临时资源,这是指由一个进程产生,被另一个进程使用,短时间后便无用的资源,故也称为消耗性资源,如硬件中断、信号、消息、缓冲区内的消息等,它也可能引起死锁。例如,SI,S2,S3是临时性资源,进程P1产生消息S1,又要求从P3接收消息S3;进程P3产生消息S3,又要求从进程P2处接收消息S2;进程P2产生消息S2,又要求从P1处接收产生的消息S1。如果消息通信按如下顺序进行:

  P1: ···Relese(S1);Request(S3); ···//P1先Relese(S1),在Request(S3)时阻塞

  P2: ···Relese(S2);Request(S1); ···//P2顺利执行

  P3: ···Relese(S3);Request(S2); ···//P3顺利执行,P3执行之后P1被唤起就绪-执行

  并不可能发生死锁。但若改成下述的运行顺序:

  P1: ···Request(S3);Relese(S1);···//P1在Request(S3)时发生阻塞,不执行Relese(S1)

  P2: ···Request(S1);Relese(S2); ···//P2在Request(S1)时发生阻塞,不执行Relese(S2)

  P3: ···Request(S2);Relese(S3); ···//同上。故发生死锁

  三、操作系统死锁解决方法

  (1) 使用协议以预防或避免死锁,确保系统不会进入死锁状态;

  (2) 系统可进入死锁状态,但可检测死锁状态,然后进行恢复;

  (3) 忽视该问题,而认为死锁不可能在系统内发生。 ——即应用程序开发人员来处理死锁问题

3974754