实时性改善措施

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

系统实时性的改善措施
摘要:
对很多嵌入式系统来说,一个设计良好的实时操作系统(RTOS)可以让开发工程师掌握系统执行任何任务或响应任何关键事件的时间,满足系统实时性要求。

为了理解RTOS如何通过系统调度策略实现实时性要求,本文介绍了抢占式调度、可抢占的内核、优先级继承和中断处理等概念。

关键字:实时性调度优先级
一、实时控制系统定义
所谓“实时控制系统”,实际上是指控制系统工作时,其各种资源可以根据需要随时进行动态分配。

由于各种资源可以进行动态分配,因此其处理事务的能力较强、速度较快。

实时控制系统贵在实时,要求在规定的时间内完成某种控制。

主要用在工业控制中,实时控制系统中一般任务数是固定的,有硬实时和软实时之分,硬实时要求在规定的时间内必须完成控制,这是在控制系统设计时保证的;软实时则没有那么严,只要按照任务的优先级,尽可能快地完成控制即可。

我们通常使用的控制系统在经过一定改变之后就可以变成实时控制系统。

实时控制系统是保证在一定时间限制内完成特定功能的控制系统。

例如,可以为确保生产线上的机器人能获取某个物体而设计一个控制系统。

在“硬”实时控制系统中,如果不能在允许时间内完成使物体可达的计算,控制系统将因错误结束。

在“软”实时控制系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。

一些实时控制系统是为特定的应用设计的,另一些是通用的。

一些通用目的的控制系统称自己为实时控制系统。

但某种程度上,大部分通用目的的控制系统,如微软的Windows NT或IBM的OS/390有实时系统的特征。

这就是说,即使一个控制系统不是严格的实时系统,它们也能解决一部分实时应用问题。

二、实时控制系统的分类
实时控制系统可分为软实时系统和硬实时系统。

实时系统对逻辑和时序的要求非常严格,如果逻辑和时序出现偏差将会引起严重后果。

实时系统有两种类型:软实时系统和硬实时系统。

软实时系统仅要求事件响应是实时的,并不要求限定某一任务必须在多长时间内完成;而在硬实时系统中,不仅要求任务响应要实时,而且要求在规定的时间内完成事件的处理。

通常,大多数实时系统是两者的结合。

因为采用实时控制系统的意义就在于能够及时处理各种突发的事件,即处理各种中断,因而衡量嵌入式实时控制系统的最主要、最具有代表性的性能指标参数无疑应该是中断响应时间了。

中断响应时间通常被定义为:
中断响应时间=中断延迟时间+保存CPU状态的时间+该内核的ISR进入函数的执行时间。

中断延迟时间=MAX(关中断的最长时间,最长指令时间) + 开始执行ISR的第一条指令的时间。

三、实时控制系统改善措施
对于一个好的控制系统,需要兼顾功能强大,用户易用性,可靠性,实时性,可维护性,很多时候最后的设计是这些要求达成的一个平衡,今天我们讨论如何提高控制系统的实时性。

实时分为软实时与硬实时,软实时要求平均响应时间要小于某一个值,硬实时要求最坏响应时间要小于某一个值,很多应用场景任务的实时要求非常高,比如汽车防抱死系统,差10毫秒就是人命关天,时间就是生命。

电信中主管网络损坏,需要在50毫秒之内倒换到备份网络之中,否则可能有成千上万个通话中断,损失重大,至于航天系统,实时的重要性要求不言而喻。

其他的系统,如手机,太慢了用户感觉肯定不爽,不希望按接电话键2秒钟都没反应,那样对方可能挂机了。

提高控制系统的实时性的具体方法有:
1缩短中断响应时间
为了获得对外部事件的及时响应,最小化硬件中断发生到执行该中断的第一条代码的时间很重要。

这个时间间隔称为中断延迟,为了保证中断延迟尽可能小,一个好的控制系统应该在几乎所有时间内都支持产生中断。

正如在关于内核抢占部分提到的那样,一些重要的代码段的确需要暂时屏蔽中断。

这种最大的屏蔽时间通常被定义为最大的中断延迟。

在一个嵌入式系统中可能会同时出现多个硬件中断。

例如,在一个病人监护系统中,当一个传感器记录了病人心跳的一次变化并且网卡接收到网络传来的数据的同时,护士按了触摸屏。

很明显,一些中断(如心率的变化)应该立即得到处理,而其他的则可以延缓。

通过提供对嵌套中断的支持,控制系统支持嵌入式系统优先处理更高优先级的中断。

2缩短进程上下文切换时间
当CPU在执行某个任务时,实时任务到来,需要马上执行实时任务,我们不能等到当前任务时间片用完才去执行实时任务,那样黄花菜都凉了,必须在中断来临之时马上能过切换过去,保存当前进程的上下文如寄存器,内存文件,信号等上下文,恢复实时任务的上下文。

保存恢复上下文越快越好,这就要求两个进程的上下文共享的资源越少越好,如每个任务的内存是独立的,甚至寄存器也是独立的,这样互不干扰,切换最快了。

3优先级继承
然而,为一个进程设定一个高优先级并不总能保证该进程能够抢占低优先级的进程。

有时候,系统会出现一种称为优先级倒置(priority inversion)的状态,在这种状态下,低优先级的进程将在“无意中”阻止较高优先级进程占用CPU。

优先级倒置可能会表现为几种形式,为了防止发生这种情况,控制系统必须提供一种称为优先级继承的功能。

如果一个应用程序分布于几个通过网络连接的处理器,那么控制系统也应该支持分布式优先级继承,这样可以按照优先级的顺序处理来自多个处理器的请求。

如果没有优先级继承,一个多处理器系统可能会落入无限的优先级倒置和死锁中。

4缩短进程资源分配等待时间
对于一个多进程控制系统,很多资源是大家共享的,如果实时进程需要某个资源,发现那个资源被别的低优先级进程占用,非要等人家执行完才行,而此低优先级进程级别实在太低,其它的进程趁机抢占了CPU, 导致这个低优先级进程迟迟得
不到执行,连累苦了我们的实时进程。

这样就造成了优先级的反转,解决优先级反转也有很多办法:主要有优先级继承与优先级极限两种,原理都相同:此时迅速提高占有资源的低优先级进程的优先级,使其优先级至少与等待资源的实时进程相同。

5以空间换时间,减少资源的延迟分配
减少虚资源的分配,要给就给实的,甚至可以预分配资源。

通常进程创建时得到的内存都是虚的,适用malloc得到的资源也是虚拟内存,真正的内存只有当你读些到这个页时才分配,先产生缺页中断,在缺页中断里调用物理页面分配函数,不过这需要一定的时间,硬实时任务是等不及的,所以开始不能跟他玩虚的,狠狠心,开始就把它需要的物理资源备好,所以如果需要寄存器就不要拿Cache敷衍。

6尽量使控制系统简单,甚至定制
为了实时性,我们不得不牺牲他的其他功能,也减少用户易用性,如去掉图形界面部分,去掉虚拟内存管理,甚至去掉多进程,专注于一个任务效率当然最高,理论证明,如果有多个实时任务,要保证他们都不会 miss deadline, 流出来的缓冲时间至少要达到30%, 这里还没考虑到上下文切换时间,实际需要的缓冲时间更多。

当前实时控制系统有DOS, Windows mobile, Windows CE, VxWorks, 各种实时Linux, Qnux等。

我国我们的通用控制系统要考虑到实时性,必须在其设计的时候考虑到可裁减性,可配置性,这样到实时场合下,可以很方便的抛弃一切不必要的负担,全身的投入到实时任务之中。

而这不是一个简单的要求。

四、小结
通过本次的学习,自己对关于计算机控制系统的实时性以及相关问题都有了一些的了解以及在生产、生活中的应用,实时性可以给各行各业带来巨大的方便,知道了各种各样的改善措施以及他们应用的情况。

在作报告的过程中自己深深的体会到了学科之间的联系、以及自己的不足。

计算机控制技术是一门综合性较强的学科,涉及到了三电、自动控制原理等学科,希望自己通过这次学习以后多多联系实际,多关心每门课程的学习、区别联系,为自己以后的课程学习打下一个好的基础。

最后,感谢丁老师这个学习以来的悉心教导!
五、参考文献:
[1]于海生.《计算机控制技术》[M].机械工业出版社,2007
[2]许勇.《计算机控制技术》[M]. 机械工业出版社,2008
[3]顾德英.《计算机控制技术与系统》[M]. 北京邮电大学出版社,2009。

相关文档
最新文档