摘要:实时操作系统要求具有速度快和可预测性的特点,必须保证实时任务在要求的时间内完成。本文在分析Linux操作系统的中断方式和进程调度等影响实时性的因素后,对Linux的实时性策略进行改进,提出了双内核解决方案。
关键词:Linux 实时性 调度 双内核
1 前言
实时系统可以定义为"一个能够在事先指定或确定的时间内完成系统功能和对外部或内部、同步或异步事件作出响应的系统"。实时操作系统 (Realtime OS)是实时系统中使用的操作系统。实时操作系统的任务不只是要求完成每一个工作,并且要按照给定的时限按时完成每一个工作,所以实时操作系统必须能够确保其任务对时间的要求。
实时有硬实时和软实时之分。硬实时和软实时的区别就在于对外界的事件做出反应的时间。硬实时系统必须是及时对事件做出反应,绝对不能错过事件处理的deadline情况。在硬实时系统中如果出现了这样的情况就意味着巨大的损失和灾难。比如说核电站中的堆芯温度控制系统,如果没有对堆芯过热做出及时的处理,后果不堪想象。软实时系统是指,如果在系统负荷较重的时候,允许发生错过deadline的情况而且不会造成太大的危害。比如说程控电话系统允许在105个电话中有一个接不通。
现有的Linux是一个通用的操作系统,它是按照分时系统的目标设计的,进程调度强调平衡各进程之间的响应时间来保证公平的CPU时间占用。虽然采用了许多技术来加快系统运行和反应速度,但它本质上不是一个实时操作系统。为了保证其实时性,必须采用一定的策略加以改进。
2 影响Linux实时性能的主要因素 在Linux系统中,响应中断的过程如下:设备产生一个中断、中断处理函数开始执行、唤醒任务并在运行队列排队、任务获取CPU并开始执行、任务执行完毕。图1为事件处理过程各个阶段图以及影响响应时间的因素(每个阶段下面的字母A~J表示这个阶