「路漫漫其修远兮,吾将上下而求索。」操作系统这条路没有捷径可言,这在 PC、移动互联网时代便是如此,在当下随着自动驾驶、工业互联网等智能场景的出现,操作系统成为底层计算力实现的支撑时更是如此。
去年,当我们探寻国产操作系统生存之路与发展之道时,来自鸿蒙、麒麟、阿里、指令集、飞漫、RT-Thread、OpenEuler、翼辉、Deepin 九大操作系统代表们齐聚一堂,在思辨中总结过去、挑战现在、展望未来。对于过去国产操作系统发展滞后的主要原因,九大掌门人一致认为,1980 年到 2000 年期间,业界更多的是将操作系统当作一种纯科研项目来看待与理解,从而导致基础软件行业缺失了近 20 年可以通过贩卖挣钱的商业化机会。毋庸置疑,仅是科研项目并不足以支撑整个产业、教育的向前演进,那么,如今在更多操作系统应用场景不断涌现的浪潮下,我们究竟该怎么做?
在 2021 长沙·中国 1024 程序员节的技术英雄会上,在清华大学长聘副教授陈渝和国防科技大学计算机学院国产基础软件工程研究中心主任、研究员谭郁松的主持下,理想汽车副总裁、算力与 OS 部门总负责人许迎春,指令集创始人兼 CEO 潘爱民,翼辉信息董事长、SylixOS 嵌入式操作系统创始人韩辉,OpenEuler 总架构师、OpenEuler 社区技术委员会委员熊伟,百度主任架构师王柏生,字节跳动操作系统团队负责人佘开锐六位专家围绕汽车、智慧楼宇、工业互联网等领域的操作系统构建,展开一场线上线下的联动对话,六问操作系统新时代。
以下为对话全文:
操作系统新时代,新在哪里?
陈渝:通过去年的对话,我们熟知,经过近 20 年的发展,国内早期操作系统的研究大量地集中在科研领域,对产业重视不够,使得操作系统丧失了一些发展机会。现在,我们看到除了操作系统研究外,还有新的技术领域出现,那么这些新的领域将会对操作系统带来一些什么样的变化?
熊伟:正如陈渝老师所说,过去 20 年间,操作系统在国内讨论虽然较多,但实际上产业链并没有建立起来。其中,这个产业链除了自身链条不完善外,商业上的牵引也比较少。
通过近几年的发展,我认为操作系统最重大的变化在于商业上。时下,操作系统从业务到操作、到硬件,国内开始逐渐呈现完整的产业链。通过该产业链,整个商业逻辑也开始建立。在变化牵引下,站在行业角度来看,业界对操作系统的认知也越来越清晰,此前很多人会认为操作系统等于 Linux,继而在 Linux 内核中实现一些驱动或小部件后,就自以为对操作系统有了足够了解,并可以由此形成商业逻辑。
实际上经过多年的发展,大家慢慢了解到操作系统是一个平台性的系统。该平台系统有一个作用,即在它的基础之上可以再进行商业变现。正因此,操作系统也从过去相对狭窄的定义,现在变得丰富,这是我认为最重要的一点。
潘爱民:我认为操作系统从概念上或者从定义上,其实是在不断地升级。比较典型的例子是,在 10 年前,很多人争论 Android 不是一个操作系统,因为 Android 是基于 Linux 内核的,而 Android 只是在 Linux 上面做了很多中间件的整合,但是很快这些质疑声就消失不见了,这也是业界开始认可操作系统的开端。
从纯技术的角度而言,操作系统的定义其实是从下往上的。十年后的今天,我认为现在整个计算环境发生了很大的变化,以前我们看到的都是一些物理的设备如 CPU、GPU 等,时下很多环境已经变成了一些场景,包括汽车、机器人,以及各种物联网场景,因为操作系统底下就是一个计算环境。
10 年前,我们所看到操作系统已经不再局限于内核,开始走向我称之为的 runtime。近几年操作系统的定义升华成为一个连接,这也与万物互联时代相契合。操作系统面对的环境在发生变化,它的定义也在变,但是操作系统根本性的理念并没有变,这一点可以从软硬件资源、硬件与软件的解耦过程中可以看出。
传统操作系统为什么无法适用于当下?
谭郁松:的确,潘爱民老师所讲的我们也深有感受。作为比较传统的操作系统学术派,从个人角度来看,操作系统在不同的发展过程中基本概念、基本的功能并没有本质的变化,但是在新的环境下,以连接为基础的场景一直处于迭代更新之中,譬如软件定义一切、汽车与工业互联网智能化等等。但是,这也让我们不禁好奇,传统的概念、操作系统为什么不能满足新的场景?
韩辉:虽然近几年来操作系统迎来一个大发展,特别是国产操作系统,但整个行业中创新乏力、低水平的造轮子也非常多,而我们对一个场景的理解,包括操作系统本身的创新则非常少。举例说明,Linux 的发行版高达 300 多种,而这仅仅是它们的一部分,如果你喜欢用 Linux,一年可以无重复地使用各种 Linux 发行版,用完之后会发现,大多数的发行版本太过相同,或仅是操作习惯有所不同罢了。
事实上,在不同时代的主流操作系统无论是从操作体验来看,还是对于新场景的认知,都颠覆了以往的操作系统。也许上述所提及的新场景一直存在,但是它给予一种新的方法让你去理解,让更多生态上的开发伙伴可以更快、更简单的参与到这个场景。
遗憾的是,现在的很多操作系统并没有做到这一点。也许有人会说某操作系统在某个新场景上能用,但现实来看,使用的人数十分有限,这意味着可能原来的技术不太适合这个场景的发展,也有可能是商业模式不友好,其他厂家很难参与,或者参与进来也无法产生经济效益,因此这些成为制约场景操作系统发展的关键。由此,我认为一个新的操作系统与一个新的场景,可能需要从很多方面去考虑,不光是技术创新。
熊伟:我觉得创新还是要有需求的支撑,如果没有需求,创新会很难形成商业闭环,甚至不存在创新。
许迎春:从理想汽车的角度来看,早年的操作系统更多的是在计算机上面,但是在车载操作系统中,智能汽车里面有不同的领域需求,如车控,尤其对硬实时性的要求非常高,亦或是在智能驾驶上要适配不同的 NPU 或者 GPU,因此这些需求对管理和良好的生态提出了一定的要求。
类似于市场对 Android 系统的需求,车载中也存在三种不同形态的操作系统:一种是为了处理交互,一种是为了处理自动驾驶,还有一种是为了处理实时的车控。
从我们角度而言,理想是能够做一个通用的操作系统,能够可裁剪,同时满足实时,还有一个很大的方面就是安全。因为在 PC 上,重启 PC 不是大问题,手机重启也不是大问题,但是在车中倘若操作系统出了问题可能会有生命安全,所以这类的操作系统必须要强调高安全。
谭郁松:这恰恰也是呼应了我们现有的操作系统在汽车驾驶方面还是有一些传统操作系统概念所不能满足的需求,以及对它提出新的挑战。
许迎春 :在汽车领域,最理想的状态,能够把 Linux 裁剪成具有高安全、高实时的系统,如今 Linux 生态已经发展得非常好,目前也有很多公司在朝着这个方向努力,但是做一个开源系统,想要通过一些认证的话确实很难。截止目前,还没有任何一个现有的系统能同时满足三个方面的需求。
王柏生:当前其实大部分用户主要接触的都是桌面操作系统,而桌面操作系统搭配一些好的办公软件,足以让用户有一种良好的体验。不过,汽车操作系统与桌面操作系统存在很大差异,前者要求吞吐量非常高,但是交互可以不用特别地好。更主要的是通过一些前沿服务,可以帮助客户端的请求能够快速的处理完。这也是在不同领域,对于操作系统的要求与理解不一样之处。
譬如传统的操作系统需要有很好的管理、协调能力,用户可以按照需求来创建应用程序、有中断的时候能够快速处理即可。但新时代的操作系统,从纵向角度来看,我们需要更好地去支持智能问题。另外,当下的自动驾驶需要满足的算力很高,也需要支持深度学习算法、车载、车控。
对于操作系统而言,它不仅需要实现如何在不同的应用中很好地进行融合、通信,也需要处理与云端、边缘、车与车、车与人之间的种种情况。对于一个应用而言,如果要和车、云之间进行服务,那么每一款 App 中需要有很多的功能,这也要求开发者必学要知道其中的算法、了解底层的工程,这个要求和挑战都是很高的。
操作系统新时代的机遇与挑战
陈渝:在新技术背景下做操作系统需要考虑更多的内容,如云端、云原生、工业制造,包括汽车等带来的改变,那么,在这其中究竟面临哪些机遇和挑战?
佘开锐:字节跳动做操作系统的时间并不短,如今字节跳动内部操作系统的体量也相当庞大。一直以来,我们也在思考从系统底层如何对硬件资源进行更高效的管理,将新硬件的一些特性都发挥到极致。因此,自体量上来之后,我们从最简单的层面把新的硬件的特性应用了起来,进行降本增效。当然其中也遇到了很多挑战,其一就是创新。这些创新需要满足现实场景的需求,字节跳动的内部因此做了很多相应的模型,如在高密场景下,从单机维度,或者从集群维度思考如何把一些瓶颈做更精确的度量。
当前,我们服务器操作上主要基于 Linux 生态,因为该生态已经具备很多完整的解决方案。不过,在新时代的一些特有场景中,这些方案并不完善或很难精确地把这些热点和新的瓶颈给迸发出来。这也成为我们近几年面临的主要挑战,即如何理解用户真实的需求。
操作系统本身可以实现很多事情,包括热点的分析、单机集群的工具以及很多增强功能,包括应用性。其实从应用开发者角度来看,他们通常对底层系统技术的大致的原理是比较清楚的,但具体的实现路径就不是那么清楚,或者不太关注。所以他们非常难把关于操作系统的需求能够理解的特别清楚。
对此,我们采取一些手段,通过把现有的工具做一些扩展,能够让应用开发更方便,以一种应用的方式用起来。由此,从应用开发的视角观察到系统侧的需求,再从系统开发的角度了解真正的需求,最终综合出一个相对更加贴近实际的需求。
潘爱民:上述佘开锐老师提到了需求,需求很多都是应用层面,但事实上,能提应用需求的人并不一定会提操作系统的需求,正如对方不会告知我要一个什么样的操作系统,因为他要的只是应用。
这一点我在最近三年时间中体会比较深。应用在上层,而操作系统在最底层,上下层中间有一个很大的概括,不仅仅包含一个中间件,还隔了很多跨行业、跨技术和跨学科的内容。
通过以上,可以总结新时代的操作系统首先底层需要实现技术共性,如云原生、连接能力等。另外还需要行业共性的操作系统,因为只有通过行业共性操作系统,我们与客户需求就非常接近了,包括使用的语言、衡量指标、设备、环境等。这其中,技术共性操作系统是可定义的,也是实时的。
「操作系统技术本身不难,难的是生态」,是谬论还是事实?
谭郁松:在行业里,时常有人提及操作系统很难、技术很重要,但也有人说操作系统技术本身不难,难的是生态,对于这样的观点,大家有什么样的看法?
佘开锐:其实我认为技术和生态都挺难,但是从技术层面来看,再难我们也总能找到一个解决的方案。
以字节跳动内部为例,因为我们的服务器操作基于 Linux 生态,但 Linux 生态其实很复杂,不过业界针对同一问题有很多不同的实现路径,但是达到的效果是一样的,在这种情况下需要考虑的如何去实现优化。不同的实践路径对最终生态的融入,以及我们对生态的贡献可能会影响我们的效果。在我们的理解中,坚持自己的初心,哪怕再难的一条路径我们也会坚持去做。因此最初从某个项目的立项到开发过程中,我们首先从内部客户的需求,到这个需求实现,花费不到半年的时间就可以将成果展现出来。最终我们将这项成果推到 Linux 上游的社区时,就单纯地发补丁共计发了 23 个版本,且整个过程持续了一年多的时间。另外,通过社区去接受我们的方案花了一年甚至更长的时间。
整个过程中,坚持是件很难的事情。我们最开始的初心是为了解决自己的需求,同时也了解很多行业存在共性需求,因此我们希望所做的事情能够被大家所接受,也能够共同参与,将后来的生态一起做起来。
许迎春:我觉得没有技术肯定是不可能有生态,但有技术不一定能把生态做起来。现在生态发展比较好的主要有几个方面:
一个是好的终端产品。比如苹果公司,起初它并没有生态,但是它的产品比较好,后续拉动了整个生态。因为做生态主要是需要程序员、开发者的支持,如果你拥有足够的最终用户,就可以吸引更多的人参与进来。
二是好的技术平台。如果没有一个好的产品,下一步就必须要有一个很好的技术平台,同时去开源。如半开源的 Android 平台,通过开源,能够让别人接纳包括从底层的芯片生态到上层的应用生态,通过互动的方式来拉动生态。
如果两个都没有怎么办?一方面是靠技术和运气,只能将开源产品放在开源社区里,如果你做的超级好,相信开源社区会识别出你的技术,最终会使用你的产品。因此,我认为操作系统的开发技术肯定是第一,但生态的拉动有一些策略,一个是产品策略,一个是开放平台策略,你直接放到开源社区,让大众来评价,最终如果你设计的好的话会被采纳。
熊伟:对于生态如何构建,首先所谓生态一定是一个产业链,覆盖前端、中端、后端,是互通的。对于华为而言,不可能所有东西都覆盖,所以我们一定是与企业进行联动,在产业链生态形成的时候,大家都能在这个产业链上获取比较好的效益,这是真正核心的诉求。以 OpenEuler 为例,从我们构想来讲很简单,我们期望各个资源放在一起,针对不同场景能够使得大家的工作量减少,各个厂商发挥他们的优势,或者在相关的产业领域获得它的优势。
这可从生态上可以概括为两点:
第一点,首先在生态上让所有厂商都受益,这个链条成立了生态才可能有基础。
第二点,技术上还是得有拿得出手的东西,这样才能有客户,当有了一定的客户群才能讲生态。
潘爱民:我认为做操作系统的公司有两类,一类是解决自用的问题。另一类是打造生态。这两类其实是有一定的冲突,因为如果要打造生态,然后又要自用,往往有可能别人就不愿意用。
如果是自用,它要解决的是技术问题,要用得更好,要用到极致。然后就对人才有需求,我认为操作系统最缺的、最核心的两类人才:架构师和系统程序员。我们国家程序员数量很大,但多数都是应用程序员,我认为我们底层操作系统不够强造成了我们对应用的需求就更大。实际上有可能不需要这么多应用人员。
如果是做生态,我们基本上都没有成功经验,做生态不是一个纯基础,也不是一个纯商业,也不是纯开源。我认为 Android 与很多生态伙伴签的一些条款都是极其讲究的,以至于这十年来,在我们有那么多的公司同时,很多想要逃离 Android 生态的企业无法走出来。所以很多公司需要定位好操作系统究竟是要解决自用还是要解决开放生态问题。我拿理想来举例子,如果理想想做一个自用,那它就是需要人才,要解决自己场景里面各种定义好的功能并做到极致,做到有竞争力,但是这时候再找别人用,别人不敢用,这个是有冲突的。
操作系统的生态如何建?人才谁来培养?
谭郁松:的确,像我和陈渝老师都是院校系的,从自身来看,我们团队衍生出麒麟操作系统,但是现在的学生更喜欢 AI,那么有什么样的方式可以吸引学生投入操作系统的学习?
陈渝:从个人体会来说,十年前,我认为不仅仅是清华,整个国内的高校对系统软件人才的培养是不足的。近五年以来,我清晰地感知到我们在进步。
其次,对于学校而言,学生的选择非常多,以清华大学为例,很多学生会选择一些非常有挑战、创新,或者非常火热的领域,如人工智能、人机交互等方向。但这并不意味所有学生都会选择这个方向,我们的目标旨在让所有人都能够具备一定系统思维和系统能力。再者也会尽量去挖掘对操作系统感兴趣的学生,希望能够引导他们,可以在本科阶段就让学生参与科研。第二在本科阶段就直接和企业合作,做一些跟企业与学术结合的事情。
除了以上,从今年开始我们在全国范围内开展全国大学生的操作系统比赛,通过这种方式来吸引同学对系统软件感兴趣。同时通过这种比赛能够把学校和企业结合在一起,能够通过企业的帮助,我们对前沿的技术了解可能多一些,企业能够推动学生更好的对系统软件、OS 感兴趣。
韩辉:人才没有必要太限定自己的发展方向,多去尝试一些自己感兴趣的领域,对未来的创新创造非常有帮助。因为创新可能会与行业、交叉领域,甚至以前和计算机很难搭边的领域也能产生了火花,或是一些新的想法,亦或是一个操作系统。倘若只是站在计算机这个领域来想创新,太过狭窄,因为当前不管在工业、自动驾驶等领域,也许都有我们还未知的东西,IT 技术需要与传统的行业进行融合,这也需要技术人才必须深刻地理解这个行业,理解技术未来的发展趋势。以及理解 IT 的优势所在。
如果在培养人才方面或院系教学方面,只是将自己的围墙筑得很高,反复强调某些该学某些不该学,可能最终就会导致知识体系僵化,我们需要的不是原始创新,而是组合创新,形成更大的优势,这也需要一专多能,即本专业能力强是基础,也要将眼光放得更宽去了解更多。
熊伟:学生应该知道当我们想做什么东西的时候,能找到什么样的工具,有什么样的方法,能把这个问题解决掉。如果能够做到这一点,已经很不错。
「write once,run anywhere」,能否在广泛的操作系统领域实现?
谭郁松:在应用的领域,所有的程序员都有一个很朴素或者称之为“乌托邦”的一个设想,即「write once,run anywhere」。如果想要实现这样的愿景,针对不同场景下是否有这种可能性,或者说整个操作系统发展的中间形态是什么?
潘爱民:这个问题特别好,因为我觉得从我们早期做操作系统大多数都是从底层做起,但是我们最终的目标是为了平衡共性和个性化。从软件工程来讲,一次编写就能够到处使用,是一个理想点。
上文中我也提到了应用程序员,可能等到将来实现理想状态之后,我们不需要这么多的应用程序员。因为当程序用乌托邦的思想最终让程序写出来之后,会发挥更多的价值。今天在大多数的 B 类项目招标里面,好多都是把程序员当小时工来定价的,这是对程序员创造极大的贬低,因为他们只是写了一次程序,一次运行,没有第二次,这多么讽刺。然而,我们做操作系统追求的就是写一次可以到处使用,因此作为一种抽象的能力,这是我们追求的目标,而且在每一层上都要做到这一点。
随着挖掘的需求越来越充分,我们需要不断地把抽象的能力用在每一层上,这才是真正最终解决我们达到理想的软件世界,做到软件定义一切的关键。
许迎春:其实软件工程师有一个目标,就是想实现硬件工程师这个样子,如每个模块做芯片,封装以后就不用再改了,最终达到这一点的话就算我们实现了工程,否则的话永远是一个艺术。
大家都觉得硬件芯片无法修改,却不得不用,软件随时可以改,就导致了我们很轻易的放弃了对标准界面的定义。随着算力的不断增大,这种情况下是需要付出代价的。
王柏生:我说说我的看法:
第一个,我觉得操作系统会是一种百花齐放形式,可能很难说只有一种或者两种,因为大家可能会有个性化,或者是一些艺术方面的问题。
第二个,之前在传统操作系统里面有一个标准,该标准定义了一个良好的接口,承接上面的库和下面的标准。
我觉得操作系统当前会是百花齐放的状态,随着时间的推移,大家可能会定位标准,并向标准逐渐靠拢。
陈渝:站在学校的角度来说,比如说 write once,run anyway 这一愿景的确像谭郁松老师所言,努力朝着这个方向发展,但可能达不到。
我比较认同王柏生老师所言,操作系统就是一种百花齐放的状态,也正如许迎春老师所述,改硬件的成本太高,只有在改动成本越来越容易的情况下,我们就更容易实现百花齐放。
我感觉随着刚才说的算力的提高,我们的编程,或者是计算机技术的发展,也许将来更是一种百花齐放的方式,我们其实也在探索,一些数据结构,一些基本的控制逻辑都不一定是人去想,也许 AI 可以帮助我们做一些辅助的改动,这种情况下,我们的成本、代价会更高,在这种情况下我们怎么去构建一个符合应用需求的软件系统,不一定是操作系统,是一个软件系统,也许这就是一个新的问题。
我觉得这里面是要快速的去适应将来的需求,要达到这一点会是将来的趋势,而不是说我只做一个科目,只做某一块,你要做就做一个系统,这是我个人的感觉。
对操作系统新时代的寄语
谭郁松:欢聚的时光是短暂的,最后请各位专家用简短的一句话来总结一下,操作系统的新时代和新时代的操作系统是什么样的?
许迎春:从我的角度来说,用一句话概括新时代的操作系统,应该是一个可模块化且适配比较灵活能够满足实时安全的操作系统。
潘爱民:我所理想中的操作系统,就是能够提高效率、创造价值,并且将安全、性能综合平衡在一起的一个完整的系统,这才是真正有价值的。
佘开锐:希望操作系统能够快速地响应客户需求,能够最大化地应用硬件,带来实实在在的效益。
熊伟:以时间为限,我希望明年的操作系统能够实现高度模块化,能够容纳不同种类内核的构建系统,能够生成不同种类、不同场景的 OS。
韩辉:我希望能够有一个改革生产关系,能够让整个社会不同维度的用户工作效率得以更高,能够产生更多价值的操作系统。希望明年,特别是在工业领域,能够实现突破。
王柏生:在目前百花齐放的状态之下,操作系统会慢慢地提炼聚合一些比较通用的功能,当然达不到完全通用,我认为大家会慢慢地考虑百花齐放的标准,且我们怎么以最快速地创造它。
陈渝:希望明年此时,我能看到全国更多的同学能够喜欢操作系统,能够在操作系统领域进行学习、探索。
谭郁松:很荣幸今天能邀请到各位操作系统的掌门人来探讨新时代的操作系统和操作系统在一些新领域的话题。通过今天的对话,的确让我们看到所谓的万物互联新时期、新时代、新产业对操作系统新的挑战和新的需求。其实,一年后甚至若干年后,操作系统到底是怎么样的,我们无法做出非常准确的判断,但从程序员角度看,我希望这是一个乌托邦的世界,所有的东西在我们眼里一切尽在掌握,一切都是互通互联互操作的,谢谢!