OS中死锁和饥饿之间的区别

作者: Laura McKinney
创建日期: 3 四月 2021
更新日期: 23 四月 2024
Anonim
死锁预防
视频: 死锁预防

内容


死锁和饥饿都是请求资源的进程被延迟很长时间的条件。尽管僵局和饥饿在许多方面都彼此不同。 僵局 是没有进程继续执行的条件,每个进程都在等待其他进程已获取的资源。另一方面,在 饥饿优先级高的进程连续使用资源,而防止优先级低的进程获取资源。让我们借助下面显示的比较表来讨论死锁和饥饿之间的更多区别。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 结论

比较表

比较基础僵局饥饿
基本的死锁是没有进程继续进行并被阻塞的地方。饥饿是低优先级进程被阻塞,高优先级进程继续进行的地方。
产生条件互斥,保留和等待,无抢占和循环等待同时发生。优先执行,不受控制的资源管理。
其他名字循环等待。生命锁。
资源资源在死锁状态下,请求的资源被其他进程阻塞。饥饿时,高优先级进程会不断使用所请求的资源。
预防避免相互排斥,保留和等待以及循环等待并允许抢占。 老化。

死锁的定义

死锁是指CPU中的多个进程争夺CPU中有限数量的可用资源的情况。在这里,每个进程都拥有一个资源,并等待获取某个其他进程所拥有的资源。所有进程都以循环方式等待资源。在下图中,您可以看到进程P1已获取了进程P2请求的资源R2,而进程P1正在请求资源R1,该资源又由R2保留。因此,进程P1和P2形成死锁。


死锁是多处理操作系统,分布式系统以及并行计算系统中的常见问题。引发死锁的条件必须同时发生四个条件,即互斥,保持和等待,无抢占和循环等待。

  • 互斥: 如果其他进程请求相同的资源,则一次只能有一个进程可以使用资源,它必须等到使用资源的进程释放它。
  • 保持并等待: 一个进程必须持有一个资源并等待获取某个其他进程持有的另一个资源。
  • 无抢占: 拥有资源的进程不能被抢占。拥有资源的进程在完成任务后必须自愿释放资源。
  • 循环等待: 该过程必须以循环方式等待资源。假设我们有三个进程{P0,P1,P2}。 P0必须等待P1拥有的资源; P1必须等待获取进程P2所拥有的资源,而P2必须等待获取P0所拥有的进程。

尽管有些应用程序可以检测到可能陷入僵局的程序。但是操作系统从不负责防止死锁。程序员负责设计无死锁的程序。可以通过避免发生死锁所需的上述条件来完成此操作

饥饿的定义

饥饿可以定义为一个进程对资源的请求,而该资源已被其他进程连续使用,然后请求的进程面临饥饿。饥饿时,准备执行的进程将等待CPU分配资源。但是该进程必须无限期地等待,因为其他进程不断阻塞请求的资源。

饥饿的问题通常发生在 优先级调度算法。在优先级调度算法中,总是向具有较高优先级的进程分配资源,以防止较低优先级的进程获取请求的资源。

老化 可以解决饥饿的问题。老化会逐渐增加等待资源的过程的优先级。老化可防止低优先级的进程无限期地等待资源。

  1. 在死锁中,没有一个进程继续执行,每个进程都被阻塞,等待另一个进程获取的资源。另一方面,饥饿是通过阻止低优先级进程获取资源而导致无限期阻塞低优先级进程而允许具有较高优先级的进程连续获取资源的条件。
  2. 当四个条件时出现死锁 互斥,保留和等待,无抢占和循环等待 同时发生。然而,饥饿发生在过程中 优先事项已经执行 分配资源时,或者系统中的资源管理不受控制。
  3. 死锁通常被称为 循环等待 而饥饿被称为 活锁.
  4. 在死锁中,资源被进程阻塞,而在饥饿中,进程被优先级高的进程连续使用。
  5. 通过避免诸如互斥,保持和等待以及循环等待之类的条件,并允许长时间抢占资源的进程,可以防止死锁。另一方面,饥饿可以通过以下方式预防 老化.

结论:

死锁和饥饿都通过阻止进程来延迟进程执行。一方面,死锁会导致进程饥饿,另一方面,饥饿会使进程摆脱僵局。