生于有效创新,死于盲目仿制

 http://www.djyos.com/introduction/2009-10-18/23.html

2009-07-04,是djyos的半岁生日,谨以此文予以纪念之。 
     半年来,djyos受到太多的饿帮助和关心,尤其是cu论坛,在djyos最艰难的时刻,给予了最多的帮助,在此对所有关心支持djyos发展的人,致以深深的谢意。半年来,许多关心djyos的朋友,都提出了一个问题:djyos凭什么成功?能不能成功?故撰此文。

 

1.仿制,前路茫茫

 

    学习→仿制→消化→超越,这向来是后来者跟踪并超越先进的捷径,然而,这种方法在通用操作系统(PC或嵌入式)上却行不通,为什么呢?

 

     ucosii的作者Labrosse先生在其书中说“写个实时内核那么难吗?不就是不断地保存、恢复CPU的那些寄存器嘛” 。这句话并不全面,而且误导了不少人,他们引而伸之地认为:“写个操作系统那么难吗?不就是实现线程和进程管理、信号量管理等API函数嘛” 。事实如何呢?写个成功的操作系统真的就那么简单吗?我们来看看一个典型、有一定复杂度的软件开发过程,如图1所示。

 

 

 

 

什么是仿制呢?用类似的底层算法,实现一套功能大同小异的API函数,即使每一行代码都是你自己写的,也叫仿制。无论你是微内核,还是宏内核,抑或混合内核,概不能外;不管你是通用操作系统,还是嵌入式操作系统,不管你是非实时系统,还是实时系统,都摆不脱仿制的性质。

 

      常听到有人说,现在写一个操作系统比20年前容易多了,这句话实际指的是仿制一个操作系统。容易在哪里呢?现在有发达的网络,漫天飞舞的开源资料可以借鉴,而20年前,当linus先生仿制UNIX完成linux的时候,或者Labrosse先生仿制RTOS制作ucosii的时候,是没什么开源资料可参考的,被仿制的对象几乎是唯一的参考资料。而今天,人家连函数原型都已经定义好了,又有那么多参考资料,虚拟机、开发板这些软硬件开发平台又是那么容易得到,难怪现在3个月就能写出一个不错的内核出来了,甚至连一些中学生都跃跃欲试。我们目前看到的漫天飞舞的操作系统中,绝大多数就是只完成“编写代码”这部分工作的仿制品。

 

      所以,Labrosse先生的话应该改为“仿制个实时内核那么难吗?不就是不断地保存、恢复CPU的那些寄存器嘛” 。引而伸之地可以说,“仿制一个操作系统那么难吗?不就是实现线程和进程管理、信号量管理等API函数嘛” 。然而,仿制只能仿一个外形,并不能复制他们在市场上的成功,操作系统业界多年没有成功的新苗冒出来了,也是这个原因。

 

  为什么说仿制必败呢?不可否定,新编写的操作系统,在前人的基础上,可能可以写出更精巧的上下文切换函数、更高效的API函数、更低的资源消耗、更快的中断响应,但是,一个操作系统的质量并不完全由这些因素构成,数十年、海量用户的使用和反馈为基础的稳定性和可靠性,以及用户长期积累的信心才是根本。如果一个新出的操作系统,只是实现原有操作系统类似的功能,你到哪里捕捉你的第一只螃蟹?即使有了第一只,那第二只、第三只呢?

 

     所以说,如果没有根本性的创新,仿制一个操作系统是死路一条,即使以谷歌的实力,也只是在Linux基础上开发Adroid,而不是新仿制一个操作系统。

 

2. 信心,源自创新
    都江堰操作系统(下文简称djyos),是一个全新的操作系统,它在操作系统的几个重要方面:调度器、中断管理、设备管理、资源管理等方面,都又非常突出的创新,甚至是理论创新。djyos花了5年时间设计,才初具雏形,因为它完成的是如图1所示全过程的工作全新操作系统,这5年间,经过无数次的反馈,方案被无数次推翻,许多策略被多次重新定义,许多代码被多次重写,才有你所见到的2万行代码。而不是像一些仿制的操作系统一样,调度策略、api设置都是享用现成的操作系统策略,只完成代码编写部分的工作。由于djyos在构成操作系统的多数主要方面都跟现有操作系统有着巨大的不同,因此很难参考现有系统的设计,反而为了在创新的同时尽可能照顾现有习惯而不得不有所顾忌。djyos的创新主要体现在以下方面,这些都是传统操作系统没有的。
   
1)在调度器方面,可以说是彻底革新,它几乎颠覆了传统的软件设计模式。对嵌入式编程来说,几乎是革命性的进步,它以事件为核心的调度方式,改变了过去操作系统要求程序员模拟计算机的思维方式的编程模式,使之可以按人类的思维方式编写应用程序;它使程序员可以摆脱线程和进程的束缚,djyos没有跟线程相关的API。特别是在嵌入式领域的程序员,有许多是行业背景很深的专家,但往往缺乏计算机操作系统方面的知识,他们在djyos下编程,则可以无需学习晦涩难懂的线程知识。
   
2)天然匹配多核和分布式计算,djyos的调度算法是以事件为核心的,应用程序只管为事件编制处理程序,而线程和CPU核则被当做处理事件必须的资源,由操作系统分配给事件,这种算法天生使多核编程更加简单,多核利用率更高。众多周知,目前CPU正往多核化发展,嵌入式CPU甚至DSP也是如此,比如ADI公司的blackfin561就是一颗只有几十KB内存的双核DSPdjyos有计划移植到blackfin561上,有望成为第一个在只有几十KB内存的CPU上实现对双核的完美支持的RTOS
   
3)创新的加载方式和中断管理模块,可以实现比所有操作系统都快的中断响应时间,并且在CPU启动后数十uS以内,应用程序的关键部分就可以实现对目标系统的控制,在操作系统加载过程中,就可以响应应用程序的中断ISR
   
4)实时的内存管理,在操作系统组件中,通常认为malloc函数是非实时组件,因为即使有充足的内存,malloc函数的执行时间也不可预计,不符合实时系统要求执行时间和结果均可预计的原则。但是djyos的内存管理,只要在系统设计时配备充足的内存,malloc的执行时间是快速而且可以预计的,而在只运行一个应用程序的实时系统中,内存不枯竭是容易做到的。
   
5)为项目经理和系统工程师量身定制的系统架构,为工程师量身定制的API设置,特别利于系统工程师划分项目模块,利于项目经理组建和管理团队,利于工程师编写利于维护的代码。
   
6)欲了解更多的特长,请到www.djyos.com下载《都江堰操作系统与嵌入式系统设计》一书。
3.
价值,来自用户

   
仿制必败,并不意味着创新必胜,创新只是必要条件而非充分条件,只有能为用户创造价值,才是充分条件。djyos的创新优势在于,它不是为了创新而创新,它的每一个都是为了给用户创造价值。我们来看看操作系统界的几个现象:
   
1)互联网上搜索一下wincelinux的技术指标对比,几乎linux完胜。
   
2)来自Gartner公司的数据证实,自从2003年起微软就一直稳居嵌入式操作系统全球市场份额榜首。
   
3)嵌入式linux强调免费且硬件成本低的成本优势,而wince最成功的地方,恰恰是成本最为敏感的、出货量巨大的消费电子产品。
   
4)《电子产品世界》2008年在工程师中做的调查表明,开发linux应用程序的工程师数量是wince2.5倍。(注:linux工程师的平均工资还远高于wince工程师)
   
这些数据表明,linux能在技术指标上完胜wince,说明linux是有了不起的创新的,但是,linux以多得多的人力成本,所开发的产品市场占有率却远比wince低!不能不说,linux的创新只是linuxer们自娱自乐的玩具而已!应用这些创新去创造价值,需要消耗太多的人力资源去学习和掌握linux,这些消耗足以抵消这些创新的价值。 
   
所以说,linux有巨大的创新,却大多是无效创新,这些创新使得高级专家们倍加推崇linux,专家的意见使许多项目盲目上马选择linux,把企业置于巨大的技术风险中,成就了大量高薪的linux工程师,企业却在消耗了大量研发经费和时间后,离成功仍然遥遥无期。这就是linux从业者众但市场占有率低的根本原因,前车之鉴,djyos需要防止重蹈覆辙。

   
是什么使人愿意花高价购买wincelicense,并付出更高的硬件成本呢?wince之所以取胜,在很大程度上来自快速方便的开发,快速推出产品,技术风险小,人力成本低。在windows系统衍生工具的支持下,图形化的开发,事件触发式编程令人倍感方便。与wince通过应用程序(对操作系统来说,EVC等开发工具属于应用程序)间接实现事件出发式编程相比,djyos的事件触发确实原生的,即djyos调度器就是按照事件进行调度的。所以,你只要有一个支持ansi C的编译器,只要会C语言,再加一个文本编辑器,就可以实现事件触发式编程。原生式的事件触发编程,从理论上,其执行效率和代码尺寸也应该比用应用程序间接实现的要高。
    djyos
的核心算法不但在通用嵌入式操作系统中有优势,此外,djyos还是一个RTOS,除跟wince在手持设备上竞争外,还可以与VxWorks等实时系统竞争,在RTOS领域,djyos在研发方便性上的优势更加突出。在性能上,按djyos“九九加一原则设计的中断管理架构,使部分中断可以永不禁止状态,从而实现最快的中断响应延迟。我们知道,实时系统中,实时性要求最高的部分功能,往往是用中断实现的,最快的中断响应速度,意味着djyos具有最高的实时性。
4. 
成功,扬长避短

   
在软件领域,革命性的创新的另一个拦路虎是惯性,作为革新的操作系统,你将很难做到与现有应用程序的兼容,你将立即面对行业惯性的压力,这种惯性来自于用户以及工程师的使用习惯和应用程序的兼容程度。如果在桌面系统上,这个压力尤其显著,移动设备次之,工业产品却几乎不受这个惯性影响。诚如我在《都江堰操作系统与嵌入式系统设计》一书中指出,开发高可靠的产品,对使用外来代码会非常谨慎,而且,由于这些产品的特异性大,甚至很多是定制产品,直接可用的公共代码资源很少,即使有,也不是应用程序的形式提供,而是库函数的方式提供。再者,高可靠性工业控制产品中,一般只运行一个程序,而这个程序的绝大多数代码,都是产品研发组自己开发的,对运行外来应用程序的需求几乎没有。所以,在工业领域,操作系统只要把常用的公共软件模块如网络模块、gui模块做好了,就基本满足用户需求了。嵌入式操作系统是一个细分市场,所以不会形成桌面系统寡头控制的局面,在桌面系统上,是windowsunix系操作系统双寡头局面,这种情况绝不会出现在嵌入式领域。这就给了后起之秀一个机会,只要你的产品好,工程师认同,你就有机会。嵌入式操作系统的目标用户是工程师,而工程师是一个善于学习的群体,容易接受新事物的群体,这也是djyos的机会。所以,djyos扬长避短,避开在通用计算机/服务器上与windowslinuxunix正面交锋,首先寻求在嵌入式领域寻找突破点,djyos要与非实时操作系统如嵌入式linuxwince竞争,以及实时操作系统如vxworksqnx等竞争。djyos提供三种运行模式,si模式是为资源非常匮乏的单片机准备的,dlsp模式是为资源相对丰富的中大型工控系统准备的,mp模式是为移动计算设备准备的,djyos将首先从工控领域取得突破。djyos先天优异基因,将为它带来机会。
5. 
开源,加速推广

   
一个全新的操作系统写出来了,要经过让人们接触、了解、熟悉、接受、使用的过程,这是走向成功的必经之路,在这个成熟的市场格局之下,这点尤为重要。djyos通过以下方法实现。
   
1)通过宣传使人们能够接触到djyos
   
2)公开全部充满注释的源代码,以及完善的文档,让人们能够了解和熟悉djyos
   
3djyos本身优秀的设计理念内涵,以及高可靠性的设计,使人们能够接受并扩大传播。
   
嵌入式软件的规模越来越大,越来越复杂,软件中潜藏的bugs也会越来越多,隐藏得越来越深,需要源代码来协助定位bug的需求也就越来越迫切。2005年以来, Windows CEVxWorksQNX都相继开源,有些是向公众开源,有些是向客户开源。我想,他们开源的初衷,并不是想像Linux那样,让公众修改他们的代码,而是市场压迫下不得不开源。所以,我认为,操作系统尤其是嵌入式操作系统,不管是免费的还是收费的,不开源就是没有出路的。对于自主操作系统来说,开源还有更重要的意义,可以藉此消除行业质疑,是证明你自主研发的最有力证据。
   
然而,开源后呢?一个新系统,摆一堆源代码在那里,然后你说你的系统有多么多么的先进,会有人看吗,会有人相信吗?用户把几万行代码拿到手里,根本就云里雾里。你必须有说明文档,这些文档必须详细,必须有良好的组织,必须易于阅读。djyos5年研发过程中,有2年在写配套的书《都江堰操作系统与嵌入式系统设计》,该书可在www.djyos.com下载,该书并不是简单地作为djyos的说明文档,还融汇了许多软硬件系统架构设计方面的思想,而这些思想又构成了djyos设计的基石。可以说,光这份文档的制作时间,就超过仿制一个普通操作系统内核所需要的时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值