|
发表于 2010-4-15 16:15:53
|
显示全部楼层
回复【14楼】lysoft
空闲任务喂狗有缺陷的
当所有工作任务都在等待事件时,空闲有效,但系统因事件意外死锁,导致失去响应
最高优先级喂狗是很好的做法,系统实时性和性能有较大影响?实时性的处理大多是在中断处理,或者处理时锁定调度,甚至是临界区的
所以影响不大,喂狗的和监控的事情也很简单,占用不了多少时间,注意看门狗的时间要适当长些,以容许大任务的事实处理
用RTOS主要是平衡任务复杂性和实时性,尤其适合任务复杂和实时性不是极高的场合
在高实时系统,连OS可能都不需要用
-----------------------------------------------------------------------
回复【15楼】shaolin
空闲任务喂狗有缺陷的
当所有工作任务都在等待事件时,空闲有效,但系统因事件意外死锁,导致失去响应
-----------------------------------------------------------------------
系统失去响应,空闲任务也就喂不了狗,系统重启,这有什么缺陷呢?
最高优先级喂狗是很好的做法,系统实时性和性能有较大影响?实时性的处理大多是在中断处理,或者处理时锁定调度,甚至是临界区的
所以影响不大,喂狗的和监控的事情也很简单,占用不了多少时间,注意看门狗的时间要适当长些,以容许大任务的事实处理
——————————————————————————————————————————————————————
最高优先级喂狗是可以实现的做法,但是最高优先级喂狗当然是影响性能的,假如一个系统中打电话的任务是最高优先级的,但是如果加入最高喂......
-----------------------------------------------------------------------
用最高优先级任务喂狗是好方法。如果用中断服务去处理喂狗,等效于用最高优先级的“中断”任务去喂狗,道理是一样的。从极端角度讲,带优先级的中断控制器就是一个很好的内核调度器,只是你要很好的处理中断嵌套时的堆栈使用。当然,用最高优先级任务喂狗要注意,喂狗时间要尽量短,狗叫的间隔要尽量的长,喂狗任务喂狗后马上进入长“sleep",这样牺牲的实时为:喂狗时间+任务切换时间。这个如果能忍受就可用最高优先级任务喂狗。 |
|