Dovetail 接口简介

legonext 2021-11-18 09:29:05

   一. Dovetail介绍

        多年来,使用 Linux 作为轻量级软件内核的宿主并能专门提供极短且有限的响应时间,一直是嵌入式领域支持实时应用的流行方式。

       使用 Linux 作为轻量级主机的这种双内核设计使 Linux 内核中引入了一个小型实时架构,使它可以独立于正在进行的通用内核工作并能够立即处理out-of-band任务。由架构共同管理的应用线程仍然受益于通用内核服务,例如虚拟内存管理;这些应用程序也可以利用 Linux 提供的丰富 GPOS 功能集,例如网络、数据存储或 GUI。

        将实时核与 GPOS 架构分开有很多好处:

  • 由于自治核在运行时间关键的操作时并不依赖于宿主内核的逻辑,因此实时活动在内部不会与 GPOS 操作序列化。从结构上,这就消除了由GPOS引起的潜在的延迟。因此,没有必要在任何时候保持所有 GPOS 操作的细粒度和高可抢占性。在系统范围内广泛应用的任务优先级继承和 IRQ 线程机制影响了所有的任务更不要说那些没有实时性要求的任务要求了,而这些行为都会导致显著的延迟开销。总而言之,内核在内部维护实时性保障的努力越少,应用程序可用的 CPU 带宽就越多。
  • 在调试实时问题时,实时基础构架与内核代码其余部分的功能隔离将错误追踪限制在小型自治内核的范围内,排除了与大核GPOS 的大多数的交互来源。
  • 通过专用的实时构架提供一组特定的、定义明确的实时服务,应用程序可以明确地找出哪些 API 调用可用于支持时间关键的工作,同时也排除了其他的在响应时间方面可能是不确定的API的使用.

       换种说法,您是否会假设 glibc 中的每个例程仅凭运行于在本机中的抢占系统而具有实时能力?您当然不会,因此在任何情况下您都会仔细选择实时程序需要调用的服务集以满足时间关键的工作需求。出于这个原因,通过提供一套紧凑的、专用的 API 来提供一组专门针对实时使用的服务显然是有价值的而不是一种限制。

       Dovetail是一套内核接口,它将高优先级执行阶段机制引入主内核逻辑。任何时候,在这个阶段运行的out-of-band工作都可以抢占通用的工作。特定任务的软件内核——例如实时内核——可以连接到这个接口,以获得对外部中断的有界响应时间和超低延迟调度能力。这转化为 Dovetail 实现如下:

  • 中断管道,它为自主实时核心运行创建高优先级执行阶段。
  • 支持所谓的主内核和自主实时内核之间的交替调度,以共享 kthreads 和用户任务。

       虽然实现一个自治实时内核可能需要这两层,但在移植 Dovetail 的早期阶段只需要启用中断管道。对交替调度的支持建立在后者的基础上,并且可能也应该被推迟到管道在目标架构或平台上完全正常运行后。代码库是允许以这种增量过程的方式专门维护的。

       Dovetail 仅将托管自治内核的基本机制引入内核,为其在用户空间中的应用程序启用通用编程模型。它本身并不实现实时内核,而应该由单独的内核组件提供,例如 EVL 内核或Cobalt内核。

二. 为什么我们需要Dovetail?

        基于 Linux 的双内核系统需要一些接口层来将辅助第二个内核(通常是像 EVL 内核这样的实时内核)与其要嵌入的内核逻辑耦合,以便从丰富的 Linux 功能集中受益,同时运行具有严格实时要求的专用应用程序。这种接口的典型实现是 I-pipe,多年来它同时服务于 RTAI 和 Xenomai 3 Cobalt。由于这个文档[1]中解释的几个原因,维护 I-pipe 被证明是困难的,因为对主线内核的更改经常导致比较严重的代码冲突,有时会导致I-pipe 的严重倒退。尽管中断流水线的概念在对原始内核进行合理有限的更改的情况下,在提供较短的响应时间方面被证明是正确的,但还把I-pipe集成到主线代码中的这种方式已经有点过时了。

        Dovetail 是 I-pipe 的继承者,具有以下目标:

  • 将执行时间关键操作的高优先级阶段引入通用内核逻辑,从通用内核的角度来看,使所有设备中断的行为都像 NMI。
  • 为实时内核提供一个简单的接口,以便在需要时在此高优先级执行阶段运行 Linux 任务,并且实现对所有其他Linux内核活动的超细粒度抢占。
  • 为提供超低延迟服务(私有用户地址空间、多线程、SMP 功能、系统调用等)的实时内核控制的应用程序启用通用 Linux 编程模型。
  • 能够使使用通用内核开发知识来维护 Dovetail(以及最终基于它的 EVL 核心)成为可能,而其维护成本仅相当于单内核抢占方式所需的全部工程和维护成本中a的一小部分。通常,Dovetail 总是倾向于扩展现有的内核子系统,使其能够处理新的执行阶段,而不是采取横向措施。例如,中断流水线逻辑直接集成到通用 IRQ 层中。

[1]: https://source.denx.de/Xenomai/xenomai/-/wikis/Dovetail

...全文
1085 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
FreecodeApe 2023-04-09
  • 打赏
  • 举报
回复

大牛你好,请问你研究过xenomai发布的linux-dovetail各个版本的名称含义吗?

CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-操作系统 发布问题, 以便更快地解决您的疑问

140

社区成员

发帖
与我相关
我的任务
社区描述
Xenomai中文社区。 Upstream - xenomai.org Mirror - gitee.com/Xenomai CSDN - bbs.csdn.net/forums/Xenomai
社区管理员
  • Xenomai
  • legonext
  • Cajb
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧