0
点赞
收藏
分享

微信扫一扫

《Linux内核实时性以及网络实时性的研究》

[1]沈涛. Linux内核实时性以及网络实时性的研究[D].南京邮电大学,2013.

Linux虽然自身面向通用操作系统,但是由于其源码级的定制修改属性,Linux具备实时性成为了可能。

本文目标:对于Linux下网络的实时化改进。
+ 双内核Linux实时化改造方案 Xenomai
+ 两套嵌入式平台上基于 Xenomai 完成对 Linux 的内核的实时化改造

实时操作系统特点:
1. 时间约束性(截止时间)。软实时:监控系统和信息采集系统
2. 可预测性(系统能够对实时任务的执行时间进行判断)。硬件延迟的预测、软件系统的可预测(应用程序的响应时间)、操作系统的可预测性(保证应用程序执行时间的有界性,调度函数等运行开销是有界的)
3. 可靠性(采用静态分析和保留资源的方法及冗余配置,保障系统)

衡量实时性的指标(如果以下两个指标是确定的,可预测的,那么就可以说该操作系统是实时的):
1. 中断时延(很多实时任务是靠中断驱动的,外部事件发生到相应中断处理函数的开始执行的时间)
2. 抢占/调度时延(从一个外部事件发生到处理该外部事件的时延)

实时 Linux 改造方法(增加实时内核的双内核方案/改进现有内核/虚拟机来完成Linux实时应用的方案(虚拟机系统取代了实时内核)):
1. 双内核方案 RT-Linux,RTAI,Xenomai:
1. 非实时内核+实时内核。RTLinux、实时应用程序接口(RTAI)、Xenomai
2. 超微内核。对硬件进行抽象,对更高级别的操作系统提供优先权。ADEOS
2. 改进内核方案:MontaVista Linux、Time Sys Linux、RT-Preempt Patch、ART-Linux
1. 资源内核法。为内核增加一个可移植的资源模块。Linux/RK
2. kernel 2.6 软实时 + 内核补丁 = 硬实时
3. 实时虚拟机方案:实时虚拟机包括 VLX、L4、XtratuM 以及由 WindRiver、Freescale、Xen、Trangon/VMware 主导的其他项目。
XtratuM:
而实时虚拟机的一般都是运行于裸机上的虚拟机;
利用域作为基本调度的任务单位(具有硬件资源,比进程范围更大的任务单位),Linux也运行在其中一个域上;
客户操作系统被分为两类:Linux为代表的非实时系统、PartiKle为代表的实时系统;
采用超微内核,直接管理系统中与实时性密切相关的中断、定时器等底层资源;

Linux 不够实时的原因:
1. 中断具有最高优先级(包括软中断)。实时任务的优先级得不到保证。
2. 内核可抢占性不足。Linux2.4和之前的版本中,如果当前任务运行在内核态,无论当前是否有优先级更高的任务需要运行,正在执行的任务也不能被抢占,等待让出的 CPU。
1. 自愿抢占。加入可抢占点,改善系统调度。
2. Linux2.6版本开始,内核具备了一定的可抢占性。除了不可抢占区域(自旋锁保护的临界区),其余都可以实现抢占。
3. 自旋锁。一种数据同步机制。
4. 调度算法。Linux2.6之后引入可抢占内核,引入了时间复杂度O(1)的调度器
5. 关中断指令的使用。增大中断时延。损害实时性。

Xenomai —— 强实时扩展框架

双内核方案。RT-Linux、RTAI、Xenomai

Xenomai nucleus + Linux kernel = 提供与接口无关的硬实时性能。

Xenomai 技术能够提供强实时的内核扩展:1. 存在一个支持强实时的微内核——Xenomai nucleus,与Linux内核共同运行于硬件平台上,优先级高于Linux内核,负责实时任务;2. Linux 内核负责非实时任务,只有当没有实时任务时,它才能得到运行的机会。

Xenomai 优势

  1. 具有良好的移植性和兼容性。不盲目追求极致实时性,宁可为良好的移植性和兼容性牺牲实时性也可以接受,因为其所提供的实时性能已经足以应付绝大部分的实时任务需求。
  2. 具有丰富的实时API(Skin)
    《Linux内核实时性以及网络实时性的研究》_linux
  3. 广泛的硬件架构支持。
    《Linux内核实时性以及网络实时性的研究》_linux内核_02
  4. 活跃的开源项目

Adeos —— 操作系统可适应域环境

Xenomai 基于 Adeos 实现双内核机制。 Adeos 操作系统可适应域环境,是一个实时系统框架,提供了在同一套硬件上同时运行 GNU/Linux 和 RTOS 的途径。与 Linux 全称应该是 GNU/Linux 一样,Adeos/Xenomai。

  • Adeos 在同一套硬件上提供了多个域,彼此独立,但能够和 Adeos 通信。一个域通常包含一个完整的操作系统,所有的域都有能力根据被赋予的系统优先级,处理外部事件或者内部事件。
  • Adeos 屏蔽了底层硬件,对上层域提供通用 API,系统的移植工作完全取决于 Adeos 的移植。

《Linux内核实时性以及网络实时性的研究》_优先级_03

Xenomai是什么?
是一种技术,对应的微内核称为Xenomai Nucleus
Xenomai域的地位?
类似"模块",由根域来加载。
为内核代码打上Xenomai补丁,安装Xenomai实时库文件,所有的测试脚本和可执行文件会在/usr/xenomai/bin 目录下,而共享库文件则在/usr/xenomai/lib 目录下。

Adeos 特性:

1. 事件管道

基于事件控制链的客户域是 Adeos 的基本结构,我认为进行了一个软分片,规定了什么时候处理什么事情。

  1. Adeos 向域发出每一个外部中断;
  2. Adeos 向域发出每一个系统调用;
  3. Adeos 向域发出内核代码产生的系统事件(Linux 任务交换、信号通知)

Adeos 将事件管道中的事件按照由高优先级到低优先级的顺序排列,并依次传递给对应的优先级域处理。 将事件分为了三个大类(域)进行集中处理。

《Linux内核实时性以及网络实时性的研究》_linux内核_04

其它域都需要 Linux 来对它们进行安装,通常是作为 Linux 内核模块的方式加载。

2. 主动中断保护

  1. 在处理事件管道中的某个域时,事件管道处于延阻状态(推迟状态),下一个到来的中断不会被提交,会被阻塞并记录在中断日志中,之后进行同步操作),也杜绝低优先级的事件抢占。
  2. 对处于管道前列,并且高于当前域优先级的事件,仍然会响应抢占。
  3. 当处理完一个域后,执行 Adeos 系统服务,将 CPU 交给事件管道中的下一个域,直到最后一个优先级最低的域。

3. 系统事件传递

事件管道中的内容:中断、内核或应用程序产生的陷阱和异常。

《Linux内核实时性以及网络实时性的研究》_linux内核_05

大部分对 Adeos 提起的服务请求都来自于 HAL。

Adeos 和 Xenomai

Adeos 和 Xenomai:Adeos 必须在 Linux 内核得知中断之前首先处理中断,并且无论 Linux 内核是否通过 CPU 中断掩码屏蔽中断都必须立刻处理中断。Xenomai 能够根据这些Adeos的保证,准确给出微秒级的中断时延预测,无论 Linux 在执行什么活动。通过对 Xenomai 快速对 Linux 任务的协作调度技术,为实时线程提供了可预测的抢占时延。

Xenomai 的主域(Xenomai(primary)Xenomai线程)和次域(Linux(secondary)Xenomai线程)(优先级的区别)

Xenomai 管理的线程工作在实时内核(Xenomai-nucleus)上实时线程可以处于内核空间或者普通进程空间,可以运行在任何域上,会依据线程优先级来执行。试想这样一个场景:当管道正在处理从域事件,但是此刻来了一个更低优先级的主域线程,那么并不会发生抢占(意味着该线程虽然是Xenomai核心处理,但是优先级较低)。

中断屏蔽域:Xenomai 线程受linux内核调度时启动,在其它状态下停用。Xenomai 线程在linux域(系统环境中的)执行时 (Xenomai线程并不意味着就是实时线程?),保障不会被非实时的linux中断活动中断 (保障了非实时的Xenomai线程的优先级?)

当 Xenomai 核被加载时,底层的 Adeos 管道会经历三个阶段(实时核心域、中断屏蔽域、linux域),而所有的中断都会按优先级在管道中流过。

《Linux内核实时性以及网络实时性的研究》_linux内核_04

系统调用拦截

Xenomai 通过 Xenomai 线程拦截每个系统陷阱和异常,无论来自 Xenomai 域还是 Linux 域。通过 Adeos 服务来登记每个事件处理器。

  • 将来自应用的实时服务请求传递给对应的系统调用处理器,而这些处理器由实时核心上不同的 API 来实现。
  • 确保每个系统调用都由恰当的域来控制,无论是 Xenomai 域或是 Linux 域。
  • 对Xenomai域的系统调用可以看作是linux的扩展。

中断传播

中断处理程序必须调用中断传递服务指定域,从而将中断在广播中继续传播,如果 Xenomai 没有对指定的中断提供中断处理程序,那么该中断将被无条件地传递给linux内核。

在 Xenomai 域中的实时核心总能在中断到来时第一个得知,并对中断进行处理,在对中断进行适当标记后通过管道向下传递,Xenomai 域在没有实时活动阻塞时将 CPU 交给中断屏障域,而中断屏障域则根据是否启用中断屏障来决定是否将中断传递给 Linux 内核。

XtratuM 实时虚拟机

《Linux内核实时性以及网络实时性的研究》_linux_07


举报

相关推荐

0 条评论