《现代电子技术》2006年第19期摘录:廖敬萍等:基于Linux的实时
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
廖敬萍等:基于Linux的实时解决方案分析服务机制虽然扩大了用户进程空间,节省了内存资源,但同时增加了进程服务时间的不确定性。IJnux划分用户空间和内核空间,用户进程只能通过系统调用才能访问内核空间的资源,而且内核本身是不可抢占的,这样将严重影响对高优先级用户进程可能提供的服务。从以上分析可知,从操作系统服务角度看,影响Linux实时化的因素主要包括Linux的时间片粒度、调度机制的选择、中断处理、内核的非抢占特性等。从原理上看,当对Linux的调度时间粒度划分很小时,通过简单的优先调度机制就应实现实时化工作,但实际上这个问题并不那么简单。首先进程的时间片划分过小,将引发频繁的进程切换,导致过多的CPIJ和内存资源的浪费;其次会影响中断服务时机的选择和服务的质量;再次影响进程IPC,引发过多的资源协调问题,从而导致系统性能的降低。引起这些矛盾的主要原因是由于Linux系统的设计目标是追求业务量和对各进程调度的公平性意义上的平衡,这本身就与进程实时化要求是对立的。如何在尽可能保持Linux的服务性能的基础上实现I。inux实时化的目标是本文着重研究的内容。3Linux实时化解决方案对I。inux的实时化解决方案大致可以分为3种:以扩展实时调度方案为主的软实时解决方案,其代表有}tardhatLinux的实时调度方案;混合内核方案,其代表有RT—I。inux和R'I、AI;以KURT,Red—Linux为代表的强实时解决方案。3.1软实时调度方案软实时调度方案的特点基本上是以Linux本身的PC)SIXl003.1b实时扩展为基础的软实时解决方案,对内核的改动一般仅限于提供更符合实时应用的调度算法,实时进程间的通信还是采用Linux原有的IPC机制。为了解决Linux在内核态不可被抢占的问题,提供了一种抢占式(Preemptible)的内核,可抢占内核的补丁包修改了spinlock的宏定义以及中断返回处理代码。当内核不是处在一个中断处理中,并且不在spinlock保护的代码中时,就可以通过进程调度“安全”抢占当前进程,同时对被抢占进程提供一个等待处理的重新调度请求。}tardhat充分利用I。inux本身的实时机制,以达到某种程度上的软实时,所以可以很少或者几乎不改动内核源码,其对实时化的处理措施可归纳为:(1)将实时要求最强的部分尽可能地放到中断服务例程ISR中。(2)采用P()SIX实时扩展调用。3.2硬实时混合内核方案这类方案的特点是采用混合内核方案,即在I。inux内】08核和硬件之间加一个小的实时核,由他管理中断,而I。inux内核本身则成为优先级较低的Idletask。图1所示为Linux向进程提供服务的示意图。Linux内核向进程至少提供了以下服务:用于中断处理的硬件管理层;负责进程激活、优先处理、软实时等的调度服务;IPC机制。在Linux机制中,硬件中断由中断服务器统一处理。在Intel类型的机器中中断服务地址存储在中断描述表IDT中。mm\一//\一//图1Linux进程处理示意图混合内核方案中主要通过增加中断分派功能来接管中断处理控制权。图2所示的是RTAI的实时解决方案,RT—Linux的结构类似,这里不再赘述。如图2所示,RTAI保留了Linux内核向进程提供的以上服务功能,同时增加了实时核部分接管中断,此处实时核部分完成中断分派功能,在RTAI和Linux之间用实时硬件抽象层(RTHAL)进行联系,利用这种方式就可以允许R’rAl。实时任务与Linux进程同时进行。图2RTAI结构RFAI提供了众多的实时通信机制,如实时semaphore,实时mailbox,实时queue等IPC机制,实时任务和普通任务都可以调用,且用户进程也有相应的调用来与之通信。ⅣFAI实现的方式是在Linux内核上通过R。TAI补丁程序对内核源码做些微改动,以此提供调用接口和中断处理服务;用户进程可随后调用ⅣFAI和相应的IPC机制,其中RTAI和相应的IPC机制可用内核module机制实现。3.3强实时解决方案这类方案的共同点是直接修改内核以增强其实时性能。其中,KURT方案类似于I。ynx0S操作系统。I。ynx一()s是基于传统的共享资源系统的优化版本,同样兼容
阅读此文(图):
点击此处在线翻阅