下一页 上一页 目录

3. 为什么选择 RTLinux

RTLinux 设计的原因可以通过研究标准 Linux 内核的工作方式来理解。Linux 内核将硬件与用户级任务分离。内核使用调度算法并为每个任务分配优先级,以提供良好的平均性能或吞吐量。因此,一旦用户级任务超出 CPU 分配给它的时间片,内核就有能力挂起任何用户级任务。这种调度算法以及设备驱动程序、不可中断的系统调用、中断禁用和虚拟内存操作的使用都是不可预测性的来源。也就是说,这些来源会阻碍任务的实时性能。

您可能已经熟悉非实时性能,例如,当您正在收听使用 'mpg123' 或任何其他播放器播放的音乐时。在为预定的时间片执行此进程后,标准 Linux 内核可以抢占该任务并将 CPU 提供给另一个任务(例如,启动 X 服务器或 Netscape 的任务)。因此,音乐的连续性会丢失。因此,在尝试确保在所有进程之间公平分配 CPU 时间时,内核可能会阻止其他事件发生。

实时内核应该能够保证其下进程的定时要求。RTLinux 内核通过消除上述不可预测性的来源来实现实时性能。我们可以将 RTLinux 内核视为位于标准 Linux 内核和硬件之间。Linux 内核将实时层视为实际硬件。现在,用户可以引入并设置每个任务的优先级。用户可以通过决定调度算法、优先级、执行频率等来实现进程的正确时序。RTLinux 内核为标准 Linux 内核分配最低优先级。因此,用户任务将实时执行。

实际的实时性能是通过拦截所有硬件中断获得的。仅对于那些与 RTLinux 相关的中断,才运行相应的中断服务例程。所有其他中断都将被保持,并在 RTLinux 内核空闲时作为软件中断传递给 Linux 内核,然后标准 Linux 内核运行。RTLinux 执行程序本身是不可抢占的。

实时任务是特权的(即,它们可以直接访问硬件),并且它们不使用虚拟内存。实时任务被编写为特殊的 Linux 模块,可以动态加载到内存中。实时任务的初始化代码初始化实时任务结构,并将其实时任务的截止时间、周期和发布时间约束通知 RTLinux 内核。

RTLinux 与 Linux 内核共存,因为它保持 Linux 内核不变。通过一组相对简单的修改,它设法将现有的 Linux 内核转换为硬实时环境,而不会妨碍未来的 Linux 开发。


下一页 上一页 目录