Embedded 版 (精华区)
发信人: vmlinuz (生活将因为你而美丽), 信区: Embedded_system
标 题: 实时 Linux 操作系统
发信站: 哈工大紫丁香 (2001年06月01日08:36:32 星期五), 转信
实 时 Linux 操 作 系 统
· 袁 臻 ·
RT Linux是能够提供实时功能的Linux 操作系统, 它是新墨西
哥技术学院的Victor Yodaiken 和Michael Brabanov 共同开发的。
目前,RT Linux 已用于视频编辑、PBX、机器人控制器以及机器工
具等领域,它甚至还被用于控制心脏的跳动。
与标准Linux 类似,RT Linux 提供了运行特殊实时任务和终
端句柄的能力。无论RT Linux 正在做什么,只要有任务和句柄
需要执行, 它都会立即执行这些任务。 在X86 机器上,RT Linux
执行终端句柄的延迟不超过15毫秒,当调度一个经常性任务
时,该任务将在35毫秒内被执行。 与此相对照, 标准 Linux 在终
端句柄执行前需要600 微秒, 而执行经常性任务的延迟则长达
2万微秒。 此外,RT Linux 的优势还在于它扩展了标准的Unix 编
程环境, 使它可以处理实时任务。
RT Linux 的设计与实现
1 . RTLinux的设计目标
实时操作系统具有小型、 快速、 可预测性等特点, 而可预
测性和低延时是实时操作系统的主要特点。
RTLinux 的设计目标是以Linux 内核为基础, 在同一个操作
系统中既提供严格意义上的实时服务, 又提供所有的标准POSIX
服务。 因此,RTLinux就必须把以下两组不相容的特征结合起来:
- 快速、 可预测、 低延迟和简单调度;
- 所有标准的POSIX 的服务, 包括GUI、TCP/IP、NFS、 编译器
和Web服务器。
为达到上述设计目标,RTLinux采用了虚拟机技术。Linux不
直接与中断控制硬件进行系,而是通过各仿真层进行中
断控制,该仿真层不但使Linux不能禁止中断,同时还能对Linux
内核的同步需求提供支持。
在RT Linux 中, 一旦中断到来,就先由该仿真层处理,在仿
真层完成了所有需要进行的实时处理之后,再提交给Linux 进
行下一步处理。如果Linux 已经执行了禁止中断的操作,则仿
真层只是将该中断标记为处于挂起状态;当Linux 执行了允许
中断的操作后,仿真层就会将控制切换到处于挂起状态且具
有最高优先级中断的中断处理程序。
RT Linux中采用的虚拟机技术不同于以往的虚拟机技术。
在RT Linux中,虚拟机只负责仿真中断控制, RTLinux在其他
方面仍然可以直接控制硬件, 从而既保证了较好的运行效率,
又使对Linux 内核的修改量最小。
2 . RT Linux 的具体实现
RT Linux的结构如图所示。RT Linux的设计者们在操作系统
的底层实现了一个简单的实时核心,而Linux本身将作为一个
具有最低优先级的任务在核心中运行,它在任意时刻都可以
被高优先级任务抢先。
从严格意义上讲,RT Linux只是Linux的某种变种,它提供
实时应用程序所需的控制功能,这使得RT Linux成为Linux 的
一个新版本。RTLinux几乎完全依赖Linux来提供所需的服务,
而它自身只提供任务创建、中断服务例程的安装、任务间通
讯的排队、ISR及Linux 进程。
RT Linux有两个域:一个是实时域,一个是非实时域。实时
域中的函数可以满足自身的实时要求, 但是这些函数必须简
单,因为可供它们使用的资源是有限的。另一方面,非实时
功能模块有许多可用的资源,但是不能有任何实时要求。 RT
Linux提供了两个域之间进行通讯的工具。设计者将RT Linux
设计为可抢先执行,它将中断分为两组:由RT Linux控制的
可抢先中断和由Linux 控制的不可抢先中断。Linux中断不能中断
核心的运行,RT Linux中断则可以根据需要中断核心的运行。
3 . FIFO通讯机制
在RT Linux中,实时任务域中的进程之间通过FIFO进行通讯:
Rtf_create(): 创建一个FIFO;
Rtf_put(): 使数据在FIFO中排队,当FIFO满时,返回出错信息;
Rtf_get(): 从队列中取数据,当FIFO空时返回出错信息。
这种FIFO机制使数据获取变得非常方便,一个实时任务可
以通过rt_task_init()进行创建,并利用 rt_task_make_periodic()在固
定的时间间隔后从I/O总线获取数据。随后,该任务用rtf_put()
将数据传向Linux进程,Linux进程处于一个循环之中,它从FIFO
读数据并且将数据写入磁盘、发向网络或在X Windows上显示。
FIFO充当一个缓冲,这样Linux进程可以在没有实时限制的情况
下运行。
数据流系统体现了RT Linux设计者的初衷,FIFO则提供了使
用信号的好方法。一个字节信号可以通过创建一个大小为一
字节的FIFO来实现。“give”操作仅仅是一个大小为一字节的
rtf_put()调用; 而一个计数信号仅需创建一个足够大的FIFO,它
计算“give”操作的次数。因此FIFO操作提供了实时应用程序任
务同步所需的所有功能。然而,RT Linux的当前执行版本尚缺
乏一些用户习惯的功能,如优先级继承和任务删除安全等。
未来发展
目前,RT Linux还存在许多不完善的地方,将来,它还需要
在以下几方面进行适当的改进:
- 现在RT Linux的调度策略是ROUND ROBIN(时间片轮转算法)
和可 抢先调度,将来还需要采用不同的调度算法,如动态实时调
度算法等;
- 进一步优化代码;
- 提供静态分析工具及检测支持;
- 当前RT Linux是在Linux 1.3.32版上完成的,将来会以Linux
2.0版基础;
- 下一版本的RT Linux将会摒弃为实时任务分配单独地址空间
的做法,实时任务将被纳入Linux的核心地址空间;
- 下一版本的RT Linux将支持动态加载实时任务及动态替换实
时调度器。
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: mtlab4.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.704毫秒