OS 中死锁的必要条件

2024 年 8 月 28 日 | 3 分钟阅读

在本教程中,我们将学习操作系统中最重要的主题。主题名称是死锁。我们已经知道死锁在操作系统中造成的损害。

我们将学习操作系统(OS)中发生死锁所需的条件。在深入探讨导致死锁的条件之前,我们将学习死锁概念及其发生的原因。

死锁

为了运行,系统中的每个进程都需要中央处理单元(CPU)、文件存储、输入或输出设备等。进程拥有资源,并在持有资源的进程执行完成后释放。另一方面,当多个进程在系统上并发运行时,对这些资源的竞争增加。这可能导致死锁。

死锁发生于多个进程因占有资源而受阻,并需要等待必须由另一个进程获取的资源。结果,没有进程运行。

死锁是一个无限过程。

这可能导致死锁问题。

死锁的缺点

  1. 死锁是一个无限过程。只有检测、解决、预防技术。但是,没有死锁停止技术。
  2. 进程等待进程

操作系统(OS)中死锁所需的条件

死锁在操作系统中发生有四个条件。条件是

  1. 持有并等待
  2. 不可抢占
  3. 互斥
  4. 循环等待

现在,让我们详细解释每个条件。

持有并等待

现在,让我们了解“持有并等待”是如何导致操作系统中死锁的。

“持有并等待”是一个进程阻止资源共享给任何其他进程的过程。由于这种持有,进程倾向于进入等待状态。因此,由于这种等待状态,进程停止执行。

如果进程无限期地持有资源,那么等待也将无限期地进行。因此,等待进程后面的进程也倾向于进入等待状态。由于进程的这种持续等待状态,名为死锁的条件将发生在所有处于等待状态的进程中。

这就是死锁发生条件中的“持有并等待”条件。

不可抢占

现在,让我们了解名为“不可抢占”的条件以及它如何在操作系统中导致死锁。

首先,让我们了解什么是抢占。

当一个进程从运行状态转换到就绪状态,或从等待状态转换到就绪状态时,会使用抢占。资源,主要是 CPU 周期,会在一段设定的时间内分配给进程,然后被移除;如果进程仍有剩余的 CPU 突发时间,它会被放回就绪队列。直到它获得下一次运行机会,进程会一直停留在就绪队列中。

在这里,由于没有抢占,进程会一直执行直到完成。假设,如果当前正在执行的进程是一个非常大的进程。让我们假设这个大进程需要无限时间才能完成。

根据非抢占式方法,在进程完成之前不能跳过该进程。因此,当前正在运行的大进程将需要无限时间才能完成其执行。但是,在此之前,所有进程都必须在就绪队列中等待轮到它们。这种无限期的等待导致了操作系统中的死锁现象。

互斥

现在,让我们了解什么是互斥以及互斥如何在操作系统中导致死锁。

  • 互斥是指只允许单个进程访问操作系统中存在的资源的过程。
  • 如果操作系统中存在此条件,则会发生“持有并等待”条件。
  • 因此,由于可能发生无限等待,这将导致操作系统中执行的进程死锁。

循环等待。

循环等待是进程之间相互依赖并导致操作系统死锁的条件。