浅谈对操作系统的迷思

Jun 2, 2021


最近看到与IT产业没太大关系的同学转发关于操作系统相关的文章,其中难免一些护犊子的情绪,甚至上升到民族高度,没想到操作系统这个概念竟然能受到普罗大众这么多关注,在此浅谈个人对操作系统的认知和尝试解读大众对操作系统的迷思!

pandeng.1


一、操作系统是什么

操作系统是什么,这个问题,其实很难回答清楚,不仅对专业人员,对普罗大众应该更是如此。

1.为什么“操作系统是什么”这么难

A.操作系统相对专业的定义

摘自比较专业的wiki对操作系统的定义,操作系统(operation system,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也往往提供一个让用户与系统交互的操作界面。


B.操作系统的模糊认知

初看起来,操作系统OS无非就是一组管理计算机硬件与软件资源的程序。我们普通大众日常生活每天都见到这样的程序和操作系统OS,从手机到电视机、机顶盒、智能音箱、公交车、地铁、飞机、广告牌、游戏机等等,没错,操作系统OS随着IT产业的普及,走进普通大众的日常生活;

不过相对对操作系统的专业说法,对普通大众来讲,应该是不会去区分系统和操作系统的区别,比如苹果手机往往对应苹果系统,小米手机对应小米系统,OPPO手机对应OPPO系统,不会去关心iOS操作系统与Android操作系统内在的区别,往往在乎的是总体印象和体验,毕竟用户要的是一个可用的计算设备及其上面可用的程序而已;


C.操作系统技术与商业化

对于了解过计算机历史和IT产业相关技术发展的朋友来讲,应该听说过各种各样的操作系统,包括Unix、OS/2、Mac、Windows98、Win7、Win10、Android、iOS、Ubuntu、ChromeOS、Linux等等,大家发现操作系统这玩意儿,很特别,非常容易产生技术上的垄断,商业上的排它性,有上下游的概念,甚至所谓的生态,硬件的,软件的合作伙伴,开发者生态等等,让操作系统从原来专业性名词,摇生一变,转身为技术、商业生态代名词;


D.操作系统内核的出现

毕竟技术只是基础,商业才是根本,特别是对商人来讲,对拥有技术优势的厂商,通过垄断技术和商业生态获取优势利润,再加上技术和商业生态非常难以分离,在这种形式下,操作系统本身专业性可以说是受到商业的挟持,普通大众没有太多选择,哪有没有更好的选择呢;

于是从专业操作系统中逐步分离出操作系统内核的概念,比如:WinNT、Linux,特别是Linux内核,它只负责管理计算机硬件和软件资源的核心部分,其他应用软件生态比如音视频、图形、网络服务等由其他项目来实现,并且由开源社区模式来驱动实现,并使用比较严格的源代码分享协议GPL,以确保其不受商业干扰而壮大;


E.开源内核Linux的壮大

到如今Linux内核已发展30个年头,从零开始,先逐步占领网络服务应用,然后延伸出多种桌面发行版操作系统Ubuntu、OpenSuse,还有后来基于手机的Android操作系统,Linux内核以开源社区的形式发展壮大起来,让曾经的敌人微软也加入其生态,Linux内核社区还在持续的活跃开发中,代码量在2000万行以上C代码,还有部分支持者正尝试使用新的系统语言Rust来开发部分内核模块,足见它的社区繁荣;

到了这里,对很多人来讲,往往分不清操作系统与操作系统内核的区别,因为一个操作系统或系统往往都会自带一个内核;


F.操作系统的泛化

随着IT应用场景的多样化包括万物互联、提供云上计算和服务等,一些商业化公司,在传统Linux发行版上,加上一些云计算或物联网应用服务,延伸出云上商业操作系统,在它上面可以发布多种多样的数据库服务、中间件服务、Web服务等,但本身基本上还是建立在Linux内核之上;

另外随着云原生技术的发展,它着重于解决大量机器集合在一起提供服务遇到的问题,发展出的系统简称为集群操作系统,主要以K8s为主,它的生态由以开源组织CNCF来推动;

到这时,操作系统就像“一千个人心中有一千个哈姆雷特”一样,可从不同层面去认知、解读、应用它;

特别是商业化的公司,因为它可将操作系统当成建立或破除垄断的工具或广告,甚至到了国家层面,想以此建立护城池;


2.操作系统更象是一门哲学

A.操作系统的协作哲学

根据上面简要的介绍,还有历史上不同操作系统之间的竞争与演进,其实操作系统更象是代表一种哲学,一种协作方式;

因为它其出生的要义是管理计算机硬件与软件资源的计算机程序,计算机硬件和软件在已知的百年不到的历史中,已经发生了翻天覆地的变化,如何去管理它们?谁去管理它们,这个重任是交给了“操作系统和其内核”;

不知大家有没有想过,特斯拉太空飞船和火星机器人使用的也是Linux操作系统,为什么,他们不去使用或实现自己定义的操作系统?


B.操作系统的核心特性

其实要管理好这些硬件和软件,成功的操作系统有其独特的必不可少的特性:

  • 抽象与隔离

对下有硬件抽象层接口HAL,可以适配和支持不同的硬件;

对上有应用程序/文件/网络/图形等抽象接口,可以支持不同应用生态;

  • 开放与兼容 开放的是各种抽象接口,对未知的新的硬件以协作方式形成接口;

兼容的是各种新的设备和其驱动,可兼容并运行各种各样的应用;

试想如果一个操作系统,它不能做到抽象与隔离、开放与兼容能算一个成熟可靠的操作系统吗?


C.操作系统与商业协作形式不一

其与商业应该是两个不同层面的事物,两者可以结合非常好,就像苹果手机和iOS操作系统;

商业的形式可以有多种多样,但对成功操作系统来讲上述特性必不可少,就像iOS的开放与兼容,在于它的AppStore和UIKit;它的抽象与隔离在于其内部的图形图像、动画、Audio、视频、Camera等等;

Android的开放在于其开源社区和手机厂商协作,还有应用框架及服务管理的兼容等等;


二、做操作系统难吗

市面上出现有一种“做操作系统不难,难的是构建生态”说法,初看起来似乎有道理,但细想起来,觉得是缺少合理及实践参考意义的;

1.为什么“做操作系统”这么难

A.iOS的诞生

较远的例子就不讲了,好比IBM、HP等80年代前的操作系统之争,就拿苹果iOS操作系统来讲,大家应该都知道它是经历过很多次的演进与迭代而来,最早可追溯到80年代,特别是其图形图像部分,还有其触摸技术、嵌入式GPU、AppStore应用市场诞生了iPhone的流行,这些技术和实现在当时都是前无古人的创新和突破,大家说说看难嘛?


B.Vista失利

更早一点,大家可能听说过微软为了重构和迭代Windows Vista系统,竟然花了5000名工程师三年时间,最终没有达到预期,该产品系列以失败为终;也许大家认为它不难,不是做出来吗?是的,它做出来啦,但没人用或者大家都吐槽它不好,它做出来又有何用?


C.国内操作系统玩家

因为我们期望新做的系统能更好,而不是更差,否则没有新做的必要,除非仅仅为了研究和试验,毕竟当前已知的可用操作系统不少于10款;

另外就前几年国内做手机移动操作系统的公司,耗资一个亿到几十亿的都有,成功者寥寥,甚至很多项目以骗子结尾;

  • 为什么要骗?

其一、这个确实难,难以做出跟以前不一样的东西或有价值的东西;

其二、被骗者不知道这里的水有多深,就当摸石头过河,或者被骗者装着没看见;


2.“做操作系统”就是“做生态”

A.操作系统与其生态的关系

做操作系统,不象写一个普通的计算机程序,它的本身就是要管理计算机硬件和软件的,它要管理的硬件和软件,就是它的上下游,作为它的生态,只有生态有了生存与发展机会,它自身才能得以生存与发展;

从逻辑推理角度来讲,操作系统和操作系统的生态,是不可分割的,试想没有这个操作系统本身,何来其生态呢?除非这个生态是借来的。


B.鸡生蛋蛋生鸡问题

哪做一个操作系统,而没有它的生态,它还算操作系统嘛?应该也算,只是它没有用,它自身没有设计和实现好,没法提供有效接口让上下游来使用,长期来讲,不算一个成熟的操作系统,没有生态迟早会夭折;

打个比方:大家都知道,鸡能生鸡蛋,你说造一只鸡不难,难就难在鸡生的蛋!没有鸡,会有鸡蛋嘛,常识来讲没有可能!

除非鸡不是那个鸡,鸡蛋不是那个鸡蛋!也许这就是很多人想造鸡或鸡蛋的原因,但只有弄清楚其中的关系,才有可能造出不一样的鸡和鸡蛋;


C.操作系统为谁而生,生而为谁

这么说来,做操作系统,其实就是做它的生态,为它的生态服务,为它本身致力于要解决的问题和生态而服务;

一个新的成熟的操作系统,只有在新的需求及生态中才可能成长出来,没有这样新的需求和生态,何必还要去做新的操作系统呢?


3.“做操作系统”兼容“其他生态”可行性

A.可兼容接口,兼容不了其他应用生态

根据前面分析,一个成熟的操作系统一般有抽象与隔离、开放与兼容的能力,我们再弄一个操作系统来兼容它的应用生态,可行嘛?

兼容应用接口,技术上完全没问题,就像Linux兼容Posix接口<它来自Unix定义>,但你兼容不了它的应用生态,应用生态是需要时间、资本投入才形成的;

试想如果你的新操作系统,只能兼容原来操作系统那些接口及应用,没有更新的,更有优势的接口及应用模式,人家为啥要切换到新操作系统中来;


B.为了兼容而兼容,自我在哪里

如果你的应用生态与旧的应用生态都一样,还算新的操作系统嘛,最多算一个分支或变种,如果旧的操作系统还在持续的发展,你还能发展下去吗?

从这个角度来讲,通过兼容其他应用生态,不能发展出自己的应用生态,来发展自身操作系统,应该是个伪命题,现实世界还没有成功案例;


三、哪还要做操作系统嘛,如何做为好

既然操作系统,这么难做,还不能兼容其他应用生态,哪还有做的必要嘛,如何做为好?

1.不是每个企业或个人有能力来做操作系统

A.做好操作系统的核心在于其开发人员

首先声明这不是在贬低大家水平,特别是对企业来讲,招不招得到这样的人才,其实是最为核心的问题;

操作系统作为基础,其运行的有效代码是需要经过千锤百炼的,没有能写出这样代码的员工,能做出好的操作系统吗?

其代价可能不仅仅在于时间和金钱,更在于建立信心和有效的协作组织,也许有人说没有这样的员工,我们可以培养,我们有大量的大学毕业生,此言差也;


B.何为合格操作系统开发人员

只有试过才知道,有时作为管理者都没有写出优秀操作系统代码的能力,你能指望他培养出优秀的士兵或将军嘛?

  • 唯一方法: 脚踏实地的从头培养,从早训练,从无数次的Crash中积累经验,对开发人员来讲有时非常难,乃至无奈,压力非常大,需要强大的支持;

就拿Linux内核社区来讲,他们是齐集了开放协作、自由无私的精神才有如此的成功;前一段时间,社区中还有人在抱怨愿意参与社区的人太少。。。。


2.不做操作系统一样可以服务大众

A.不做操作系统一样可高尚的服务大众

也许有些人会说不做操作系统,格局低,水平差,真是这样吗?其实对操作系统本身来讲,它是一个基础,它是一个哲学,一种协作的方式,对它的要求也不一样,包括透明、公平,能采纳不同意见等等;


B.国外国内基础系统都一样值得信赖

打个不恰当比方:难道人家发明了佛教、基督教,大家用它来丰富自己的生活甚至基于它赚到很多钱,我们的道教朋友,会说他们格局低,水平差,不爱国吗?


C.应用生态可比肩操作系统本身

现实中没有做操作系统的腾信和Facebook,一样可以在Android操作、iOS操作系统中发展出自己的应用生态,服务于大众,它的价值与底层操作系统一样的大,要说数据安全,上层应用其实危害更大,随意采集交互数据、点击数据,有的简直到了触目惊心的地步,无任何隐私意识;

而操作系统层面,绝大部分接口都是公开的,一旦违规,更容易发现,特别是对开源的项目,因为它们从立项开始,不是为了商业,商业只是它的附属延伸物;

试想如果Linux内核或Chrome浏览器、Firefox浏览器,想拦截个人数据,是不是轻而易举,但它们会嘛?哪怕有,至少被发现,公开了,肯定会得到正向反馈;


D.操作系统与其生态是共生协作

做操作系统和上下游硬件或软件,其实只是协作分工的不同,没有优劣之说,虽然有分成收益的不同,这是非常正常的商业及技术投入现象,操作系统实现难度大,投入大,周期长,风险收益自然会高一些;而硬件或软件,船小好掉头,还可分散投入,兼容不同操作系统,真可谓好处多多;


3.夯实基础,发掘新需求

A.有志于做操作系统者

现在的技术氛围和基础,与10年前,5年前大有不同,可利用的资源非常多,但难度更大,因为真正成功的新操作系统开发者,需要自己回答自己做的部分真的算创新嘛,其他操作系统真的不能做嘛,有没有只是重复造轮子?

只有这样,一个组织或社区的参加人员形成有效合力,才可能打造出成功的操作系统;


B.硬件或软件应用生态开发者

作为生态开发者,发掘新的应用场景或商业场景,抽象出其交互及应用逻辑更为重要,即使现在没有合适的操作系统来协作完成;

但可以向操作系统厂商提需求,一起协作解决,这样才能创新发展生存下来,其中最典型的例子应该是智能汽车和物联网的创新应用等;


C.非IT产业的用户

对用户来讲,其实区分操作系统和应用生态没那么重要,也没必要妄自菲薄,觉得哪个设备及其应用好用,用就可以啦;

不管是做硬件的,还是做操作系统的,还是做应用软件的,都一样值得信赖;

他们是一起利用了IT信息技术相互竞争合作,才做出个设备或应用或网站来为用户服务的,不会只有一家独大;

他们都是为服务好你而忙碌着,而你其实缺了他们中任何一方是不够的;


D.民族大义和有志于此事业者

期望其中能有大人物出现,特别是真正的务实敦行者,认知其中的艰难险阻,带领有志青年前行,不务虚,唯务实,不畏浮云遮望眼,以守得一方阵地,冲出一片天空;


4.好消息不断,值得期待

A.国产开源数据库获得突围

当前IT技术包括云原生技术发展的如火如荼,作为计算机三大基础软件之一,国内开源数据库比如:TiDB、OceanBase等靠实力向大家证明其可行性及优势,非常值得学习与借鉴;


B.Rust语言在操作系统领域或大有作为

但国内操作系统、编译器领域,一直不温不火,时有消息,也是一片争议,但愿不要继续象国内足球一样,夹杂着商业和技术,还有各种各样的行政管理框框和低效的尝试,一时半会儿,总是期望越大失望越大;

但作为Rust爱好者,不断看到Rust语言有尝试应用到Android操作系统和Linux内核、还有Fuchsia操作系统等消息,其或许对尝试在操作系统、编译器领域有所突围者,会有所启发;

试想还折腾着兼容那些20多年前设计的语言及生态,而使用新的系统语言及生态去设计和实现面向未来的万物互联操作系统,进而共同成长,谁会更有竞争力,更能得到大众认可;

pandeng.2