操作系统中死锁的必要条件
在本教程中,我们将学习操作系统中最重要的主题之一,即死锁。我们已经知道死锁对操作系统造成的损害。
我们将学习发生死锁所需的条件。在进入导致死锁的条件之前,我们将学习死锁的概念及其发生原因。
死锁
为了运行,系统中的每个进程都需要中央处理单元(CPU)、文件存储、输入或输出设备等资源。当持有资源的进程执行完毕时,该进程会释放资源。另一方面,当系统上同时运行多个进程时,对这些资源的竞争会增加。这可能会导致死锁。
当几个进程被占用某个资源并需要等待由另一个进程获取的资源时,就会发生死锁。因此,没有任何一个进程能运行。
死锁是一个无限循环的过程,这可能会导致死锁问题。
死锁的缺点
- 死锁是一个无限过程。只有检测、解决和预防技术,但没有死锁停止技术。
- 进程等待进程
操作系统中死锁的必要条件
导致操作系统中发生死锁有四个条件。这些条件是:
- 占有并等待
- 无抢占
- 互斥
- 循环等待
现在,让我们详细解释每个条件。
占有并等待
现在,让我们了解占有并等待如何在操作系统中引起死锁。
占有并等待是一个进程阻止资源与任何人或任何进程共享资源的过程。由于此持有,进程倾向于进入等待状态。因此,由于等待状态,进程停止执行。
如果进程无限期地持有资源,则等待也会无限期进行。因此,等待进程背后的进程也倾向于进入等待状态。由于进程的不断等待状态,所有处于等待状态的进程都会发生名为“死锁”的情况。
这就是占有并等待条件在导致死锁的条件中的作用。
无抢占
现在,让我们了解无抢占条件,它将在操作系统中引起死锁。
首先,让我们了解什么是抢占。
当进程从运行状态转换到就绪状态或从等待状态转换到就绪状态时,会使用抢占技术。资源(主要是 CPU 周期)在被移除之前分配给进程一段时间;如果进程还剩下 CPU 暴增时间,则将其放回准备队列。在其后续运行机会到来之前,进程将保持在准备队列中。
在此,由于缺少抢占,进程会执行直至完成。假设此时正在执行的进程是非常大的进程。假设这个大进程需要无限时间才能完成。
根据非抢占式方法,直到进程完成为止,不能跳过进程。因此,现在正在运行的大进程将需要无限长时间才能完成其执行。但是,在那之前,所有进程都必须等待在就绪队列中等待轮到它们。这种无限等待会导致操作系统中的死锁综合症。
互斥
现在,让我们了解什么是互斥以及互斥如何在操作系统中引起死锁。
- 互斥是指只允许单个进程访问操作系统中存在的资源。
- 如果操作系统中存在这种情况,则会出现“占有并等待”条件。
- 因此,可能会发生无限等待,从而导致正在执行的进程在操作系统中发生死锁。
循环等待
循环等待是指一个进程依赖于其他进程并导致操作系统中发生死锁的条件。