Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59896
  • 博文数量: 12
  • 博客积分: 232
  • 博客等级: 二等列兵
  • 技术积分: 125
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-22 10:21
个人简介

hello everyone

文章分类

全部博文(12)

文章存档

2014年(1)

2012年(4)

2011年(7)

我的朋友

分类: LINUX

2012-02-02 14:04:30


RTLinux是由美国的新墨西哥州的fsmlabs(有限状态机实验室)公司开发的,在Linux基础上开发的面向实时和嵌入式应用的操作系统。

RTLinux的开发者并没有根据实时操作系统的特性重写Linux的内核代码。因为这样做工作量大,而且保证兼容性也很难。
它的开发者的思想为:将Linux本身的任务及Linux内核本身作为一个优先级很低的任务,而实时任务作为优先级最高的任务。即在实时任务存在的情况下运行实时任务,否则才运行Linux本身的任务。

RTLinux是Linux在实时性方面的扩展,采用双核技术:一个微型RTLinux内核把原始的Linux内核作为它在空闲时的一个线程来运行。这开启了在两个不同的内核层面上(实时的RTLinux内核和非实时的Linux内核)运行程序的新方式。原始的Linux内核通过RTLinux内核访问硬件,这样,所有的硬件实际上都是由RTLinux内核来进行管理的。

硬实时的实现:
  硬件实时部分被作为实时任务来执行,并从外部设备拷贝数据到一个叫做实时有名管道(RTFIFO)的特殊I/O端口;程序主要部分作为标准Linux进程来执行。它将从RTFIFO中读取数据,然后显示并存储到文件中,实时部分将被写入内核。设计实时有名管道是为了使实时任务在读和写数据时不被阻塞。图3所示的是RTFIFO结构图。
  

图3 RT-FIFO结构图

RTLinux将标准Linux内核作为简单实时操作系统(RTOS)(或叫子内核)里优先权最低的线程来运行,从而避开了Linux内核性能的问题。 从图3可以看出,RTLinux拥有两个内核。这就意味着有两组单独的API,一个用于Linux环境,另一个用于实时环境。此外,为保证实时进程与非实时Linux进程不顺序进行数据交换,RTLinux引入了RT-FIFO队列。RT-FIFO被Linux视为字符设备,最多可达150个,分别命名为/der/rtf0、/dev/rtf1……/dev/rtf63。最大的RT-FIFO数量在系统内核编译时设定。
  RTLinux程序运行于用户空间和内核态两个空间。RTLinux提供了应用程序接口。借助这些API函数将实时处理部分编写成内核模块,并装载到RTLinux内核中,运行于RTLinux的内核态。非实时部分的应用程序则在Linux下的用户空间中执行。这样可以发挥Linux对网络和数据库的强大支持功能。

软实时的实现:
  RTLinux通过一个高效的、可抢先的实时调度核心来全面接管中断,并把Linux作为此实时核心的一个优先级最低的进程运行。当有实时任务需要处理时,RTLinux运行实时任务;无实时任务时,RTLinux运行Linux的非实时进程。其系统结构见图4。
  

图4 RTLinux系统结构图

在Linux进程和硬件中断之间,本来由Linux内核完全控制,现在在Linux内核和硬件中断的地方加上了一个RTLinux内核的控制。Linux的控制信号都要先交给RTLinux内核进行处理。在RTLinux内核中实现了一个虚拟中断机制,Linux本身永远不能屏蔽中断,它发出的中断屏蔽信号和打开中断信号都修改成向RTLinux发送一个信号。如在Linux里面使用“SI”和“CLI”宏指令,让RTLinux里面的某些标记做了修改。也就是说将所有的中断分成Linux中断和实时中断两类。如果RTLinux内核接收到的中断信号是普通Linux中断,那就设置一个标志位;如果是实时中断,就继续向硬件发出中断。在RTLinux中执行STI将中断打开之后,那些设置了标志位表示的Linux中断就继续执行,因此,CLI并不能禁止RTLinux内核的运行,却可以用来中断Linux。Linux不能中断自己,而RTLinux可以。

原始的Linux内核中的进程与实时进程,被RTLinux内核调度的关系(可以共存,实时进程具备抢占性):通过在L inux内核与硬件中断之间增加一个精巧的可抢先的实时内核,把标准的Linux内核作为实时内核的一个进程与用户进程一起调度,标准的Linux内核的优先级最低,可以被实时进程抢断。正常的Linux进程仍可以在Linux内核上运行,这样既可以使用标准分时操作系统即Linux的各种服务, 又能提供低延时的实时环境 。


阅读(1061) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~