首页 > 代码库 > 第三周作业

第三周作业

关于Xenomai

Xenomai是一款免费的帮助工程师在Linux系统上开发实施操作系统框架的软件.

它是基于一个抽象的实时操作系统核心的,它可以被用来在一个有通用实时操作系统调用的核心上构建任意的实时接口。用来给用户程序提供接口的任意多个(可以是不同的)实时操作系统的接口被构建在同一个核心上。所有通用的系统调用都是由这个核心来实现的。这些用户接口又被称作“皮肤”。

Xenomai的产品目标就是帮助将工业应用从实时系统迁移到Linux系统上.

Xenomai本质是Linux内核的一个实时开发框架。它通过无缝地集成到Linux环境中来给用户空间应用程序提供全面的,与接口无关的硬实时性能。

概括而言, Xenomai可以做的事情是:

  • 在Linux上设计、开发和运行实时应用程序
  • 将RTOS的应用程序移植到Linux
  • 以Linux原生应用程序的方式运行RTOS应用(VxWorks, pSOS, VRTX, uITRON, POSIX)

发展

Xenomai起初又叫Xenodaptor. 2001年正式改名为Xenomai.

2003年它和RTAI项目合并推出了RTAI/fusion。RTAI/fusion是linux平台上的具有工业生产级别的实时自由软件开发平台,它基于Xenomai的抽象实时操作系统内核。

2005年的时候RTAI/fusion项目又从RTAI中独立出来作为Xenomai项目。

工作原理

Xenomai 是一种采用双内核机制的Linux 内核的强实时扩展。由于Linux 内核本身的实现方式和复杂度,使得Linux 本身不能使用于强实时应用。在双内核技术下,存在一个支持强实时的微内核,它与Linux 内核共同运行于硬件平台上,实时内核的优先级高于Linux 内核,它负责处理系统的实时任务,而Linux 则负责处理非实时任务,只有当实时内核不再有实时任务需要处理的时候,Linux 内核才能得到运行的机会。这两个内核由Adeos管理,一个内核占领一个域。也就是说Xenomai 是基于Adeos(Adaptive Domain Environment for Operating System)实现双内核机制,下图显示了Xenomai、Adeos 和Linux 这三个软件实体之间的相互关系。Adeos 扩展了Linux 的基础环境。

技术分享

Adeos/i-pipe是实现双内核的关键,Xenomai和RTAI都是基于Adeos实现的。在基于Adeos 的系统中,每个操作系统都是在独立的域内运行(但不一定所有的域实现的都是操作系统,也可以是完成其它功能的软件实体),每个域可以有独立的地址空间和类似于进程、虚拟内存等的软件抽象层,而且这些资源也可以由不同的域共享。

对于一个计算机系统来说,系统的运行是由内部和外部的中断和异常所触发的,例如系统时钟中断对操作系统来说就是最重要的。所以,Adeos 的主要工作就是管理硬件的中断,根据域的优先级依次执行相应域的中断服务程序,从而驱动域内的系统运行;同时,Adeos 还提供域之间的通信机制实现域的调度等。

为了实现对中断的管理和域之间的优先级控制,Adeos 使用了中断管道(Interrupt Pipe)的概念。Adeos 通过中断管道在不同的域之间传播中断,而且提供了相应的机制可以让域改变自己在中断管道中的优先级。

Xenomai 在Adeos 系统中的域优先级高于Linux 域,每当中断到来之后,Adeos先调度Xenomai 对该中断进行处理、执行中断相应的实时任务,只有当Xenomai 没有实时任务和中断需要处理的时候,Adeos 才会调度Linux 运行,这就保证了Xenomai的中断响应速度和实时任务不受Linux 的影响,从而提供了实时系统的可确定性。

总结 
Xenomai 实时内核为开发强实时应用提供了丰富的功能,主要包括实时线程调度与管理、用户空间实时任务支持、线程同步服务、时钟服务、中断服务、动态内存申请和实时对象注册服务等。

参考链接:

[1]http://baike.baidu.com/link?url=J3ttZ4mmnAnKadTKJv7Jw2qNn5DPd6eTE_FKwbX-dbkZql_lMntx3s1iH3O8-g6ncAoCJ0xuj5507Oy5NzsMOq

[2]https://zh.wikipedia.org/wiki/Xenomai

[3]http://www.wtango.com/linux%E5%AE%9E%E6%97%B6%E6%A1%86%E6%9E%B6xenomai%E7%AE%80%E4%BB%8B/

第三周作业