通过任务分割提高嵌入式系统的实时性
关键词:嵌入式系统 实时内核 时间片 任务分割
引言
随着工业的飞速发展,人们对系统实时性的要求越来越高。计算机技术的进步客观上也为进一步提高实时性提供了可能。因此近年来,嵌入式实时系统的研究已经成为单片同应用领域的又一大热点,实编排软件也越来越多,有商业软件,也有免费的代码。然而影响系统实时性的因素很多,有硬件,也有软件的。这就决定了提高系统的实时性并不是一件十分容易的事情,除了使用高性能的CPU和高效的实时内核外,在实时系统应用的过程中,还要结合具体情况进行具体分析,充分利用CPU的效率,挖掘内核的实时潜能。
1 任务与嵌入式多任务实时系统
1.1 任务与多任务(凹丫丫范文网fanwen.oyaya.net收集整理)
在嵌入式多任务实时系统时,任务是指一个程序分段。这个分段被操作系统当作一个基本单元来调度。
典型地,每个任务都是一个无限的循环,而且在同一时刻只能处于以下5种状态之一。这5种状态是休眠态、就绪态、运行态、等待态和被中断态,如图1所示。
多任务系统的执行过程实际上就是一系列任在这5种状态中循环流动、轮流被内核调度的过程。多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。
1.2 嵌入式多任务实时系统
RTOS本质上就是嵌入的实时内核,它负责管理各个任务,或者说是为每上任务分配CPU时间,并且负责任务之间的通信。实时内核可分为可剥夺型和不同剥夺型两类。因此,按照所使用内核的不同,嵌入式实时系统也可分为两类:使用不可剥夺型内核的嵌入式实时系统和使用可剥夺型内核的嵌入式实时系统。
2 实时系统中的长任务问题
2.1 长任务的定义
在RTOS中,长任务就是指整个任务的执行时间较长,超出了RTOS中其它某一个或某几个任务的实时要求容限,而对整个RTOS的实时性构成威胁的那些任务。
2.2 长任务对RTOS的影响
当使用可剥夺型实时内核时,长任务由于执行的时间较长,因而更容易被高优先级的任务打断;一旦高优先级的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说任务被挂起了,那个高优先级的任务立刻得到了CPU的控制权。这样会出现两个问题:一是长任务可能在一次执行的过程中被频敏打断,长时间得不到一次完整的执行;二是长任务被打断时,可能要保存大量的现场信息,其目的是为了保证在高优先级的任务执行完返回后,长任务能得以继续执行。然而,这样做要占用一定的系统资源,同时保存现场本身也是要占用CPU时间的,因此,实时性也会下降。
当使用不可剥夺型实时内核时,长任务对RTOS的影响更为明显,因为在这种内核中,任务级响应时间取决于最长的任务执行时间。这也就是说由于长任务的存在,任务级的响应时间要变长。其结果是CPU长时间停留在长任务中,其它的任务得不到实时的响应,甚至于根本得不到执行,系统的实时性势必要下降。
总之,无论是使用可剥夺型内核,还是使用不可剥夺型内核,长任务都会对RTOS构成严重的威胁。
3 长任务问题的解决
解决长任务问题最有效的途径是进行任务分割。所谓任务分割指将影响系统实时性的长任务分割成若干个小任务。这样单个任务的执行时间变短,系统的任务级响应时间变短,实时性提高。
3.1 对RTOS的分析与计算
当然,长任务的分割必须结合系统中所使用的内核,以及各任务对实时性的要求情况,进行必要的分析计算,才能
《通过任务分割提高嵌入式系统的实时性》