嵌入式系统的可靠性(一)

来源:互联网 发布:淘宝游戏交易平台 编辑:程序博客网 时间:2024/05/17 22:29
许多的操作系统,在宣传自己的优异性时,不外乎上下文切换时间多么短、占用系统资源多么少、功能模块多么多、线程间通信手段多么丰富。谈到可移植性时,不外乎说自己的C语言率多么高,移植需要修改的代码行多么少,等等!这些方面,都非常重要,但并不全面,主要是从操作系统本身出发看问题。嵌入式操作系统的核心要素是可靠性、实时性和可移植性。要从嵌入式产品的整体效果出发,例如可靠性,不能光考虑操作系统的可靠性,更多地,应考虑由操作系统和应用程序构成的整个产品的可靠性。可移植性也一样,关注操作系统本身的可移植性重要,更应该关注应用程序可移植性。
1.     正确理解可靠性
谈到操作系统的可靠性,许多人会把焦点集中在操作系统本身是否可靠稳定,在运行中是否会出错等。这完全是一厢情愿、闭门造车的想法,就像一个汽车设计工程师,大谈特谈其设计的汽车本身如何可靠,开多少年都不会坏,却闭口不谈乘客是否安全。
在这里,我先给可靠性一个定义:
嵌入式操作系统的可靠性,表现为应用程序在该操作系统支持下可靠运行的能力。
注意,是用户产品可靠,这对通用操作系统和嵌入式操作系统的要求,是有区别的。通用操作系统中,运行许多应用程序,一个应用程序挂了,操作系统要保证其他应用程序不受影响,故操作系统本身可靠性非常重要。而嵌入式系统呢?嵌入式系统只有一个应用程序在跑,唯一的应用程序挂了,即使操作系统本身正常,又有什么意义呢?因此,嵌入式系统的可靠性,更多地强调支持应用程序可靠,这也是嵌入式操作系统的一个设计难点。
影响用户产品的可靠性因素,可以分解为:
1、  操作系统可靠。
2、  应用程序可靠。
3、  应用程序要正确地使用操作系统
以上三点,无论哪一个出现问题,都将导致用户的产品缺陷。
操作系统作为众多用户、众多产品的公共模块,理应得到更多的考核、验证、反馈、修正的机会,更加容易保证其正确性。
而用户的应用程序则不然,它的正确性,主要靠研发企业的测试来保证,用户的验证和反馈也很有限,是容易出问题的地方。产品缺陷,主要来自两个方面:
1、  应用程序本身业务逻辑存在bug
2、  应用程序没有正确地使用操作系统。
正是由于应用程序容易出问题,所以应该特别注意,操作系统作为基础软件,责无旁贷,绝对不能仅仅着眼于自己是否可靠。再强调一句,嵌入式系统中,如果应用程序挂了,操作系统再坚挺,都毫无意义。
对于操作系统来说,降低自身缺陷固然重要,但如果能在帮助应用程序减少错误方面做点工作,对提高用户应用程序可靠性,贡献更大。djyos主要从以下两个方面,帮助应用程序减少缺陷:
1、  降低程序员不正确地使用操作系统的机会。
2、  帮助用户减轻系统中各模块的耦合强度,以降解系统复杂度,减少应用程序本身存在的bug。这是系统工程师好项目经理最应该关注的。
对操作系统自身的可靠性,我们知道,操作系统调度器本身就是一个比较复杂的程序,直接控制计算机的方方面面。仔细测试能最大程度地排除bug,保证OS自身的可靠性,这是毋庸置疑的。但我要说,通过架构设计,使操作系统更加简洁,对减少bug更有意义。越简洁的东西,越可靠,这是永恒不变的真理。
1、  通过架构设计,降低临界区保护的复杂性,是djyos简洁可靠的典型案例。
2、  事件只有两种状态:就绪态和阻塞态,降解调度器的复杂性。

个人主页:www.djyos.com
0 0
原创粉丝点击