基于ADEOS的RTAI/Linux系统运行模型
图:基于ADEOS的RTAI/Linux系统运行模型
在该模型中,假设系统产生两个硬件中断:INT1 和 INT2。对于
这两个中断,RTAI 和 Linux 都分别有各自的中断服务程序 ISR1 和 ISR2,再由 ISR1
和 ISR2 触发各自的任务 1 和任务 2。
接下来对图 4-4 给出的模型进行分析。
- 当 ADEOS 接收到中断 INT1 后,开始沿着中断管道在各域之间传播 INT1;
- 首先传到的域是优先级最高的 RTAI,由 ADEOS 执行 RTAI 的中断服务程
序 ISR1_RTAI(假设此时 RTAI 允许中断); - 系统切换到 RTAI 域,由 ISR1_RTAI 触发 RTAI 的任务 1 开始执行;
- 当 RTAI 的任务 1 执行结束后,RTAI 将被挂起,中断继续向下传给 Linux;
- 若此时 Linux 允许中断,则 ADEOS 执行 Linux 的中断服务程序 ISR1_LINUX;
- 系统切换到 Linux 域,由 ISR1_LINUX 触发 Linux 的任务 1 执行;
- 假设在 Linux 的任务 1 还没有执行结束时,ADEOS 又接收到中断 INT2,
则 Linux 的任务 1 将被暂时中断,ADEOS 再一次从头开始遍历中断管道; - 类似前面的步骤 2、3,ADEOS 执行 ISR2_RTAI,RTAI 执行任务 2,RTAI
的任务 2 结束后,RTAI 被挂起,中断再次传播给 Linux; - ADEOS 执行 Linux 的中断服务程序 ISR2_LINUX;
- 系统再次切换到 Linux 域,继续执行步骤 7 中暂停的任务 1,当任务 1 结
束之后,由 ISR2_LINUX 触发 Linux 的任务 2 开始执行。 - Linux 中的任务 1 和任务 2 都执行结束,Linux 被挂起,系统进入空闲状态。
综上分析可知,由于 RTAI 域的优先级高于 Linux,RTAI 中的任务总是先于
Linux 的执行。因此,在基于 ADEOS 的 RTAI/ Linux 实时平台中,通常将实时任
务安排在 RTAI 中执行,将非实时任务安排在 Linux 中执行,这样实时任务总能优
先于非实时任务得到及时处理,保证系统的实时性能。