免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7599 | 回复: 4
打印 上一主题 下一主题

生于有效创新,死于盲目仿制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-04 10:49 |只看该作者 |倒序浏览
本帖最后由 djyos 于 2010-03-22 21:05 编辑

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

中国是否需要国产操作系统,这已经不是问题了,问题是,如何才能拥有自己的操作系统?
1.        仿制,前路茫茫
学习→仿制→消化→超越,这向来是后来者跟踪并超越先进的捷径,然而,这种方法在通用操作系统(PC或嵌入式)上却行不通,为什么呢?
ucosii的作者Labrosse先生在其书中说“写个实时内核那么难吗?不就是不断地保存、恢复CPU的那些寄存器嘛” 。这句话并不全面,而且误导了不少人,他们引而伸之地认为:“写个操作系统那么难吗?不就是实现线程和进程管理、信号量管理等API函数嘛” 。事实如何呢?写个成功的操作系统真的就那么简单吗?我们来看看一个典型、有一定复杂度的软件开发过程,如图1所示。

图 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内存的双核DSP,djyos有计划移植到blackfin561上,有望成为第一个在只有几十KB内存的CPU上实现对双核的完美支持的RTOS。
(3)创新的加载方式和中断管理模块,可以实现比所有操作系统都快的中断响应时间,并且在CPU启动后数十uS以内,应用程序的关键部分就可以实现对目标系统的控制,在操作系统加载过程中,就可以响应应用程序的中断ISR。
(4)实时的内存管理,在操作系统组件中,通常认为malloc函数是非实时组件,因为即使有充足的内存,malloc函数的执行时间也不可预计,不符合实时系统要求执行时间和结果均可预计的原则。但是djyos的内存管理,只要在系统设计时配备充足的内存,malloc的执行时间是快速而且可以预计的,而在只运行一个应用程序的实时系统中,内存不枯竭是容易做到的。
(5)为项目经理和系统工程师量身定制的系统架构,为工程师量身定制的API设置,特别利于系统工程师划分项目模块,利于项目经理组建和管理团队,利于工程师编写利于维护的代码。
(6)欲了解更多的特长,请到www.djyos.com下载《都江堰操作系统与嵌入式系统设计》一书。
3.        价值,来自用户
仿制必败,并不意味着创新必胜,创新只是必要条件而非充分条件,只有能为用户创造价值,才是充分条件。djyos的创新优势在于,它不是为了创新而创新,它的每一个都是为了给用户创造价值。我们来看看操作系统界的几个“怪”现象:
1、        互联网上搜索一下wince和linux的技术指标对比,几乎linux完胜。
2、        来自Gartner公司的数据证实,自从2003年起微软就一直稳居嵌入式操作系统全球市场份额榜首。
3、        嵌入式linux强调免费且硬件成本低的成本优势,而wince最成功的地方,恰恰是成本最为敏感的、出货量巨大的消费电子产品。
4、        《电子产品世界》2008年在工程师中做的调查表明,开发linux应用程序的工程师数量是wince的2.5倍。(注:linux工程师的平均工资还远高于wince工程师)
这些数据表明,linux能在技术指标上完胜wince,说明linux是有了不起的创新的,但是,linux以多得多的人力成本,所开发的产品市场占有率却远比wince低!不能不说,linux的创新知识linuxer们自娱自乐的玩具而已!应用这些创新能创造的价值,需要消耗太多的人力资源去学习和掌握linux,这些消耗足以抵消创新的价值。
  所以说,linux有巨大的创新,却大多是无效创新,这些创新使得高级专家们倍加推崇linux,专家的意见使许多项目盲目上马选择linux,把企业置于巨大的技术风险中,成就了大量高薪的linux工程师,企业却在消耗了大量研发经费和时间后,离成功仍然遥遥无期。这就是linux从业者众但市场占有率低的根本原因,前车之鉴,djyos需要防止重蹈覆辙。
是什么使人愿意花高价购买wince的license,并付出更高的硬件成本呢?wince之所以取胜,在很大程度上来自快速方便的开发,快速推出产品,技术风险小,人力成本低。在windows系统衍生工具的支持下,图形化的开发,事件触发式编程令人倍感方便。与wince通过应用程序(对操作系统来说,EVC等开发工具属于应用程序)间接实现事件出发式编程相比,djyos的事件触发确实原生的,即djyos调度器就是按照事件进行调度的。所以,你只要有一个支持ansi C的编译器,只要会C语言,再加一个文本编辑器,就可以实现事件触发式编程。原生式的事件触发编程,从理论上,其执行效率和代码尺寸也应该比用应用程序间接实现的要高。
djyos的核心算法不但在通用嵌入式操作系统中有优势,此外,djyos还是一个RTOS,除跟wince在手持设备上竞争外,还可以与VxWorks等实时系统竞争,在RTOS领域,djyos在研发方便性上的优势更加突出。在性能上,按djyos“九九加一”原则设计的中断管理架构,使部分中断可以永不禁止状态,从而实现最快的中断响应延迟。我们知道,实时系统中,实时性要求最高的部分功能,往往是用中断实现的,最快的中断响应速度,意味着djyos具有最高的实时性。

4.        成功,扬长避短
在软件领域,革命性的创新的另一个拦路虎是惯性,作为革新的操作系统,你将很难做到与现有应用程序的兼容,你将立即面对行业惯性的压力,这种惯性来自于用户以及工程师的使用习惯和应用程序的兼容程度。如果在桌面系统上,这个压力尤其显著,移动设备次之,工业产品却几乎不受这个惯性影响。诚如我在《都江堰操作系统与嵌入式系统设计》一书中指出,开发高可靠的产品,对使用外来代码会非常谨慎,而且,由于这些产品的特异性大,甚至很多是定制产品,直接可用的公共代码资源很少,即使有,也不是应用程序的形式提供,而是库函数的方式提供。再者,高可靠性工业控制产品中,一般只运行一个程序,而这个程序的绝大多数代码,都是产品研发组自己开发的,对运行外来应用程序的需求几乎没有。所以,在工业领域,操作系统只要把常用的公共软件模块如网络模块、gui模块做好了,就基本满足用户需求了。嵌入式操作系统是一个细分市场,所以不会形成桌面系统寡头控制的局面,在桌面系统上,是windows和unix系操作系统双寡头局面,这种情况绝不会出现在嵌入式领域。这就给了后起之秀一个机会,只要你的产品好,工程师认同,你就有机会。嵌入式操作系统的目标用户是工程师,而工程师是一个善于学习的群体,容易接受新事物的群体,这也是djyos的机会。所以,djyos扬长避短,避开在通用计算机/服务器上与windows、linux、unix正面交锋,首先寻求在嵌入式领域寻找突破点,djyos要与非实时操作系统如嵌入式linux、wince竞争,以及实时操作系统如vxworks、qnx等竞争。djyos提供三种运行模式,si模式是为资源非常匮乏的单片机准备的,dlsp模式是为资源相对丰富的中大型工控系统准备的,mp模式是为移动计算设备准备的,djyos将首先从工控领域取得突破。djyos先天优异基因,将为它带来机会。
5.        开源,加速推广
一个全新的操作系统写出来了,要经过让人们接触、了解、熟悉、接受、使用的过程,这是走向成功的必经之路,在这个成熟的市场格局之下,这点尤为重要。djyos通过以下方法实现。
(1)通过宣传使人们能够接触到djyos。
(2)公开全部充满注释的源代码,以及完善的文档,让人们能够了解和熟悉djyos。
(3)djyos本身优秀的设计理念内涵,以及高可靠性的设计,使人们能够接受并扩大传播。
嵌入式软件的规模越来越大,越来越复杂,软件中潜藏的bugs也会越来越多,隐藏得越来越深,需要源代码来协助定位bug的需求也就越来越迫切。2005年以来, Windows CE、VxWorks、QNX都相继开源,有些是向公众开源,有些是向客户开源。我想,他们开源的初衷,并不是想像Linux那样,让公众修改他们的代码,而是市场压迫下不得不开源。所以,我认为,操作系统尤其是嵌入式操作系统,不管是免费的还是收费的,不开源就是没有出路的。对于自主操作系统来说,开源还有更重要的意义,可以藉此消除行业质疑,是证明你自主研发的最有力证据。
然而,开源后呢?一个新系统,摆一堆源代码在那里,然后你说你的系统有多么多么的先进,会有人看吗,会有人相信吗?用户把几万行代码拿到手里,根本就云里雾里。你必须有说明文档,这些文档必须详细,必须有良好的组织,必须易于阅读。djyos的5年研发过程中,有2年在写配套的书《都江堰操作系统与嵌入式系统设计》,该书并不是简单地作为djyos的说明文档,还融汇了许多软硬件系统架构设计方面的思想,而这些思想又构成了djyos设计的基石。可以说,光这份文档的制作时间,就超过仿制一个普通操作系统内核所需要的时间。

[ 本帖最后由 djyos 于 2009-7-29 09:43 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-09-06 10:00 |只看该作者
“生于有效创新,死于盲目仿制。”
很精辟!
不但适合系统,也适合创业中的技术企业。

论坛徽章:
0
3 [报告]
发表于 2009-09-21 21:40 |只看该作者
19年前,linus和我一样,是个无名小卒。

论坛徽章:
0
4 [报告]
发表于 2009-10-11 01:33 |只看该作者


3楼的有点偏激了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP