20余年一直为中断喂狗是否正确而争论不休,实际很没意思,因为这种人根本就不知道人们 为什么要养此“宠物”。
现引用今天在博客中看到的一篇文章: -------------------------------------------------------------------------------------
喂狗 主程序中喂狗的优点: 系统资源占用少; 简单; 缺点: 1.要保证你的主程序不会进入死循环,而且死循环中又有喂狗的情况; 2.要保证1.6S至少被调用一次,要保证所有可能的正常运行时,都能正常喂狗, 但是有不能在主循环中加过多的喂狗指令,以免出现1那样的情况;
任务中喂狗: 一定要保证在正常情况下,1.6S内该任务至少被调用一次
中断喂狗: 缺点: 在系统进入一个不正常的循环时,中断喂狗仍然起作用,看门狗失去它本来的作用 系统资源占用比较多 -------------------------------------------------------------------------------------
真倒塌了!!!看后气的肚子痛。(对事不对人!!!)
“喂狗”是我们这个圈子里人的“黑话”,外行可能以为我们在骂架...它实际上是在看门狗 定时器溢出前对其进行的一次复位操作,以迫使看门狗定时器复零,以避免错误的系统复位。 豢养此“宠物”的目的是在程序跑飞时,为使损失降低到最小极限而“异想天开”设立的。 它的看家能力的总概率应该评估为50%. 如文章中的“1.要保证你的主程序不会进入死循环, 而且死循环中又有喂狗的情况;”实际以承认了这点。故养狗也不能100%地放心。 文章将喂狗分为3种,实际应该为2种,因为“任务中喂狗”不应该再包含在“主程序中喂狗” 中,而在OS中的任务实际由定时中断激活的,虽然它的级别和在主程序一样,但还应该归“中断 喂狗”。 这样就归类为网上长期争论不休的2种喂狗方法。即“主程序喂狗论”和“中断喂狗论”。 实际上2种方法都有缺点!!! “主程序喂狗论”提出: 在系统进入一个不正常的循环时,中断喂狗仍然起作用,看门狗 失去它本来的作用。 “中断喂狗论”也可提出:在系统运行一个很正常的循环时,主程序喂狗在起作用,看门狗 保持它本来的作用。但是在中断被意外关断不能有效工作时,主程序“正常” 有何实际意义??? 为什么要叫“狗”呢???因为狗记路是靠撒尿的~~可能菜农说话粗鲁~~~
当程序经过某处时,要置标志说明程序已在此处运行过,如狗撒尿一般。
通常在主循环即后台的某处设置一标志(俗称软狗标志),在中断(一般在定时器)即前台的某处 检测此软狗标志,若有则认为主程序此时运行正常,否则不喂狗直到狗咬人(复位)。 反之也可在前台设置软狗标志,在后台真正喂狗。
这种方法是前后台依据软狗标志互相沟通以达到正确而有效的喂狗目的。 而此种方法的中断喂狗一般用于低功耗的系统中,它的优点是喂狗周期固定,而且很容易做到在 一处真正喂狗。 此种方法的主循环喂狗的缺点是喂狗周期相对不固定,有可能需要多处喂狗。
真倒塌了~~~真不知道我在网上是几驳"中断不能喂狗论"了~~~
|
|
文章评论(0条评论)
登录后参与讨论