OS 中优先级反转与优先级继承的区别2025年1月7日 | 阅读10分钟 概述优先级反转 和 优先级继承 是操作系统中用于解释序列策略和资源应用的术语。 一个常见的弊端是所谓的优先级反转,这意味着一个高优先级任务可能会长时间被阻塞,因为一个低优先级任务拥有它需要的资源,最终,一个中优先级任务会抢占低优先级任务,导致高优先级任务出现意外延迟。在实时系统的上下文中,这可能会导致性能问题,甚至形成死锁。 优先级继承是解决优先级反转问题的自然解决方案。如果一个资源被一个低优先级任务使用,但高优先级任务也急需该资源,那么该低优先级任务会暂时获得更高的优先级。因此,高优先级任务会取得进展。结果是,减少了不重要的资源占用任务抢占高优先级或资源持有任务的情况,从而导致按应有的优先级完成资源利用率的延迟。这仅仅解释了某种方法支持系统的响应能力,并确保关键任务不会被无限期地占用。 关于优先级反转优先级反转的问题发生在操作系统中,当基于优先级的任务调度不当时,高优先级任务会被低优先级任务阻塞。当一个主任务请求一个必须以更高优先级产生的资源时,就会出现这种情况。例如,假设一个省电任务是一个低优先级任务暂停的互斥锁、信号量或锁。此时,可能被强制抢占低优先级任务的中优先级任务,会导致高优先级任务等待间接的影响。这种影响是延迟,导致优先级反转。 - 场景设置
- 考虑三个具有不同优先级的任务:H 代表高,M 代表中,L 代表低。
- 资源(例如,与任务 L 竞争。它与之并行运行。例如,在到达时(进行一个小仪式——在气闸中),旅程就开始了。
- 任务 H 现在正等待其资源准备运行,但任务 L 目前正占用这些资源。
- 无论如何,L 任务本身可能是一个高优先级进程,这通常会导致 H 任务抢占它,而不是反过来。然而,虽然 L 任务可能因为其持有的必要资源而开始执行,但它无法完成 H 任务。
- 发生反转
- 当任务 M 就绪并需要访问与任务 L 相同的资源时,任务 L 阻塞了任务 H,而任务 M 的优先级高于任务 L 但低于任务 H。
- L 将在 M 任务之前被挂起,因为 M 任务的优先级更高;因此,L 任务将继续等待以释放资源。
- 最终,任务 H 需要在这样的队列中等待 M 任务完成进程,当轮到它时,L 任务将被释放,从而允许访问该资源。
- 对系统性能的影响
- 延迟增加:由于低优先级任务与它一起执行,高优先级任务的已知等待延迟会延长。
- 不可预测性:此外,由于不关键的中优先级任务需要一些时间,系统处理高优先级任务可能需要比实时更长的时间。
- 潜在死锁:在严重情况下,优先级反转如果没有被任何方式阻止,最终可能导致死锁,在具有许多任务和共享资源的复杂系统中,死锁更为常见。
优先级反转的优点- 简化的调度设计
在某些模式下,系统偏好优先级反转,因为它使用了一个简单的调度程序,该调度程序没有被设计成能够处理复杂的优先级设置。这种自动化可以简化初步模式和仪器布局,从而缩短准备时间。 - 资源利用
在某些情况下,更盈利的任务可能提供更有效的资源利用,即使以牺牲一些更高优先级的任务为代价。换句话说,资源可能并没有完全运行,但也没有空闲。
优先级反转的缺点- 性能下降
优先级反转的主要缺点是它会延迟高优先级任务的处理,这种情况可能导致错过截止日期并导致系统性能下降,这在实时系统中最为常见。 - 不可预测性
任务优先级反转导致任务调度不确定,因此很难确保时间关键任务按时完成,这对于实时和嵌入式系统至关重要。 - 潜在死锁
在最复杂的情况下,优先级反转可能导致死锁,即进程仅等待对方持有的资源而无法运行,从而阻碍了系统控制。 - 系统稳定性受损
高优先级任务的长等待队列可能导致系统不稳定,尤其是在基于安全性的系统中。这种关键性在车辆、航空航天和医疗设备中可以看到。 - 降低系统效率
在这种情况下,如果资源分配不当,整体性能会降低,因为这会导致一套标准,包括较低的吞吐量和较高的延迟。 - 调试复杂度增加
优先级反转的诊断和修复即使是专家也无法完成,因为它需要对相互交互的任务及其依赖的资源有深入的了解。 - 对用户体验的影响
在与用户相关的任务中,例如手机或交互式系统,优先级反转可能会导致明显的延迟和不好的用户体验。
关于优先级继承优先级继承是一种操作系统方法,可以防止高优先级任务在低优先级任务执行时被不合理地忽略,从而避免优先级反转。这意味着,对于执行需要高优先级任务资源的低优先级任务,系统会动态地临时改变低优先级任务的优先级。这使得它能够完成对资源的利用并获得更好的进展,从而使高优先级任务能够继续执行。因此,相关的进程可以在没有明显延迟的情况下启动,因为相关的任务被分配了优先级。 - 场景设置
- 任务优先级:假设您需要执行具有 H、M 和 L 优先级的任务。
- 资源获取:在此过程中,L 任务个人免费获得了资源。例如,通过提供其珍贵的礼物并照料植物,我们向花园中的这颗明星致意。
- 高优先级任务阻塞:任务 H 的状态已准备运行,并且它需要任务 L 当前持有的资源。
- 优先级继承机制
- 继承激活:为了避免优先级滑坡的可能性,当任务 H 请求任务 L 拥有的资源时,任务 L 会继承任务 H 的优先级。
- 优先级提升:任务 L 的优先级提升与其等于任务 H 的优先级。这样就保证了任务 L 不会被任何中优先级任务延迟,因为它现在持有资源。
- 进程继续
- 任务 L 完成:由于任务 L 处于高优先级,它会继续运行,不会被具有中优先级的其他任务 M 抢占。
- 资源释放:任务 L 成功完成,从而释放了资源。当我们释放资源时,任务 L 的优先级又回到了较低的水平,以供等待。
- 对系统性能的影响
- 延迟减少:任务 H 具有更高的优先级,响应时间比优先级较低的任务 L 更短,因为任务 L 在利用该资源时比任务 H 更受青睐。
- 提高可预测性:通过实时执行,高优先级任务对完成时间的预测影响较小,因为由于优先级反转而延迟的可能性降低。
- 防止死锁:通过确保持有关键资源的低优先级任务能够快速完成,最大限度地降低了死锁的风险。
优先级继承的优点- 改善实时性能
高优先级任务首先获得对可用处理器和系统资源的优先访问权,从而实现连续响应和实时系统控制。 - 死锁预防
通过一种机制,该机制通过赋予等待重要资源的任务更高的优先级来工作,从而,例如,降低了死锁的风险,死锁本质上是任务由于周期性冲突而未能释放其资源的情况。 - 实现简单
优先级继承在调度算法中占有一席之地,因为它比复杂的算法更容易实现,这引出了一个问题:实时操作系统实现起来有多容易? - 保持系统响应能力
在较低的优先级层面,剩余的任务,它们很可能持有资源,被加速,这使得高优先级任务能够成功继续,而不会在关键功能上出现延迟。
优先级继承的缺点- 潜在的优先级反转
尽管优先级继承可以减少(甚至消除)优先级反转,但(反转)仍然部分存在。在这方面,基本的优先级继承可能导致优先级反转的产生,尤其是在粗心实现时。 - 增加复杂性
释放优先级继承机制以妨碍调度程序性能的可能性很高,尤其是在资源有限的情况下。 - 调度异常
在类似情况下,优先级继承功能经常导致不希望发生和计划外的调度事件,尤其是在任务频繁重新排序导致这种行为不可预测的情况下。 - 潜在的优先级振荡
支持优先级继承其他功能的实时任务调度版本可能导致优先级反转缺陷,其中任务频繁更改优先级,从而浪费时间和破坏系统进程的稳定性。 - 复杂调试
确保系统平稳运行以揭示瓶颈(例如性能不佳或与优先级继承相关的奇怪行为)实际上是艰巨的,需要对任务交互和资源重叠进行详尽的研究。
优先级反转与优先级继承的区别 优先级反转与优先级继承之间有几个区别如下 - 定义
- 优先级反转:优先级反转是一种情况,即高优先级作业被低优先级作业长时间使用共享资源所延迟;因此,它可能导致性能下降。
- 优先级继承:优先级继承是旨在防止优先级反转的机制之一,它能够暂时提高持有关键资源(当前)的低优先级任务的优先级,以便高优先级任务可以访问它们。
- 原因
- 优先级反转:当高优先级任务因低优先级任务占用了高优先级任务所需资源而受阻时,就会发生这种情况。
- 优先级继承:为了在这些情况下保持预防性保护,它不仅提高了占用关键资源的低优先级任务的优先级,还避免了高优先级任务的轻微延迟(通过交付)。
- 机制
- 优先级反转:从操作系统的调度角度来看,会发生优先级反转,任务会竞争有限的资源。
- 优先级继承:这是旨在解决优先级反转问题的特定策略。因此,所有高优先级任务都可以公平地使用系统资源。
- 解决方案
- 优先级反转:为了维持运行条件,这是需要考虑的事情。
- 优先级继承:因此,它代表了一种选择优先级序列的方式,因此,高优先级任务不会在一些低优先级任务拥有关键资源的情况下被不公平地等待。
- 对性能的影响
- 优先级反转:它可能会大大降低系统的性能效率,导致更高的延迟以及整体任务系统性能响应能力和延迟。
- 优先级继承:调度程序通过加快高优先级任务的完成来提高系统响应能力,这也可以排除死锁情况。
- 范围
- 优先级反转:在这种情况下,在共享资源竞争的活动系统中,这通常是一种自然发生的情况。
- 优先级继承:它是故意的,可以削弱优先级反转,并提供公平门户划分的机会。
- 复杂度
- 优先级反转:处理优先级反转以解决此问题需要复杂的资源管理和优先级调度关键算法。
- 优先级继承:虽然它在其基础层面上需要一些实现复杂性,但通常比正常避免优先级反转要简单。
- 优先级调整的时机
- 优先级反转:只有当多任务处理在具有不同优先级的条件下进行时,优先级才能导致优先级反转。
- 优先级继承:它意味着临时调整较低(但不是最低)优先级项的优先级,以确保许多重要任务的完成。
- 系统稳定性
- 优先级反转:如果管理不当,各方可能会陷入僵局,无法取得任何进一步进展。
- 优先级继承:它通过在需要时有效地为高优先级任务提供所需资源,从而为哈希系统提供所需的稳定性。
- 有效性
- 优先级反转:这样的障碍会导致系统功能下降,如果出现这种情况,解决此挑战至关重要。
- 优先级继承:然而,问题在于它提高了抢占的敏感性,从而导致操作系统运行缓慢且效率低下。
|