论文部分内容阅读
实时系统是当今计算机应用领域的一个热点。实时操作系统是其中的核心,随着硬件性能的提高,实时应用不仅对操作系统的性能,而且对其功能也提出了越来越高的要求,例如图形界面、网络功能等。现有商业RTOS不是功能过于简单就是价格过于昂贵,缺少一个开放的、标准的、有广泛支持的、高效而又廉价的实时操作系统,因此很多机构开始研究将功能强大的通用操作系统改造成实时操作系统。Linux具有功能强大、开放源码、支持多种硬件平台、模块化设计、函数接口符合国际和工业标准等特点,自然成为进行实时化的首选。Linux本身是一个分时系统,最新的2.6内核对2.4内核作出了巨大改进,主要有两个方面,一是O(1)调度算法,二是可抢占内核,虽然如此,2.6内核相对粗糙的时钟粒度和交互式优先的调度算法,在实现对实时性要求比较高的场合中,仍然难以满足要求。对Linux的实时化改造,以往的研究或者将各类实时任务简单地分开,赋予硬实时任务绝对的优先权,导致软实时任务的截止期错失率产生了不应有的增加,从而大大影响了软实时任务的运行表现,比如RTAI;或者将各类实时任务不加区别地调度,会引发软实时任务影响硬实时任务执行的情况,这在某些情况下会带来致命性地后果,比如Linux内核。本文在结合Linux2.6内核和RTAI的基础上,提出一种资源预留调度架构,并对此架构的实现和技术难点做了解析。它采用了独特的任务虚拟映射机制,使硬实时任务和软实时任务既能够在一个优先级调度算法(EDF)下统一调度,也能通过RTAI固有的调度框架机制区别调度,进而通过测试方案验证了其对于普通RTAI的巨大优势:统分结合,既避免了硬实时任务截止期的错过,又最大程度地降低了软实时任务的截止期错失率。而且,在引入了SMP之后,其服务质量得到了进一步的提高。同时,与调度机制相适应的,本文提供了与Linux核心时钟并行运行的一个细粒度的实时核心时钟处理系统,与原Linux核心时钟区别开来,实现了高精度的时钟处理,大大提高了系统的稳定性和效率。