魏永明 。 “自主”操作系统 (完)
作者 陈怀临 | 2012-09-23 00:36 | 类型 中国系统软件 | 20条用户评论 »
4 如何开发“自主”操作系统4.1 开发“自主”操作系统的两种目的和策略开发“自主”操作系统的主要目的有两种:一种是想再造一个类似 Android、iOS 的操作系统,并作为其竞争者;一种仅仅是为了在商务谈判和合作中获得一个比较好的筹码。当然,还有一种目的就是骗取政府的财政支持,对这类不良目的,不属本文讨论范围。 我们先猜度一下国内外这几年出现的一些“自主”操作系统,其目的是什么:
好,面对这两种开发“自主”操作系统的目的,应该有什么样的策略呢?其实策略很简单,不管你是真心还是假意,都应该按照本文第 3 章给出的“自主”操作系统之特征进行开发,除此之外,别无他法。任何期望找捷径的方法,都不可能获得成功。这里所说的找捷径的方法具体有:
顺便谈谈我对基于浏览器技术的 web 操作系统之看法。 理论上讲,浏览器可以做很多事情,甚至可以替代 PC 机上的通用操作系统。但是,最新的浏览器技术(HTML5/CSS3等),还存在一些技术上的问题。主要的问题有如下两个:
HTML5 技术作为原生应用的一种补充,可以起到很好的作用,但是,如果要想在浏览器技术上建立一个真正可以和 Android 等竞争的操作系统,恐怕还需要很长的时间(技术上必须有突破)。要不然,Google 现在主推的应该是 ChromeOS,而不是 Android。 现在回答刚才提到的问题:“为什么 FirefoxOS 可以比 webOS 的生命力更加长久些呢?”主要的原因是,FirefoxOS 是开源的,有比较强大的企业在主导其发展,作为一个脱胎于开源基金会的企业(Mozilla公司),也能获得合作伙伴的一些好感;相反,因为 webOS 是封闭,HP 又没有能力像苹果那样打造一个完全封闭的平台和生态系统,所以最终的命运是被人抛弃了。虽然后来 webOS 也走上了开源的道路,但大势已去,HP 不亲自带头搞,光靠开源社区是搞不成的。 4.2 技术层面上的考虑假定你是一名“自主”操作系统项目的技术管理者,你第一步要考虑的问题是什么?许多人的回答可能是:先选操作系统内核、基础库什么的。其实错了,第一步要考虑的应该是你打算选择什么编程语言作为原生应用的编程语言。 世界上的编程语言有很多种,有些语言贴近机器,比如汇编语言、C语言,有些语言贴近人,比如 Basic、Java,还有些语言用于特定领域,比如网页服务器端使用的 PHP,有些适合做不同软件之间的粘合剂,比如 Perl、Python。本文第 3 章已经解释了编程语言以及围绕编程语言形成的运行环境、框架是将操作系统区隔于其他操作系统的主要技术特征。因此,我们必须慎重选择一种编程语言。而且一旦选定了一种编程语言,“自主”操作系统在开发者看来长什么样,其实就基本上定了。 选择编程语言要考虑如下因素:
其实很多读者看到这里,都会想到 Java 语言。是的,Java 语言或其派生语言如 C# 是构架“自主”操作系统的最佳编程语言。可惜,已经被 Android 和 Windows Phone 给捷足先登了。 如此一来,你可以考虑重新设计一门类似 Java 的语言,也可以通过其他手段,让你使用 Java 语言构建的操作系统有别于其他操作系统。比如,构建自己的虚拟机,如 Android 使用的 Dalvik 那样(Dalvik 和 Oracle 的 JDK 标准虚拟机有很大不同,从而让 Oracle 还挺难告赢 Google 的);你也可以用 Dalvik,但让类库、运行环境和 Android 不同(这样做的法律风险要大一些)。总之,你需要有自己的创新,全部抄袭是不行的。 确定了编程语言,接下来的工作其实就比较直接了,从上而下设计就是了。主要有:
上面的第一点和第二点,是“自主”操作系统有别于其他操作系统,且支撑你可以和其他人竞争的关键点。往下的东西都不是构成“自主”操作系统真正竞争力的东西。 这么看来,其实也挺简单的。不是吗?貌似有钱、有个把技术上的明白人就能做到。技术上没问题了,市场、法律等方面的事情,请专业人员帮忙,中国这类人才还是蛮多的,缺的,其实还是技术人员以及懂系统工程和软件开发的管理人员。 4.3 快速搭建一个“自主”操作系统这里给大家介绍笔者早先和美国一家公司合作,尝试搭建的一个操作系统,其实在当年这些东西的基础上,搭建出来一个有别于 Android 的开源“自主”操作系统还是非常快的。 这个系统使用了 Linux 内核和标准的 C/C++ 函数库,以及一些和 Android 体系结构类似的 C/C++ 运行库,使用了笔者公司的开源软件 MiniGUI、WebKit 浏览器核心引擎等等。基础的东西就这些。之上是开源的 Kaffe JVM(后来改成了 Cacao JVM),和符合 J2SE 规范的类库实现,再往上就是运行环境和框架了。见下图: 可惜的是,真正具有核心价值的运行环境和框架,是美国合作方自己开发的,我手里没有源代码。相信读者也能明白,美国合作方掌握的才是精华。
如果要在这套系统基础之上快速开发一个“自主”的操作系统,我们需要:
要做的工作还是蛮多的,但这个系统在 2007 年的时候,就已经可以运行在主频在200M Hz 左右的手机上了。 当然,这个系统离本人定义的真正“自主”的操作系统还有很大的距离。但是,起码技术上的方向是基本正确的,要知道,这个系统几乎是和 Android 同时发起的。后来在 2007 年,Google 宣布开源 Android 后,美国合作方敏锐感觉到了 Android 将是未来的趋势,就直接转向了 Android 平台,项目也就终止了。 5 给相关人员的建议5.1 给政策制定者这里所说“政策制定者”主要指的是“核高基”等政府资助项目的决策人。其实前面已经说过了,这里重申一下: 政府需要在更长的周期内(至少五年),考核受资助企业的市场份额是否有扩大,是否建立了良好的生态系统,让使用者、开发者欲罢不能,而不是简单的著作权证书和专利数量,或者是否达到了一个给定的出货量(因为出货量是可以作假的)。也就是说,我们应该重新定义“自主”这两个字,从“自有知识产权”向“有效知识产权保护下的自己主导”转移;在知识产权方面,要强调有效专利数量,而不是著作权;甚至应该要求受资助企业按某种许可证条款开放源代码。 政策制定者甚至可以参照本文 3 章给出的“自主”操作系统之定义,将整个“自主”操作系统的研发和推广分为三个部分:
政策制定者切忌急功近利,要按照客观规律办事,将科研类的课题交给研究机构,将工程类以及市场推广等方面的课题交给企业,将法律类的课题交给大专院校。只有这样,才能首先让方法正确,方法上正确,加上合理的考核制度,才能让钱产生真正的效益。 在花钱方面,在一盘大棋下的统一部署下,初期让多一些的企业或机构参与,一年一验收,逐步淘汰那些不合格的,最后剩下来一、两个企业就好。十亿美金,外加企业自筹部分,我看基本够了。 5.2 给大型企业决策者有意开发“自主”操作系统的大型企业决策者首先要明白,开发“自主”操作系统是一个长期、艰巨的系统工程。甚至,你需要准备一大笔钱来和已有的巨头打官司(微软赔付给 Sun几十亿美金之后,才让自己的 C# 和 .Net 平台成为“干净”的语言和平台)。 另外,如前所述,不管是真心还是假意,都要拿出十足的架势来真做,而且,对内、对外都要强调这点。要知道,你期望得100分,下属大多数情况下只能给你 80 分;你期望得 1000 分,下属也许就可以给你500分。这样才能超出决策者自己的预期,才能收到更好的效果。 5.3 给“自主”操作系统的技术负责人这事儿如果恰好让你负责,那简直是,怎么说呢,是个“扬名立万”的机会啊!你要知道的是,这事儿和制造“两弹一星”差不多。 首先你要掂量掂量,你有没有这个本事。所谓“没有金刚钻,不揽瓷器活”,说的就是这个道理。有兴趣的也别来找我,我做点小项目可以,真要我负责,我没这个本事。 另外一方面,你要是违背知识分子的良知,帮助一些不良人员骗取国家的资助款项,就更不应该了。这可是要被人戳脊梁骨的;有没有钱拿永远是小事,昧了自己的良心可是大事。 5.4 工程上的建议在具体的研发实施过程当中,开发负责人必须特别注意工程方面的问题:
这方面,如果需要帮助,本人可尽微薄之力。 【全文完】 | |
雁过留声
“魏永明 。 “自主”操作系统 (完)”有20个回复
开发一个类似Dalvik 的虚拟机不是易事,很难绕过oracle和google的专利。个人觉得比修改内核难度还大。
推荐个国产OS: Sylix 详看http://hanhui03.blog.163.com/
对于OMS,阿里云OS这样已经走出一步的操作系统,下一步该怎么走会更好一些呀?想看看作者这方面的想法。因为不管怎么说,他们毕竟也走出一步了,而且也有自己的一些东西在里面,也不是完全忽悠吧。
华为已公开对外宣称要自研操作系统了,这是个非常明智之举,可能是基于现有Linux内核,但要是能和华为自研的海思芯片结合起来,先不说其兼容性、稳定性,凭借这个资格可以和供应商议价降低成本。
要注意 license 的问题. 最好避开采用GPL的开业组件. 否则将来在商业应用上是个麻烦事情.
1.非常好的科普文章,深入浅出,适合发在媒体。赞作者一个。
2.希望能看一篇类似的、针对网络设备/安全设备操作系统的分析文章,尤其是法律风险方面。
3.想求证一个问题:国内市售的几乎所有“原生”Android终端都没有GMS,据说有GMS就不准销售,其原因到底是什么?我问过很多人,答案也五花八门,但是没有一个人能保证说答案是100%正确的。
楼主谈到的OS跟传统意义上的OS(kernel部分)有很大的不一样啊,有没有更准确更专业的术语?
楼主谈到的才是OS的准确定义,光内核不能算OS
试着回答6楼:
如果有多个答案都说得通,说明多个答案综合就是原因。总结起来就是GG和天朝的恩怨,两边都填堵,两边都使劲,就有了现在大家都不爽的局面。
魏永明这个真的把自己看得太高了,讲的东东没有任何实质,都是人云亦云的,特别说马云不懂用错人之类的,难道你懂?王坚虽然不是科班出生,但是也是当然在浙大当了系主任的,微软的10年背景,难道会比你不懂技术?马云做的是刘邦,能用好萧何韩信就可以了。。。
一封情书
楼主很强
不假但也是够大够空,没什么实际意义。
os的意义在于平台,中国软件早让盗版搞垮了,没有人才os本身弄不起来。
有了os,但它存在的意义在于平台开放,老是强调自主可谁愿意和你合作,苹果系统好不好,毁就毁在封闭上被win95打败,这点任正非还是有自知之明的。
转tbsoft观点:
作为早年开发过较完整DOS GUI系统和嵌入式GUI系统的老码农,赞成作者的观点。
码农出身的创业者,往往对系统底层的实现关注非常多,炫耀自己在底层和基础实现上使用了何种何种新技术,具有如何如何好的性能,却往往忽略了如何为自己的系统创建一个完整的生态系统,至于商业环境就更谈不上了。
在公司中,很多对底层技术研究很深的码农却很难上升到高层,码农和测试以及市场人员往往还会发生激烈的冲突,都与码农缺乏软件生态系统和商业环境的整体观有很大关系。
“你做出来的东西不能只有你自己觉得好用,要别人觉得好用并愿意用!”这句话说起来容易做起来难。
不仅仅是操作系统,可用于支持用户二次开发的平台,例如GUI系统等,都存在生态系统的概念。只有生态的系统的形成,这种平台才有被用户持续应用的价值。
在早年Linux时代(2000年左右),此时Linux GUI(例如KDE、Gnome等)的华丽程度已经不亚于Windows,但其在桌面市场的占有率几乎是0。人们往往将这种现象的原因归咎于没有足够的Linux桌面应用软件支持,但究其深层原因,就是当时的linux没有形成“应用程序开发支持-实际桌面应用”的完整生态系统。
在2002年,基于虚拟机的下一代应用程序开发,例如Java、.Net/C#等的广泛应用已成定局的情况下,Linux应用程序开发还坚守着C/C++。尽管老码农对众多新兴编程语言很不服气,认为在底层开发上远远不能代替C/C++,但是基于虚拟机的软件开发克服了本机代码开发中的跨平台行、内存泄漏等诸多问题,对于大型软件开发的质量保证是非常重要的。此时的坚守还存在着开发库不成熟,IDE落后、稳定性差等一系列严重问题,可以说当时的Linux生态系统难以望及Windows之项背。
因此Linux的全面溃败就已成定居,这一结果甚至延续到了今天。直到Java、Eclipse等成熟IDE的推广普及开来,在Web服务器应用程序开发上,Linux才夺回一些占有率。
今天Android的成功,也验证了完整生态系统建立的极端重要性,其正是以完整生态系统成熟为标志。之所以Android能吸引大量Java程序员的一个重要原因就是能使用熟悉的现有Java编程语言与开发工具,且开发难度与传统Java应用相仿。
自主操作系统以及自主支持用户二次开发平台的生态系统远远比底层代码更加重要,我们没必要从轮子做起,但有必要让做出来的车傻瓜都能开,而且大家都愿意开,愿意买。
tbsoft作品简介:
嵌入式GUI(TBsoft-GUI包括试用版和文档)
TBsoft-GUI——能支持像Visual Basic一样事件驱动的嵌入式GUI
●简洁易用的全事件驱动型GUI,不是消息驱动,无需使用长长的switch-case语句。
●极好的可移植性,适应8位、16位和低档32位系统,适应各种LCD,并为MCS-51和Keil C51做了特别优化。
●以控件为中心的GUI,支持按钮、文本框、菜单、对话框……等多种控件,控件全部支持事件处理。
●增强的汉字支持,直接支持西文汉字混合显示,特别支持12×12点阵汉字,较小的LCD能显示更多的汉字。
本试用版本是可用于DOS的试用版,完全可直接用于工控机等基于x86的嵌入式系统。如果有需求,我们可以免费提供可用于MCS-51单片机(增强型)和KS0108 LCD控制器的评估版本,并提供评估板电路。
化工博士,精擅Bomb制造,可来人来函联系billy定制面谈。
呵呵,上文有点软哈。
前面的观点很好。我赞同。但是中间的关于Linux Desktop失败的原因分析,则流于人云亦云了,而后的语言之争,就没有必要了。各种编程语言,孰优孰劣,隔不久就会争论一次,吵得天翻地覆,没有一个结果。各自散去后,积聚口水,过一段时间后再吵一次。对事件的分析,没有任何助力。JAVA的推行,IBM这个大家伙是出了大力的。”.NET/C#”的广泛应用,靠的是WINDOWS这个推土机到处碾平对手达成的。无缝地跨平台开发,始终是一个幻象。基于虚拟机的开发,需要移植的是一个平台。这个工作量也是和其它平台相当的。在Android平台下开发,和在JAVA平台下开发,其实是两回事。它们相似之处就是语言语法了,这点骗了不少JAVA开发人员进来,然后大家头痛不已。内存泄漏的问题,不能只靠虚拟机和语言。现在不知道有多少人因为Android里面的垃圾回收狂转而影响性能这个问题头痛不已了。内存泄漏的问题的解决,得靠提高码农的素质,在成熟的框架下遵守一定的协议来完成。相关的编程思想,应该是跨平台的。没有机会看过WINDOWS的代码,但我相信WINDOWS大部分基础部件应该是用C/C++编写的,OFFICE软件应该也如此。Object-C不知道被多少人骂过,但不妨碍它在排行榜里不断上升。因此,今后在开发过程中,对语言的要求一定是混搭的。而我们这些码农,最终一定是要掌握混合编程的技术。到什么山头唱什么山歌,如是而已。
所以我认为,一个平台的成功,和选择什么编程语言没有什么直接关系。回过头来看看这些平台成功的过程,还是很有意思的。平台成功的基础,是好的技术。这是码农最出彩的地方。好的平台,要先有好的架构,然后是组件和中间件,然后是好的集成开发工具,层层递进。整个平台,至少后面十年还要有进化和扩展的可能。这些,在各大公司有较多积累。实现上各自有各自的精彩,没有说谁压谁一头的。如果细细琢磨,其实大家都有很多相似的思想,相似的组件。有时中间件暴露出来的接口,逻辑上都是相似的。这很有意思。经过这些年的积累,我相信国内的码农有不少人可以设计和实现类似档次的平台了。刚出来大多是很幼稚的,困难的是要熬好些年才能成熟。这点国内的老板们做不到。见过这么多的项目,还很少见到过,如果一个项目投入快一年还没有回报,老板还不急得像热锅上的蚂蚁的。而现在smartphone上面热门的三个平台,从开始投入,到看到希望,每一个都至少寂寞了5年。而后是商业模式的创立。这点要的不是聪明,要的是智慧,要的是高度。通俗的讲,就是拉拢大多数人一起做生意,再细枝末节的同伙,都可以喝到一口肉汤。这点国内的老板们还没有这个能力,还没有这个水平。再后面是商业手段,这点各个老板倒是玩得出神入化。但是没有前两者的支撑,加上爱赚块钱的习惯,现在国内要创建一个商业上成功的平台,一个生态系统,5年内是不现实的。HW的任老板是IT业界走得最远,想得最多的大人物了。看他2012的讲话,总结起来就是:继续跟随,有些弯道可以超车,海思是备胎。哈哈,有些使命还是留给首席看好的90后去愁白头吧。
BTW,我看TBsoft-GUI的广告词,少说了几个重要的功能。面向深度嵌入式领域,首要的是可靠性,进一步的是实时性,然后是对各种外设的支持情况,后面才是GUI在各种RTOS上的可移植性。在深度嵌入式领域开发,实现GUI层耗费的时间不会很多,最重要的是业务模型的理解和映射到有限状态机的实现。突出GUI模块,不是很吸引人。
to 楼上:
tbsoft-GUI只是tbsoft童鞋多年前的作品之一而已,并非用于商业化,你可以检索到的信息已经是五年前的信息。
这里引用只是像魏sir列出案例以证明tbsoft童鞋有这方面的开发经验,仅此而已。
最后我的定制是说的bomb制作,并非tbsoft-gui本身。
所以,不算软文,观点转述而已。 :)
tbsoft最近数月的工作内容为软件无线电,有兴趣了解可以在11月份莅临魔都与之近距离深体验。
预祝全球弯曲群友中秋国庆双节合家快乐!万事如意!身体健康!
深度拜读。感谢魏老师的好作品。
好作品,论述深刻
有进展吗
华为要研发OS了 首席快回去吧。