作为一名开发者,OS是最基础的东西,虽然我们平时工作的时候,会在多个OS上进行切换,不用的应用在不同的OS上开发。我个人的经验主要有过Solaris、Ubuntu和windows三种OS的开发经历。其实,当我们采用基于Java语言或者标准C++这些工业化很好的语言构建的框架来开发应用的时候,操作系统上的事情,其实我们关注的很少,因为这些语言也好、框架也要已经相当程度的屏蔽掉了OS的差异,当然C/C++上的系统调用也会有一些差别,比如线程、文件系统等,但是我们尽量使用POSIX标准定义的API,当然了,如果我们的应用软件就是针对某个特定OS,我们采用本地操作系统提供的系统API也未尝不可。
谈了这么多,好像和OS没有太大关系啊。
当然,从开发者的角度来看,确实关系不大,但是,如果我们把眼睛往上再拉一下,OS的关系就显现出来了,比如说,我们去部署一套分布式的系统,或者我们在一个私有云下分配相关的资源来部署这个事情,这样就会有很大的感受。
那么,这个感受是什么呢?比如虚拟化技术发展了也不少年了,但是其成本和复杂性往往只有相当实力的公司才具备。
为什么又扯到虚拟化呢?
因为,这是我要谈的关键点。硬件的成本现今已经非常小的,很多小的企业都有很多陈旧的机器,这些机器说实话用起来还挺有些落后,甚至很难跑起来要求稍微高一点的应用,或者说装一个操作系统就比较难了,有人会说,恩,不如扔掉吧。但是,我们想的却是如何才能把这些资源利用起来。
这,就要在OS和虚拟化的结合上来想办法了。
比如,我只是假设,有这么一套操作系统,我把所有的这些杂七杂八的烂机器组装起来形成一个网络,我在这个网络上运行那么一套操作系统,这个操作系统自动的把这个网络虚拟化为一个虚拟机,我在这个虚拟机上按需来对应用来分配资源。我们无论家庭、小公司、大公司,只需要安装一套这样的网络虚拟操作系统,就直接打造出一个私有云来了。
这样的系统多好?它本身就是一个网络操作系统,是基于网络和虚拟化的,而不是传统的基于单个机器的操作系统。
那个叫什么倪光南的院士,鼓吹要我们国家出资来打造自己的操作系统,你说我们再做一套windows有啥意义呢?还不如来做这种网络操作系统才是创新的。
进来docker和coreOS比较火,有点像这么个概念,尤其是docker的理念很牛,集装箱,软件可以随着集装箱随便分发,我们后续的应用中也会引入。coreOS有点网络的概念,但是好像也不是很成熟。
不过,看到了希望。
我们认为,操作系统的革命,还是在这个理念上面。