Xenomai 3 和 PREEMPT_RT 相比有什么好处

Q: 我能在我的开发板PREEMPT_RT内核的环境上直接运行POSIX的应用, 那用Xenomai3 的理由是什么呢?

A:如果你的应用已经完全是POSIX,并且性能也满足的话,那并没有什么理由用Xenomai3.但是你可能会基于以下两点考虑采用Xenomai3.

- 你想移植遗留的嵌入式应用到Linux上而不用修改API. 比如说,你不想在POSIX接口上重写API, 这时候Xenomai就能发挥它的用场.因为它通过一个共通的实时性来支持多个编程接口,包括传统的RTOS API, Xenomai3也将在基于PREEMPT_RT的系统上支持这些API.

- 你的目标板的性能不足,或/并且你想要你的实时任务给系统追加最小的负载. 这就是双内核机制优于原生的抢占系统的一个地方. 后者的情况下,所有的Linux系统必须执行内部代码(如优先级继承,中断线程化)来防止实时处理被延迟, 但是在双内核系统里, 并没有这种必要,因为实时内核是区别于Linux内核独立执行的,故而,通常的Linux动作并不会对实时动作有影响,它甚至都不需要知道实时内核.

总而言之, 对这类问题并没有一个统一的答案:它实际上依赖于你对性能的要求和你的开发板的性能. 这是一个case-by-case的东西. 只是说"我们可以在最坏情况下达到X微秒"却不指明板子的性能并没有什么意义.

Xenomai 3 FAQ

Q: I can run POSIX based applications directly over a PREEMPT_RT kernel on my target system, so what is the point of running Xenomai 3 there?

A: If your application is already fully POSIXish, and the performances requirements are met, then there is likely no point. However, you may want to consider Xenomai 3 in two other situations:

  • you want to port a legacy embedded application to Linux without having to switch APIs, i.e. you don‘t want to rewrite it on top of the POSIX interface. Xenomai may help in this case, since it supports multiple programming interfaces over a common real-time
    layer, including emulators of traditional RTOS APIs. Xenomai 3 will make those APIs available to a PREEMPT_RT based system as well.
  • the target hardware platform has limited horsepower, and/or you want the real-time job to put the smallest possible overhead on your system. This is where dual kernels are usually better than a native preemption system. With the latter, all parts of the
    Linux system have to run internal code that prevents real-time activities from being delayed in an unacceptable manner (e.g. priority inheritance mechanism, threaded IRQ handlers). In a dual kernel system, there is no need for this, since the real-time co-kernel
    runs separately from the normal Linux kernel. Therefore, regular Linux activity is not charged for real-time activity, it does not even have to know about it.

In short, there cannot be any pre-canned answer to such a question: it really depends on your performance requirements, and your target hardware capabilities. This has to be evaluated on a case-by-case basis. Telling the world about "we can achieve X microseconds
worst-case latency" without specifying the characteristics of the target platform would make no sense.

原文参考:http://www.xenomai.org/index.php/Xenomai:Roadmap#Xenomai_3_FAQ

Xenomai 3 和 PREEMPT_RT 相比有什么好处

时间: 2024-08-04 18:46:17

Xenomai 3 和 PREEMPT_RT 相比有什么好处的相关文章

MFC消息映射的原理:笔记

多态的实现机制有两种,一是通过查找绝对位置表,二是查找名称表:两者各有优缺点,那么为什么mfc的消息映射采用了第二种方法,而不是c++使用的第一种呢?因为在mfc的gui类库是一个庞大的继承体系,而里面的每个类有很多成员函数(只说消息反映相关的成员函数啊),而且在派生类中,需要改写的也比较少(我用来做练习的程序就是那么一两个,呵呵).那么用c++的虚函数的实现机制会导致什么问题呢?就是大量虚表的建立使得空间浪费掉很多. 嗯-怎么办呢?于是各大c++名库(比如QT,MFC,VCL-)在消息映射的实

如何实现 javascript “同步”调用 app 代码

在 App 混合开发中,app 层向 js 层提供接口有两种方式,一种是同步接口,一种一异步接口(不清楚什么是同步的请看这里的讨论).为了保证 web 流畅,大部分时候,我们应该使用异步接口,但是某些情况下,我们可能更需要同步接口.同步接口的好处在于,首先 js 可以通过返回值得到执行结果:其次,在混合式开发中,app 层导出的某些 api 按照语义就应该是同步的,否则会很奇怪——一个可能在 for 循环中使用的,执行非常快的接口,比如读写某个配置项,设计成异步会很奇怪. 那么如何向 js 层导

【Java 面试】面试

一. 笔试题之Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他.有些题来自网上搜集整理,有些题来自传智播客学员面试后的反馈,说真的,少数一些网上的面试题,我真怀疑其是否还有存在价值! 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有没有goto?

集合练习

package com.lianxi; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Ra

针对集合类容器的归纳总结!

集合是数组的一种延伸, 与数组相比有很多好处和优点 1, 可以存放不同的类型 2, 长度可变 3, 随时存放和获取 六个接口和一个类: List Map Set Iterator Collection Comparable Collections类 选择一种集合类型是一件非常痛苦的事 在以后的编程中要考虑读取和修改的效率问题, 数据的存取在以后的使用过程中, Collection是主要的载体, Array: 读快改慢 Linked: 读慢改快 Hash: 介于两者之间的 串一遍 一个类:Coll

第十五章----容器和集合

容器(Collection) 数组是一种容器, 集合也是一种容器 java编程中, 装其他各种各样的对象(引用类型)的一种东西, 叫容器 (图书馆里所有的书, 要想管理图书馆里所有的书, 就需要先把这些书放到一个东西里面, 目前掌握的知识来说, 只能是数组, 数组的长度是固定的, 这就出现一个问题, 数组的长度该定义成多长 ? 长度是不固定的, 因为不知道有多少本书, 这个时候需要这样一种机制: 定义一种东西, 长度不固定, 可以随时添加和删除, 这种东西就是Collection, 只要不超出内

前端求职初体验--感激

experience 先说下自己的经历吧,之前根本没有考虑过做这一行(天天宅在寝室打LOL),大三上结束的那个寒假还特意买了个微星游戏本(曾经的我有个王者的梦..),结果游戏本买来我却拿来学习了!!!~~o(>_<)o ~~ 一开始自学了ps两个月,结果刚好省里有个外包大赛,然后我就和同学组队参加了,做了个智慧家政项目,进入了决赛,拿了个小奖.很感激这个机会让我对设计,前端与后端有了个初步认识:后来我们专业的主任可能看我还有药可治(尴尬),给我布置了一个任务,完成镇海区信息技术协会网站,我当时

矢量化的HTML5拓扑图形组件设计

HT一直被客户称道的就是其全矢量化的设计特色,矢量相比传统图片好处太多了: www.hightopo.com/guide/guide/core/vector/ht-vector-guide.html 矢量可无级缩放,界面不失真不模糊 描述矢量的文本内容远比图片小得多 目前各种window.devicePixelRatio不一致的设备,矢量可能是唯一彻底的解决方案 业务数据绑定 提起矢量一般都会想到SVG,但这是个坑人的玩意儿,这么多年就没见一个完善的实现者,浏览器实现千差万别,高级属性根本不能玩

hihocoder1093最短路(SPFA算法)

算法描述: 首先将起始节点入队,然后每次从队列中取出一个节点,更新其邻接点的最短路径值,若有被更新,则检查该邻接点是否在队列中,若不在队列中,则入队.如此循环直到队空时算法结束. 当图中不存在负环时,算法一定会收敛,并能得到所求最短路.原因在于,每次从队列中取出一个节点并更新其邻接点的过程其实都是在向最优解逼近的过程,且只有当有更新的时候才可能向队列增加节点.由于不断的再向最优解逼近,所以到最后一定会达到最优解且不再有节点入队,队列最终为空,算法收敛.SPFA算法与dijkstra相比有一个好处