摘要:
实时系统在过去几年里迅速成长,但能够提供实时功能的操作系统往往价格极为昂贵.由于Linux代码公开,且性能优异,使其成为实时操作系统领域里的新宠.然而Linux本身作为一个通用的分时操作系统,将它应用于实时环境有许多缺点和不足,所以要对现有的Linux进行实时化改造. 本文针对实时系统的特点对Linux操作系统各部分的实现机制进行了具体的分析,并对Linux不适于实时应用的几个方面做了改进: 对操作系统来说,时钟精度直接影响到任务能否被及时响应和调度.Linux的周期性时钟粒度是10ms,过于粗糙.为了在不损失性能的情况下提高时钟精度,本文设计并实现了用Intel PⅡ系列以上CPU内部的local APIC定时器产生细粒度时钟中断,负责调度实时进程的方案.没有改变Linux原来的时钟中断,既提高了时钟精度,又不造成性能损失,很好地解决了时钟精度问题. Linux操作系统为分时应用而设计,采用的优先级调度方式不与时间相联系,而实时任务都有时限要求.本文使用了三个与时间特征相关的定时器,负责按时间要求改变进程的运行状态,进而能够在随后执行的调度函数中按时间要求进行调度. 由于特定的实时调度算法适用于特定的实时应用,为了检测特定应用中各种实时调度算法的优劣,本文采用通用的调度框架的思想.并实现了此可插入不同的实时调度算法的框架,以检测特定应用中各算法的优劣,并具体实现了时钟驱动的实时调度算法. 实验结果证明,本文所做的改进使Linux能够在基本不增加系统负担的情况下调度微秒级的实时任务.
展开