跳转至

死锁的概念

1. 死锁的定义

死锁指的是各进程互相等待对方手里的资源,导致所有进程都阻塞,无法前进的现象。

死锁的概念

死锁产生的主要原因

  1. 竞争资源

    • 描述:当系统中的资源不足以同时满足多个进程的需求时,会引发资源竞争,从而导致死锁。例如,多个进程需要同时访问打印机或数据库,但这些资源数量有限。

    • 示例:两个进程同时需要访问一台打印机,但系统中只有一台打印机可用。一个进程占用了打印机,另一个进程因此被阻塞,形成竞争。

  2. 进程推进顺序不当

    • 描述:当进程在运行过程中请求和释放资源的顺序不当,也会导致死锁。例如,一个进程持有资源 A,同时等待资源 B,而另一个进程持有资源 B,同时等待资源 A。

    • 示例:进程 A 持有资源 1,并请求资源 2;而进程 B 持有资源 2,并请求资源 1。如果没有合适的顺序控制,就会导致进程 A 和进程 B 互相等待,无法继续执行。

死锁的必要条件

死锁的产生通常需要以下四个条件同时满足:

  1. 互斥条件:资源不能被多个进程共享,即每个资源只能由一个进程占用。
  2. 请求和保持条件:进程在保持至少一个资源的情况下,又提出了新的资源请求,而该资源被其他进程占用。
  3. 不剥夺条件:进程已获得的资源在未使用完之前,不能被剥夺,只能由进程自己释放。
  4. 循环等待条件:存在一个进程链,使得每个进程都在等待链中的下一个进程所持有的资源。

特别注意

只要有一个必要条件不满足,则死锁就可以排除。