Jack:什么是操作系统?
我:你买了一台笔记本,然后把整块硬盘彻底格式化,然后再自己编译出一块代码,这块代码能让这台笔记本具备任务(task)管理或者文件管理功能、或者两者兼而有之——这段代码就是操作系统了。
Jack:这种解释比较妖孽啊。
我:你可以认为我的说法比较妖孽,不过这是我自己的说法,是我的。这比只会背书、没有自己的想法要好。你可以犯错,每个人都会犯错,但是不能一直被意淫。
Jack:那,从你的角度来说,Linux内核的发展是什么样子的呢?未来它会怎么走呢?
我:这是一个非常难回答的问题。因为Linux的文化是自由(free),它并不像OpenBSD那样专注于安全,也不想netBSD那样专注于网络,Linux是自由的,只要你有idea并实现它,Linus就会考虑是否把它加入内核包里,即便Linus不容易把它加入官方内核包,你也可以自由发布出去。所以,功能性预测几乎是不可能做出来的,不过,在大方向上,可以泛泛而谈。
Jack:你泛泛地谈一下呢。
我:首先,不言而喻的,它会对既存在的功能进行维护(maintain)和加固(enhancement)。举个例子,Linux的文件系统ext3到ext4的enhancement大概增加了13种功能,其中extent的功能基本上是从Oracle的extent里借鉴过来的。这样的事情还会不断发生,直到有人宣布Linux内核项目不再继续(?)。其次,IEEE这样的权威机构每年都在制定新的标准、规程,自然而然会有新的代码产生(无论是驱动层次还是协议层次),这样的代码自然而然会添加到以自由著称的Linux内核里。
Jack:你说的这些都不是本质的操作系统的核心。在本质的操作系统的核心上,会有哪些发展空间呢?
我:你说的本质的操作系统核心是指任务管理、文件系统?
Jack:是的。
我:在任务管理、文件系统这两块,只能做maintain、enhancement。因为这是Linux操作系统的根本、基石,15年前就已经奠基好了,不可能再有什么大的创新和改动——除非操作系统理论上有巨大的理论革命。不过,即便是有巨大的操作系统理论革命,也几乎不可能有什么改动了。
Jack:为什么?
我:因为任务和文件系统是操作系统的根基,这两块一出现革命,上层的数据库、web server等都会出现相应的革命,整个IT行业既定利益格局将会打破、洗牌重来。
Jack:这不是挺好吗?也是技术革命的最好结果。
我:理想是美好的,不过,既得利益体不会允许洗牌重来的事情发生,简单的说,即便有这么完美的理论出现,也不会有资金投入将这理论付诸现实,更别说实现出来的代码能否大面积应用到生产中占领市场。典型的例子是——互联网的OSI七层模型与tcp/ip模型。前者在理论上更完美,不过,这么多年来基本只停留在意淫阶段,而后者则真正占据了市场,成为了事实标准。
Jack:按照你的意思,Linux内核其实已经相对是比较饱和了,不会再有巨大的突破了吗?
我:是否会有巨大的突破,是个技术层面的问题。而是否朝巨大的突破方向走,是个利益问题。从目前情况来看,Linux内核在服务器市场上的功能性组件已经够用了,仅仅是稳定性、高端市场份额与AIX等还有些差距。假设内核开发人员开发出一些核心组件功能,而这些功能又能给企业带来哪些巨大的利益呢?如果没有巨大的利益,这些功能就是多余的,你觉得内核开发人员会去做一些多余的事情吗?
Jack:额。
我:在嵌入式领域,专业的嵌入式操作系统已经够多了,如vxworks、uclinux等,其功能也已经够用了,缺乏的,只是针对具体的应用的项目流程管理而已。
Jack:那岂不是Linux内核研发能做的事情已经很少很少了。
我:相比于20年前,内核研发做的事情是少很多了——每一个行业都是这样,发展了20年之后,能做的事情肯定比刚开始要少很多——在天朝尤其如此。不过,操作系统、数据库内核等是基础软件,每个国家为了巩固基础,都会投入巨大的资金,我国的核高基投入大概在1000亿rmb左右。
Jack:那么,搞基础软件岂不是很挣钱?
我:如果你有能力搞操作系统内核、数据库内核等基础软件,这辈子都不用愁吃穿了,国家会养着你的。