操作系统是计算机上运行的最基本的软件。它负责管理计算机的内存和进程,并从使用该应用程序的应用程序中屏蔽硬件的细节。计算机的操作系统还确保将资源公平分配给用户和程序,而不是在进程之间平均分配。一个公平的调度系统允许一个进程使用CPU,而另一个进程在队列中等待。结果,每个线程都具有对有限资源的足够访问权限,从而避免了两个最常见的情况,这些情况原本会延迟进程:死锁和饥饿。两者都是相关的概念,其中进程无法访问资源。本文重点介绍了比较各个方面的两个关键点。

 什么是死锁?

死锁是指一组线程被阻塞的情况,因为拥有资源的每个进程都试图访问另一个进程所拥有的其他资源,从而最终阻止了公平的系统调度。 当以下四个条件成立时,就会出现死锁情况:互斥意味着一次只能有一个进程访问资源; 没有抢占条件意味着资源只能由拥有该资源的进程自愿释放; 保留并等待意味着拥有资源的进程可以请求其他进程拥有的其他资源; 循环等待意味着将两个或多个进程卡在循环链中,等待每个进程释放各自的资源。

什么是饥饿?

饥饿是这样一种情况 - 当进程无限期地进入等待期时,由于高优先级进程不断访问同一资源,因此低优先级进程从未获得访问资源的机会。 这是资源管理问题,因为拒绝进程访问其所需的资源,从而将进程推入不确定的等待时间。 之所以会发生这种情况,是因为它所需要的资源从未分配给进程,从而导致该进程缺少资源,因此得不到名称。 避免饥饿的最佳方法是使用老化技术,该技术会逐渐增加长时间处于等待期的进程的优先级,以确保公平的调度系统。

操作系统中死锁和饥饿的区别

  1. 死锁和饥饿的定义
    死锁和饥饿都是相关的概念,它们阻止公平的系统调度,在该调度中阻止进程访问资源。顾名思义,死锁是指一组线程或进程被阻塞的情况,因为每个进程都在等待获取另一进程持有的资源,从而导致程序停止运行的死锁情况。另一方面,饥饿是由死锁触发的,死锁会导致进程冻结,因为低优先级进程被拒绝访问分配给高优先级进程的资源。

  2. 条件
    死锁是指当线程或进程进入等待周期时发生的特定条件,因为它所请求的系统资源由另一个进程持有,而另一个进程又在等待另一个进程释放其资源从而创建死锁。这是由于资源利用率不高引起的。饥饿是无限期的延迟条件,由于资源被分配给另一个高优先级进程,因此低优先级进程被拒绝访问其所需的资源。这是一个资源管理问题,迫使系统仅将资源分配给高优先级进程。

  3. 死锁和饥饿的表征
    死锁是同时发生以下四个条件时导致的饥饿的最终形式:互斥,无抢占,保留和等待以及循环等待。死锁条件仅在所有四个条件都成立的系统中发生。饥饿是根据不同的条件而发生的,例如,当没有足够的资源可以使用时,进程的优先级开始降低,或者当进程开始将资源移交给其他进程而无法控制时。如果低优先级进程请求为高优先级进程保留的资源,则该进程将永远饿死。当任意分配资源导致进程等待更长的时间时,也会发生饥饿。

  4. 预防
    可以通过对优先级队列使用适当的调度算法来防止饥饿,实际上它也使用了老化技术–一种调度技术,该算法将老化因子添加到每个请求的优先级中,这意味着它增加了一直在等待的低优先级进程的优先级需很长时间。另外,为计划提供更多资源应避免资源持续拥挤。为防止系统陷入僵局,必须拒绝进程访问一个或多个资源,同时等待其他资源,并且一次只能允许一个进程访问资源。

总结

死锁和饥饿都是在多处理操作系统或分布式系统中的相关概念,它们会导致一个或多个线程或进程陷入等待其所需资源的状态。 死锁是当一个或多个进程请求访问同一资源而导致进程冻结时出现的情况,而死机是由死锁引起的,死锁将进程推向不确定的延迟状态,因为进程被拒绝访问某个资源所拥有的资源。 高优先级的进程,需要永远等待。

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:操作系统的死锁和饥饿
本文链接:https://www.vsdiffer.com/vs/deadlock-vs-starvation-in-operating-system-os.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。