[操作系统基础]死锁的基本概念

1、问题的产生

在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率并提高了系统的处理能力,然而,多个进程的并发执行也带来了新的问题—–死锁。
在单道程序中并不存在这样的问题,因为系统中的程序可以独占所有资源,而在多道程序会共享一些资源,这样就产生了竞争关系,例如

  • P1先使用A资源,后继续使用B资源
  • P2先使用B资源,后继续使用A资源

结果P1占用了A,P2占用了B,它们继续申请获得新资源便无法获得满足,无法向前推进,僵持的状态,这样便是死锁。

指多个进程在运行过程中因争夺资源而造成的一种僵局(deadly-Embrace),若无外力作用,这些进程都将无法向前推进。

2、死锁的必要条件

  • 互斥条件(资源独占条件)
    在某一时刻,如果程序P1获得这个资源,那么它将独占这个资源,别的程序无法使用这个资源。
  • 请求和保持条件(部分分配条件)
    程序获得了部分资源,还想获得剩下的资源。
  • 不剥夺条件
    资源一旦获取,便不可被其他程序剥夺。
  • 循环等待条件(环路条件)
    程序一直等待着某个资源。

3、处理死锁的基本方法

目前处理死锁的基本方法有四种:

  • 预防死锁
    指通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来防止死锁的发生。
  • 避免死锁
    指在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁的发生。
  • 检测死锁
    允许系统在运行过程中发生死锁,但可设置检测机构及时检测死锁的发生,并采取适当措施加以清除。
  • 解除死锁
    当检测出死锁后,便采取适当措施将进程从死锁状态中解脱出来。

猜你喜欢

转载自blog.csdn.net/wayway0554/article/details/79888514