发布于 2009-06-01 23:58:03
0楼
个人观点和实践体会。
1,空OB能在多数工况下可以不让CPU停机的原因在于系统故障处理的机制,而不是OB。系统原理是OS预定义了各类故障的中断处理例程,这就是OBx。如果OBx不存在,CPU遭遇故障时别无出路,只能停机。当OBx存在时,就调用OB来应对故障。空的OB对系统来讲,就是不做任何处理。系统退出中断OB后,带病继续运行。
2,据上所述,OBx只是系统故障的诊断手段,不是应对系统故障的办法。根据自己工程的特点,给对应OB编程,在维持系统安全工作的前提下,尽量不停机,并及时汇报系统故障性质和故障点给操作工,人工排除故障才是正解。OB就像医生,只负责报告病人的病症、原因及症结点,不对症下药是解决不了问题的。
3,OB的参数区是OS与OB的接口,系统将所有有关的信息通过参数区传递给OB和编程工程师,只需简单判读一下对应数据,就可得到系统故障性质和故障点。
4,空OB不能保障CPU一定不停机。原因是很多故障会触发多类故障中断,且多中断例程的触发会消耗大量系统堆栈,一旦资源紧张,CPU仍可能停机。一个从站掉队,就会至少触发通讯错、机架错、I/O读写错三类中断,因中断优先不同,平时停机时的诊断缓存报文仅常见最高级中断报告。
5,CPU带红灯运行会显著提高系统扫描周期,这意味系统反应变慢,控制特性变差。
知其道,用其妙!