linux – 什么使内核/ OS实时?
我正在阅读
this文章,但我的问题是一般性的,我在考虑以下几点:
>内核是否可以实时调用,因为它具有实时调度程序?或者换句话说,假设我有一个Linux内核,如果我将默认调度程序从O(1)或CFS更改为实时调度程序,它是否会成为RTOS? 我真的很感激它的一些输入/见解,如果我对某事有误,请纠正我. 解决方法
在做了一些研究之后,与人们交谈(Jamie Hanrahan,Juha Aaltonen @linkedIn Group – 设备驱动专家)以及@Jim Garrison的输入,我可以得出结论:
在Jamie Hanrahan的话中 – 是什么让内核实时? >能够保证外部中断与中断处理程序启动之间的最大延迟. 请注意,最大延迟不需要特别短(例如微秒),您可以拥有一个实时操作系统,保证绝对最大延迟为137毫秒. 这通常与保证响应中断的最大延迟的问题是分开的(因为中断处理程序不一定像普通线程一样进行调度),但通常需要实现实时应用程序.实时操作系统中的调度程序通常实现大量优先级.并且它们几乎总是实现优先级继承,以避免优先级反转情况. 因此,保证中断的延迟和线程调度的可预测性是好的,那么为什么不让每个操作系统都实时? >因为适合一般用途(服务器和/或桌面)的操作系统需要具有通常与实时延迟保证不一致的特性. 例如,实时调度程序应具有完全可预测的行为.这意味着,除了其他事项之外,开发人员为各种任务分配的优先级应由操作系统单独留下.这可能意味着一些低优先级的任务最终会长时间处于饥饿状态.但RT操作系统不得不耸耸肩说“这就是开发人员想要的东西”.请注意,为了获得正确的行为,RT系统开发人员必须担心任务优先级和CPU亲和力等问题. 通用操作系统正好相反.您希望能够在其上抛出应用程序和服务,几乎总是由许多不同供应商编写的东西(而不是像大多数R-T系统那样紧密集成的系统),并获得良好的性能.也许不是绝对最好的表现,但好. 请注意,“良好性能”不仅仅是在中断延迟中测量的.特别是,您希望CPU和其他资源分配通常被描述为“公平”,没有用户或管理员,甚至应用程序开发人员不必担心线程优先级和CPU关联性和NUMA节点等问题.一项工作可能比另一项工作更重要,但在通用操作系统中,这并不意味着第二项工作根本就没有资源. 因此,通用操作系统通常会在相同优先级的线程之间实现时间分片,并且可以根据其过去的行为调整线程的优先级(例如,CPU hog可能优先级降低; I / O绑定线程可能具有其优先级优先级增加,因此它可以保持I / O设备正常工作; CPU缺乏的线程可能会提升其优先级,因此它可以获得一点CPU时间. 内核可以实时调用,因为它有实时调度程序吗? >不,RT调度程序是RT OS的必要组件,但您还需要在OS的其他部分中进行可预测的行为. 它需要硬件的任何支持吗? >通常,硬件越简单,其行为越可预测.因此,PCI-E比PCI更难以预测,并且PCI比ISA等更不可预测.有一些特定的I / O总线被设计用于(除此之外)容易预测的例如.中断延迟,但现在可以通过商用硬件满足很多R-T要求. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |