操作系统5-死锁基本概念

5.死锁基本概念

死锁概念:一组进程中每个进程都无限等待被该组进程中另一进程所占有的资源,而处于的一种僵持局面,若无外力作用,它们都无法向前推进, 这种现象称为进程死锁(Deadlock),这组进程就称为死锁进程。

5.1 死锁举例

  • 例1:
    两个小孩在一起玩耍,一个在玩皮球,另一个玩自动步枪,如果这两个小孩都要对方手中的玩具,而又不肯先放掉自己拿着的玩具,这时就发生了僵持局面。
  • 例2:
    设系统有一台打印机和一台扫描仪,进程P1、P2并发执行,在某时刻T,进程P1和P2分别占用了打印机和扫描仪。在时刻T1(T1>T),P1又要申请扫描仪,但由于扫描仪被P2占用,P1只有等待。在时刻T2(T2>T),P2又申请打印机,但由于打印机被P1占用,P2只有等待。如此两进程均不能执行完成。称这种现象为死锁。

5.2 死锁产生的原因

5.2.1 竞争资源引起进程死锁
  • 可剥夺和非可剥夺资源
    ①可剥夺资源:进程在获得这个资源后可以在被其它进程或系统剥夺
    ②非可剥夺资源:资源被系统分配给某个进程后就不能强行收回,只能进程自己释放
  • 竞争非可剥夺资源
  • 竞争临时性资源(进程通信时)
5.2.2 进程推进顺序不当引起死锁

ss

5.3 死锁产生的必要条件

必要条件

  • 涉及的资源是非共享的
  • 不能剥夺进程拥有资源
  • 进程在等待一新资源时继续占有已分配的资源
  • 存在一种进程的循环链,链中的每一个进程已获得的资源同时被链中的下一个进程所请求

5.4 死锁的基本处理方法

1.预防死锁(deadlock prevention)
通过设置某些限制条件,去破坏死锁四个必要条件中的一个或多个,来防止死锁。
特点:

  • 较易实现,广泛使用。
  • 由于所施加的限制往往太严格,可能导致系统资源利用率和系统吞吐量的降低。

2.避免死锁(deadlock avoidance)
不事先采取限制去破坏产生死锁的条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁的发生。
特点:

  • 事先只需要较弱的限制条件,可获得较高的资源利用率和系统吞吐量。
  • 实现较难。

3.检测死锁(deadlock detection)

  • 事先并不采取任何限制,也不检查系统是否进入不 安全区,允许死锁发生;
  • 但可通过检测机构及时检测出死锁的发生,并精确 确定与死锁有关的进程和资源,然后采取适当措 施,将系统中已发生的死锁清除掉。

4.解除死锁(deadlock recovery)

  • 与检测死锁相配套,用于将进程从死锁状态解脱
    出来。
  • 常用的方法是撤消或挂起一些进程。以回收一些
    资源,再将它们分配给处于阻塞状态的进程,使
    之转为就绪状态。
  • 实现难度大,但可获得较好的资源利用率和系统
    吞吐量。

猜你喜欢

转载自blog.csdn.net/maniacxx/article/details/81152479