陈榕:操作系统开发过程中遇到的困难及解决方法

【中云网 消息】5月29日,以大力发展并推动北京科技原创能力为宗旨的“2013中国·北京(国际)开源大会”在北京新世纪日航酒店隆重开幕。本次大会由北京市经信委指导,中国软件行业协会主办,中云网承办,并得到了中国云产业联盟、中关村云计算产业联盟、天云趋势等单位的大力支持。大会以“开源中国  原创北京”为主题,通过丰富前瞻性的思想盛宴,力争让北京在世界科技发展新趋势下占据主动地位。

开源大会 陈榕 中云网

上海科泰华捷科技有限公司董事长陈榕 【中云网 配图】

上海科泰华捷科技有限公司董事长陈榕参与此次会议,并做主题演讲。他分享了他们公司做操作系统的历程,重点分析了在开发过程中遇到的困难及解决方案。

以下是陈榕的演讲全稿:

我2000年回到北京做了一个公司,这个公司只有一个目标,就是做一个操作系统。在座的很多人在讲openstack,我讲讲我对这幅图的理解。我2000年回来创业,走过一些弯路。姜处长给过我们一些支持。我们做过两支完整的手机,做过一一款电子书。从内心、操作系统,全部是我们在中国一行一行代码写出来的。07年底、08年初很快碰到了安卓和IOS。所以我们当时的销售并不理想。这一款产品是我们最新的一个操作系统的界面。这个代码去年11月开源,我们公司投入了50个人全职做这个事。做完的代码全部放到了公开的网站上。社区上有五六十个人,因为他们看我的微博,他们去那儿看,你们真有源代码吗?可是那些人还没有真的投入到开发过程中。我也希望通过今天的推广,大家看到这个界面,前半年真的没有什么界面。让外人来参加也很难。但是现在我们还是希望对一些老师和同学起一些启迪的作用。

这个操作系统,宏观一点讲,刚才那个界面我们基本能做到把安卓的系统跑起来。我原来曾经写过我自己设置的内核。有机会对内核有希望讨论的人,我希望分享一些教训。既然安卓的可以跑起来,下面还是UINX,那你做的这个有什么用?你跟安卓怎么比?如果大家想,我这个手里拿着一个安卓手机。安卓也好,IOS也好,现在都只做一支机器。这支机器一旦定,它的屏幕大小、CPU型号、内存跟着设计这支硬件、这支机器已经全部都定好了。如果我给大家出几个题目,同样希望大家跑安卓,我在旁边加一个分离的硬件。现在微软、IOS都有一些蓝牙键盘。或者WIFI摄象头。分离软件,也有一些人会说我们现在有物联网。在一个SERVRE边上布了很多传感器。电影院在这儿,家里还有两个电脑,想形成这样一个系统。如果我们用安卓的JAVR系统来做。你为了写这个摄象头,这儿JAVA就要继承,你那儿写一个ME。问题是如果我是一个分离软件,我是一个分离的蓝牙键盘,或者是一个分离的WIFI摄象头。这个分离元件里面会跑一个TCG。它连MMU都没有。

这个时候我怎么样从JAVA继承呢?如果我要想做一个我们认为,作为学术来讲我不希望有这个词,它就是一个双耦合的分离系统。这么多的CPU看成是一个系统。我们把它叫做云,我们认为这是一个家庭云,云这个概念其实不好。但是在大忽悠的社会环境下,我们还是把这个东西叫家庭云。现在很多人讲的云是在服务器端。这个时候我们把一些云的技术拉入到创意端。这个家庭是多CPU,而且是双耦合的。这个CPU可能跟那个CPU不一样。这是一个双耦合异构系统。第二维中间,如果说我有一个云作为一台计算机的话,上面有没有可能跑多个虚拟机呢?曾经十年前,大家一个PC就跑一个操作系统。互相排他。所以很快形成了一个正反对。让微软达到了95%的市场占有率。当时苹果的市场占有率是2%、3%。LINUX市场占有率也是非常小的。

这个时候有人说,我们能不能做一个手机核?我们能不能打进PC市场?这个时候的匹夫之勇现在想来是没有什么用的。这是一个新的变化。我们能在一架物理电脑上跑出N个虚拟机。如果是为了项目兼容,我可以在虚拟机里面再跑windows。但是我为了创新,我能不能做一个比较创新型的OS?这就会给OS的创新带来一个新的机会。我们操作系统的研发,我85年开始做UINX的内核,可是到今天为止,我认为OS最后的创新力。今天大家很少有人在讨论操作系统如何创新了。

操作系统我讲的是两个方面,一个是对硬件的图象,讲的是内核。比如说抽线程内核。当时有一个点A文件,ESC,后来又出来了SO。操作系统的第一方向是抽象硬件。第二个更重要的目标是怎么运行软件。比如说现在我们看到MIGO,看到安卓,看见火狐软件,所有这些我们大家公认的,有人说这些OS各有各的不同。不管你是在这两个阵营里持哪个态度。上面的这个演化现在是层出不穷。底下的内核基本稳定。这个结论还是公平公正的。如果上面要做一些新的创新。我拿一支很强的手机,比如两核、四核。我上面拿一个手机拨号就可以拨给倪老师,他打电话就可以打给我。这两个手机通过一个虚拟的网络空间,这个手机很快可以找到他的手机,很快形成分布式处理,或者是协同的外部服务。我们两支手机是没有办法攻击中移动、中电信网络的。这两支手机不知道它底下或者周边有多少DNS地址,如果上面的虚拟机都知道DNS地址,大家现在的网络安全是岌岌可危的。如果任何机器,任何一个360装过的肉机都可以向一个网站瞬间发起一个DDS的攻击,这个网络绝对是不堪一击。可是如果帐户的虚拟机根本就没有DNS地址,只要通过一个手机号就可以找到另外一个计算机。这样的做法是没有办法攻击网络的。

在这台虚拟机的基础上,我们是有创新的余地的。第三维空间,就是大家认为现在的S3、云盘,或者个人云、公共云,不管怎么样,存储被拉到了另一维空间上去了。本地的硬盘变成一个缓存。程序能跑起来。曾经我们上学的时候,我上大学的时候还没有DOC。后来我去美国才有DOC。我们现在有一个cloud,比如说叫微软的SKYDRIVE,或者苹果的icloud,现在这个icloud我们都放的DATA。这个云盘里能放程序吗?这个云盘里如果放程序能跑吗?我们能不能做出一个cloud。这一维空间,多个CPU、多个虚拟的空间,这三个空间都是安卓现在还起码比较弱的地方。在这三个空间上如果补足,上面还跑安卓。不限定一个FREMOR,还可以访问其他的FREMOR。

这是云盘的空间。这是讲的一个家庭云上多PCU,或者物联网上多PCU的空间。这是讲的云盘里的空间。没有划出来是多虚拟机的空间。这张图是我从微软的网站抄的,这就是win8的架构图。大家今天如果看到win8。就会知道它有两个桌面,一个是传统的Desktop,一个是Motro  style。现在它把一个内核又可以做手机,又可以做服务,曾经是好多个内核,所以微软虽然是游戏机内核。它统一完了以后再上面跑了一个双簧蛋,在上面跑了两个操作系统。如果上面跑了两个所谓的中间件或者什么东西呢?它实际上是两个。这一部分就是传达微软器C++,他对兼容做的相对完美。这一唯绿的,他现在叫windows  win3  2。所以winRT现在只做两件事,它的平板、它的变成的CRT叫winRT。对软件支持是这儿,或者是这儿负责的。

这个风格是windows变成还是新的RT编程,这两个编程是截然不同。我们今天很多人讲OS都是讲的在这个层面的技术的改良。在这个地方API从这儿到这儿,基本上就是把那个全废了。这个RT有什么用?就是为了在那个三维空间上进行拓展。然后能让三类语言互通互联。在这个时候如果我们用技术语言说,这儿就应该叫java,java有一个东西叫CNI,通过人写,压站调到C代码。在这个时候,已经没有JNI了,它可以直接从.net调到C代码,是不通过CNI的,这句话是非常重要的。JAVA从发明到今天,第一句口号就是,run >