在“阶级敌人”Airwill的讨论“OS 和看门狗的问题”里
我跟帖转帖了大量有关"usosii"的网文,设计主题“OS 和看门狗”肯定是找不到的。
computer00 发表于 2009-2-17 10:48 侃单片机 ←返回版面
11楼: 看门狗和OS有必然联系吗?
学生D 发表于 2009-2-18 18:17 侃单片机 ←返回版面
19楼: 这么研究OS理论?
请问,winXP带了狗吗?它需要看门吗?
一个OS最基础的活动是自己的硬件时钟节拍——系统心跳,它的作用本身就是一个看门狗:假设某当前运行任务A出现异常时,时钟节拍的ISR能够舍弃这个任务(放弃这个虚拟MCU及其资源)而切换到其它任务,当再次轮换到A任务时,OS可以使其从头开始重新运行。——这不正是看门狗的恢复作用?愿意的话,当然可以设计使OS切换到A任务出现故障时的那一点重新开始运行。这与设计看门狗恢复程序是一样的。
呵呵,谁愿意再养一条看门狗,那是属于用户意愿,如00所说,跟OS无关!
OS是内核,有自己的心跳。(只有一个心跳,只喂一条狗。——养2条狗听哪条狗叫?) 用户是核外程序,愿意养多少条狗都行。
俺来谈谈自己的想法:
首先,OS和狗没任何关系。
其次,在但定时器的MCU-OS中,定时器是节拍的提供者和支持者。
若采用10mS节拍,则系统要组成10个任务,那么在任一节拍处理程序中,
每个用户将平分此节拍,即每个任务可至少获得1mS的时间来运行该任务
程序。
若某任务运行事件远远低于此时间,即提前完成该时间片内的任务。
反之,超过时间片所约定的时间。
不管什么情况发生,该任务都会通过软中断的方式来达到在硬件节拍中断
下次来前使下个时间片的任务跟随运行。
以此类推,直到第10个任务的完成。
即使某任务超时,但10个总任务完成时间最大之和若低于节拍时间10mS
则认为本OS应用设计是合理的。
而不应该任务那些时间片超时的任务是违法的,因为OS任务本来就是死循环。
若要求全部任务在各自时间片内不得超时的OS只配称之为“协作式”OS.
OS的成功之关键就是任务调度及切换,任务同级“菜鸟”和被同级“非礼”
的任务之权利,应该在随后的时间片内得到执行。
切换时间和任务要求的强实时的多少有关,一般即可。
而任务狗和OS自带狗肯定不同。因为后者具备了OS提供的内部接口,而前者
和任务一样,它只能在其时间片内运行。
再者OS狗的级别是超越中断事件处理任务和一般任务的最高级特权任务。
它是每个节拍中断到来后运行的第1个任务。
而其他任务(包括中断退出后设定的中断处理任务)的引发,都是通过软中断
来引发的。
再说明:
若狗任务和其他任务都归属同一节拍中断源,那么若实时监视每个时间片的
任务,则应该用另一节拍频率加倍的狗任务才能完成。
故OS的狗任务和其他任务都归属同一节拍中断源的设计是有问题的~~~
若任务关某一中断。。。
上班中,且听下次分解~~~
|