- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向通信领域系统监控软件模块设计与实现
面向通信领域系统监控软件模块设计与实现
摘 要:给出了在通信领域的嵌入式应用中系统监控模块的基本功能和各部分功能的具体实现方案。
关键词:死循环;死锁;系统监控;调度频率
中图分类号:TP311.11文献标志码:A
文章编号:1001-3695(2007)06-0259-03
在面向通信领域的嵌入式实时应用软件系统设计中,系统监控是了解目标系统资源使用情况和目标系统运行状态的窗口,其监测的对象一般应包括CPU负荷统计、是否发生进程死循环、是否产生死锁、进程调度频率统计、目标系统当前各进程的状态和资源占有情况、内存的使用情况、定时器的使用情况以及异常发生时的恢复策略等。另外,系统监控还得提供一定的“干涉”手段,对目标系统运行过程中出现的各种不符合逻辑的情况可以通过调整资源的使用等方式来保障系统的可靠性、稳定性和实时性。??
1 系统监控软件模块的整体设计框架??
嵌入式实时应用系统一般都是采取基于优先级的任务调度方式。鉴于系统监控的特殊地位,在实际的设计实现中,实现系统监控功能的任务往往被设置成系统中所有任务的最高优先级,并通过睡眠→ 唤醒→运行→睡眠的循环方式运行,其整体的流程框架如图1所示。??
图1 系统监测流程图
其中设计中主要应考虑的因素有:睡眠时间的长短,其他事件唤醒监控任务的时机,对耗时较长的功能部分是否考虑另设进程单独处理等,这些主要应从系统的可靠性、稳定性和实时性等方面综合权衡考虑。??
2 系统监控软件模块各部分功能的具体实现方案??
2.1 CPU负荷统计??
CPU负荷统计是在某个时间段内所有应用任务运行时间占CPU时间总量的的比例,其计算方法如下:??
(1)首先获得时间基准StandardTime。时间基准的获得,即编制一段标准代码StandardCode,运行StandardCode标准代码??N??次,所花费的时间就为StandardTime。为计算方便,基准时间的单位用时钟Tick数来表示。系统每秒的时钟Tick数为Ticks。??
(2)生成一个优先级最低的空闲任务,在空闲任务中循环执行标准代码StandardCode,并对执行次数计数。假设在给定时间间隔??T??内StandardCode执行次数为n。??
(3)CPU占有率百分比CPUUseRate计算公式为CPURate=100-??100×??n??×StandardTime??/????N×T??×Ticks????
(4)每统计一次后,空闲任务的计数清零。??
当创建了一个最低优先级的空闲任务后,系统任务可分为两大类:空闲任务和非空闲任务,而空闲任务只用在没有其他任务或进程可运行的时候才能有机会运行。因此,只要知道空闲任务运行的时间比例即可得到CPU的利用率。在实现中,可通过在任务切换时挂入钩子函数的方式来得到空闲任务被调度运行的时刻和被抢占剥夺运行的时刻,两者之差就是空闲任务该次运行的时间,在一个固定时间段里将每次空闲任务运行的时间累加起来,就可得到空闲任务在固定时间段里所占用的CPU时间。??
在负荷过重的情形下,可以通过杀死占用运行时间较多的低优先级任务来保障系统可靠稳定的运行。??
2.2 进程死循环与死锁检测??
系统死锁和程序死循环的检测一直是多任务程序设计特别是操作系统设计的难题。在嵌入式应用中,考虑到其实时性的要求,不可能采取较复杂的算法来检测和最终解决这些问题,只能采取一些近似的算法“模糊”地进行,其检测方法描述如下:??
在进程控制块中增加用于死循环、死锁检测的两个域:进程上一段检测时间段内的运行(调度)次数和本次检测时间段的运行(调度)次数,当系统监监控任务运行时,根据这两个域值进行判断,经过若干次的检测后,如果二者的值相同,该任务处于运行状态,且CPU 利用率较高,可以近似地判断该进程进入了死循环;如果某进程组或所有进程(空闲进程和监控进程除外)是处于因临界资源的竞争引起的阻塞状态就可近似地认为该进程组或整个系统处于死锁状态,这二者均可通过杀死一些较低优先级的进程来解决,若实在不行,只得考虑系统重启,并给出现场信息。同时,还可通过二者的差值来判断系统是否有进程运行次数过于频繁,如果两者相差超过了某个阈值,可认为运行过频,给出警告信息。??
2.3 存储单元利用情况检测??
2.3.1 通信应用领域内存管理的实现方法??
嵌入式实时操作系统中的内存管理是保障应用实时性和可靠性的重要因素。在通信领域的应用中,内存申请往往呈现各种相同数据结构(即相同大小内存块)的大量申请现象。为了提高内存管理的实时性能和可维护性,一般采用如图2所示的内存管理方式。
原创力文档


文档评论(0)