📜  操作系统死锁简介

📅  最后修改于: 2020-12-14 03:48:00             🧑  作者: Mango

死锁简介

每个进程都需要一些资源来完成其执行。但是,资源是按顺序授予的。

  • 该过程需要一些资源。
  • 如果资源可用,则OS会授予该资源,否则让进程等待。
  • 该过程使用它并在完成时释放。

死锁是一种情况,其中每个计算机进程都在等待分配给另一个进程的资源。在这种情况下,由于所需的资源由其他正在等待释放其他资源的进程所保留,因此没有任何进程被执行。

让我们假设存在三个过程P1,P2和P3。存在三个不同的资源R1,R2和R3。 R1分配给P1,R2分配给P2,R3分配给P3。

一段时间后,P1要求R2正在使用R1。 P1暂停执行,因为没有R2就无法完成。 P2还要求P3正在使用R3。 P2也停止执行,因为没有R3就无法继续执行。 P3还要求R1被P1使用,因此P3也停止执行。

在这种情况下,三个过程之间将形成一个循环。没有任何进展,他们都在等待。由于所有进程都被阻止,因此计算机无响应。

饥饿与僵局之间的区别

Sr. Deadlock Starvation
1 Deadlock is a situation where no process got blocked and no process proceeds Starvation is a situation where the low priority process got blocked and the high priority processes proceed.
2 Deadlock is an infinite waiting. Starvation is a long waiting but not infinite.
3 Every Deadlock is always a starvation. Every starvation need not be deadlock.
4 The requested resource is blocked by the other process. The requested resource is continuously be used by the higher priority processes.
5 Deadlock happens when Mutual exclusion, hold and wait, No preemption and circular wait occurs simultaneously. It occurs due to the uncontrolled priority and resource management.

死锁的必要条件

  • 互斥
  • 资源只能以互斥的方式共享。这意味着,如果两个进程不能同时使用同一资源。

  • 保持并等待
  • 进程在等待某些资源的同时保留另一资源。

  • 无抢占
  • 计划好的流程将一直执行到完成为止。调度程序无法同时调度其他进程。

  • 循环等待
  • 所有进程都必须以循环方式等待资源,以便最后一个进程正在等待第一个进程所持有的资源。