我正在阅读this文章,但是我的问题是通用的,我在考虑以下方面:

  • 是否可以仅因为它具有实时调度程序而将其称为实时内核?换句话说,如果我有一个Linux内核,并且如果将默认调度程序从O(1)CFS更改为real time scheduler,它将成为RTOS吗?
  • 是否需要硬件的任何支持?通常,我已经看到具有RTOS的嵌入式设备(例如VxWorks,QNX),这些设备是否有任何特殊规定/硬件来支持它们?我知道RTOS进程的运行时间是确定的,但随后可以使用longjump/setjump在确定的时间内获取输出。

  • 我真的很感谢您的投入/见解,如果我对某些事情有误,请纠正我。

    最佳答案

    经过研究后,与人(Jamie Hanrahan,Juha Aaltonen @linkedIn组-设备驱动程序专家)交谈,当然还有@Jim Garrison的输入,我可以得出以下结论:

    Jamie Hanrahan 的话来说,

    是什么使内核实时?
    实时操作系统的必要条件-

  • 的能力可确保在外部中断与中断处理程序启动之间的最大延迟

    请注意,最大等待时间不必特别短(例如,微秒),您可以拥有一个实时操作系统,该操作系统可以保证绝对最大等待时间为137毫秒。
  • 实时调度程序是一种为线程调度(“下一步运行哪个线程”)提供完全可预测的(对开发人员而言)的行为。

    通常,这与保证最大响应延迟的问题是分开的(因为中断处理程序不一定像普通线程一样进行调度),但通常有必要实现实时应用程序。实时OS中的调度程序通常实现大量的优先级。并且它们几乎总是实现优先级继承,以避免优先级反转的情况。

  • 因此,最好保证中断的延迟和线程调度的可预测性,那么为什么不使每个OS都实时呢?
  • 因为适合通用用途的操作系统(服务器和/或台式机)需要具有通常与实时延迟保证不一致的特性。

    例如,实时调度程序应具有完全可预测的行为。这意味着,除其他事项外,开发人员为各种任务分配的优先级应由OS独自处理。这可能意味着某些低优先级的任务最终会长时间饿死。但是RT OS必须耸耸肩说“开发人员想要的”。请注意,要获得正确的行为,RT系统开发人员必须担心很多事情,例如任务优先级和CPU亲和力。

    通用OS正好相反。您希望能够将应用程序和服务(几乎总是由许多不同的供应商编写的东西)扔在上面(而不是像大多数R-T系统那样是一个紧密集成的系统),并获得良好的性能。也许不是绝对最佳的性能,而是好的。

    请注意,“良好的性能”不仅可以通过中断延迟来衡量。特别是,您希望CPU和其他资源分配通常被描述为“公平”,而用户,管理员甚至应用程序开发人员不必担心线程优先级,CPU关联性和NUMA节点之类的问题。一个工作可能比另一个工作更重要,但是在通用操作系统中,这并不意味着第二个工作根本就不会获得任何资源。

    因此,通用操作系统通常会在优先级相同的线程之间执行时间分片,并可能根据其过去的行为来调整线程的优先级(例如,CPU pig 的优先级可能会降低; I/O绑定(bind)的线程可能会对其优先级降低)。优先级提高了,因此可以使I/O设备正常工作; CPU短缺的线程的优先级可能会提高,因此有时会占用一点CPU时间。

  • 是否可以仅由于内核具有实时调度程序而将其称为实时内核?
  • 不,RT调度程序是RT OS的必要组件,但是您在OS的其他部分也需要可预测的行为。

  • 是否需要硬件的任何支持?
  • 通常,硬件越简单,其行为就越可预测。因此,PCI-E的可预测性不如PCI,而PCI的可预测性却不如ISA等。有一些专门的I/O总线是为(例如)简单的可预测性而设计的。中断延迟,但是如今,使用商品硬件可以满足很多R-T要求。
  • 关于linux - 是什么使内核/OS实时?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22241264/

    10-13 03:42