RSS

操作系统读书报告浅谈Real-Time Linux

来源:网络 作者:匿名 时间:2007-01-06 Tag: 点击:

1. NMT RT-Linux

NMT是新墨西哥科技大学(New Mexico Technology)的缩写。这一套系统可以说是最早的获得成功的Real-Time Linux,它目前已发展到3.0版。这个系统是由Victor Yodaiken和它的学生Michael Barabanov所完成。这个系统的概念是“架空”Linux内核,使得Real-Time进程得以尽快的被执行。

事实上,RT-Linux中的实时任务(Real-Time Task) 其实并不是 一个Linux的进程,而是一个 Linux 的可加载式核心模块(Loadable Kernel Module)。NMT RT-Linux采用一个比较简单的做法,它不使用Linux的任何功能,把需要高度时间精确度的工作写成一个驱动程序,然后直接用PC时序芯片 (Timer Chip) 所产生的中断调用这个驱动程序。这样,它就可以绕开Linux的中断机制,从而使系统响应时间大缩短。

从这个角度看,NMT RT-Linux 其实是一个实时驱动程序,算不上是真正的 Real-Time Linux。但由于它出现得早,且其架构很符合自动控制的需求,使用者非常的多,且多半是有关自动控制的应用。

下文对这个系统将会有更详细的论述。

2. RTAI

RTAI是 Real-Time Application Interface 的缩写。顾名思义知道它是一套可以用来写实时应用程序的接口。大致而言,RTAI和NMT RT-Linux是相同的东西。它同样的“架空”了Linux,而直接用可加载式核心模块( Loadable Kernel Module)实现实时进程。每一个实时进程实际上就是一个可加载式核心模块。

RTAI和NMT RT-Linux 最大的不同地方在于它非常小心的在Linux上定义了 一组实时硬件抽象层(Real-Time Hardware Abstraction Layer)。RTHAL将RTAI 需要在Linux中修改的部份定义成一组程序接口,RTAI只使用这组接口和Linux沟通。这样做的好处在于我们可以将直接修改Linux核心的程序代码减至最小,这使得将 RTHAL 移植到新版 Linux 的工作量减至最低。

RTAI 采取这种途径最大的原因在于NMT RT-Linux在由2.0版移植至2.2版的过程中遇到问题,使得基于2.2版核心的NMT RT-Linux一直无法完成。所以在Dipartimento di Ingegneria Aerospaziale Politecnico di Milano的Paolo Mantegazza和他的同事们就决定自行做移植的工作,由于NMT RT-Linux的困境他们认识到必须采取上述的途径以解决将来可能再度面临的兼容性问题。

于是 RTAI 便诞生了,它是一个比 NMT RT-Linux 更好的 NMT RT-Linux,虽然后来NMT RT-Linux也随后完成移植的工作,但那已经是RTAI诞生半年以后的事了。

3. LXRT

由于 RTAI 无法直接使用Linux的系统调用,解决的方法是使用RT-FIFO将一个RTAI Real-Time Kernel Module和真正的Linux进程连接在一起,由这个进程负责为其调用Linux系统调用。似乎其友善性得到提高,但代价是“实时性”降低了,这时实时任务不再能进行任何抢先式操作(而“抢先式”被认为是实时系统最佳的方式),所以实时系统的优势就不再具有了。

4. KURT

KURT是由Kansas大学所创造的系统,它和NMT RT-Linux及RTAI有很大的不同。KURT是第一个可以使用系统呼叫的Real-Time Linux。由于KURT只是简单的将 Linux 的进程管理器用一个很简单的时间驱动式(Time Driven)进程管理器加以取代,实时进程的执行很容易很其它非实时进程的影响。

5. RED-Linux

这是加州大学Irvine分校所做的系统,它和KURT类似,是一个可以使用所以Linux系统调用的Real-Time Linux。它的特点是使用“抢先检查点 (preemption point)”改善系统的反应速度。前面说过KURT的最大问题在于它受限于原有的Linux架构,使得系统的反应时间很难控制。然而在RED-Linux这一点已经被大大的改善,其2.0版的反应延迟约在100 us左右。

RED-Linux 非常有弹性的进程管理器架构也是其特点之一。它使得RED-Linux可以符合各种不同复杂度系统的需求。它将进程管理分成Dispartcher和Allocator二部份,Dispatcher在核心中执行而Allocator在用户模式执行。Allocator可以是应用程序的一部份,也可以是一个独立的单位。通常它负责将应用程序的资源请求转换成内核可以解释的格式。

 

五.NMT RT-Linux介绍

    正如前文所述,尽管NMT RT-Linux似乎不能算是一个实时操作系统,而仅仅是一个实时驱动程序,但它却确实是目前在通用操作上实现实时系统最行之有效的方法,效率也是较高的,而且NMT RT-Linux目前在实时系统中的应用也很普遍。

1. 设计目标

最初设计NMT RT-Linux是因为新墨西哥科技大学需要一套实时系统来对科学仪器进行控制,而这又是分时系统所不能完成的,尤其值得一提的是分时系统运行状态的不确定性及中断延迟的缓慢。所以NMT RT-Linux最主要解决的问题也将是这两个。

NMT RT-Linux的设计理念是,对Linux作最小的改动,仅提供为了实现实时应用必不可少的东西,这样就使NMT RT-Linux比较容易移植到新版本的Linux上。同时,NMT RT-Linux依赖于Linux来提供所需的几乎所有服务,而NMT RT-Linux仅提供实时任务创建、安装中断服务例程、并为实时任务、ISR和Linux进程之间的通信排队。这种设计的结果是,一个NMT RT-Linux应用可以看作有两个域:实时和非实时。放在实时域的函数能满足其实时要求,但是它们必须比较简单,因为可用资源很受限制;另一方面,非实时功能可以利用整个Linux资源,但不能有任何实时要求。两个域之间的通信工具已提供,但是使用RT-Linux之前,嵌入式系统设计者必须确保所有需要实现的功能适合两个域之一。使用RT-Linux并不能使已经存在的Linux程序具有实时性。例如,假设开发者有一个串口的Linux驱动程序,当串口接收一个字节序列之后,在一个固定时间内,由实时任务打开并口输出一行。这个驱动程序不能用,因为在非实时域内你不知道什么时候串口驱动程序会唤醒实时任务驱动并口完成工作。因此,串口和并口驱动都必须在实时域内,这就要求重新设计串口驱动程序。
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
合作站点