全文>>
大家好,我是来自上海交通大学的陈海波。非常高兴能和大家一起探讨《面向万物智联时代的操作系统》。操作系统对于很多人可以说是最熟悉的“陌生人”。我们每天都在使用操作系统,但是它背后到底是什么样的呢?
先回到2003年的暑假,那时我还在读本科3年级。有一天正在做暑期大作业的时候,我的电脑突然开始间歇性重启,重启之后再倒计时、再重启。我什么都做不了,几乎处于崩溃状态。
后来,我才知道是我的操作系统中了病毒,这个病毒叫冲击波。而且不仅仅是我的电脑,当时遭受冲击波攻击的设备非常多,几乎波及到了全球,对整个信息产业都造成了巨大的影响。
那时我就在想,为什么一个小小的病毒就能让整个操作系统处于崩溃状态?背后到底发生了什么?
在2006年,中国科学院计算技术研究所的李国杰院士向《中国计算机学会通讯》推荐了一篇文章。这篇文章是法国巴黎大学陈钢老师所写,名为《从ACM会议论文数量看差距》。ACM就是国际计算机协会,是国际计算机领域的权威学术组织,举办了很多会议。
陈钢老师的文章中有一段话刺痛了我。他写道:SOSP作为操作系统领域类似电影界奥斯卡的学术会议,已经有40多年历史了,但是没有一篇来自中国的论文。
我们在日常生活中能看到形形色色的操作系统,例如微软的Windows、苹果的MacOS、目前逐渐消亡的SOLARIS以及开源的Linux等等。这么多的操作系统中,源自我国的主流操作系统确实很少。
所以我坚定了从事操作系统研究的信念,并努力把它推动到产业落地。
那么,操作系统的起源到底是什么样的?几十年来,操作系统走过什么样的历程?
第一台通用计算机ENIAC诞生于1946年。这台计算机特别大,差不多有170平方米。这样一个庞大的空间里面,不仅仅有运算器,还有很多的操作员在不停地把纸带塞入再拿出,循环检测这个运算过程有没有出错。
这样早期没有操作系统的计算机,整个操作过程都是靠人工来完成硬件的开关,而且程序运行只能从头到尾,中间不能被打断。中间一旦出现任何问题,就意味着两周甚至一个月的辛勤工作付之东流。所以说它其实只是一台“会计算的机器”而已,效率非常低。
但这也促进了第一个操作系统于1956年诞生,其实这也就是操作系统名词的由来。操作系统叫operating systems,操作员叫operator。操作系统就是使操作员一系列繁杂的工作实现了自动化,让操作系统代理人类操作员来完成这些繁杂的、甚至需要夜以继日的工作。操作系统是不知疲倦的程序,所以可以更高效、更不容易出错。
操作系统自诞生以来,就一直不断地推动着信息产业的发展,操作系统的厂商也一直处于整个信息产业的浪潮之巅。
自从1956年第一个操作系统诞生之后,20世纪60年代又诞生了主机的操作系统,比如OS/360。
我们都知道,造一颗原子弹所需的成本非常高。后面人们发现,构建一个操作系统花费的成本跟造原子弹的差不多。当时OS/360操作系统的研发经费和当时造第一颗原子弹的研发经费相差无几。所以有人说,能把操作系统开发当成一个核弹级的工作。
随着时代发展,我们可以看到操作系统在逐步地演进,发展到现在大家熟知的PC互联网也就是个人计算机时代,这里面经历了一个很大的技术突破。现在我们可以通过键盘、鼠标来进行交互,而不再是借助专业的程序员用非常原始的方式进行输入。
现在我们进入了移动互联网的时代,交互变成更自然,通过点击和触摸的方式就能完成对计算机的操作。很多时候我发现,我家小朋友操作手机比我操作得更顺畅。这可能是因为交互变得更加人性化了。
操作系统发展到现在,可以说是进入到了万物智联的时代。在万物智联时代,相互连接的设备非常多,而且这些设备的形态是各异的,并且深入到我们生活的方方面面。操作系统已经无处不在了,无论是个人随时能接触到的的终端设备,还是现在大家看不见的但离不开的东西。
比如大家上网就需要连接5G网络。5G网络信号实际可能是由你家楼上或者旁边电线杆上的基站发射出来的,这上面也有各种各样的操作系统。还有背后的数据中心、云计算平台,等等。我们平时用的电力、交通等各种设施背后都有操作系统驱动着它们运行,甚至我们在医院照X光,X光机里面也有操作系统。
那万物智联时代的操作系统就需要去做的一件事,就是如何赋能、赋智于千行百业。这里面蕴含着巨大的机会:从过去操作系统受制于人,到现在抓住机遇的人就有可能实现换道超车。
操作系统是信息产业之魂,也是构筑万物智联时代的基石。如果把CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)、NPU(Neural-network Processing Unit,神经网络处理器)等芯片比作人的躯体,操作系统就是人的灵魂。如果没有灵魂的驱动,那芯片这种躯体就会难以发挥能力。所以,我们需要将芯片和操作系统协同起来,作为支撑万物智联时代的基石。
那么,万物智联时代的操作系统需要解决哪些问题呢?
第一个问题我想说的是“昆虫纲悖论”。
我认真复习了一下昆虫纲这个类别。在我们的大自然,哺乳动物有5000多种,而昆虫纲下的物种就有100多万种,而且繁殖能力非常强。如果按照总数来看,昆虫才应该是统治地球的生物。但为什么现在是人这种动物来统治地球呢?核心点就在于,智慧的互联让我们人类凝聚出更大的力量,形成了比单个个体更大的价值。
在万物智联时代,各种设备的形态在爆炸式进化、杂交和演变。原来我们喝水的杯子只有陶瓷和钢的分别,但是现在很多杯子既有温度控制器,又有智能芯片来计算喝水时间和饮水量,当我喝水不及时还会提醒一下,这对健康很有帮助。但是,各种各样的设备也会导致我们进入设备碎片化、“烟囱化”的时代。
如果我们不能让它们智慧互联,同样也会形成“昆虫纲悖论”。各种智能设备都是独立的个体,就不能产生更大的价值。因此,如何能够让这些设备做到智慧互联?这个问题让我们思考了很长时间。
我发现,我家小朋友特别喜欢玩乐高玩具。其他固定组装的玩具可能玩一会儿就想不玩了,新鲜感不会超过一天;但是乐高玩具他可以玩很久,而且可以组成各种各样的形状。
于是我就在想,操作系统是不是也可以像乐高积木一样?我们可以先构建起它的基本单元、基本功能,然后面向不同的设备拼装起来,比如手机、手表甚至刚才说的水杯。因为它们都是用“积木块”搭出来的,所以是同源的,可以比较方便地做到智慧互联。同时这个“积木”引进以后,可以让各种设备受益。而且能够汇聚更多的力量。
这是我们提出来的元OSTM的概念,也就是元操作系统。我们希望提供一个灵活的、按需解耦的部署,通过弹性部署的方式支撑场景的千变万化。
第二个难题是,万物智联时代怎么来支持分布式异构并行?
分布式异构并行这个词听起来很拗口,我先解释一下。在芯片和计算机的发展初期,我们把主要负责运算和控制的部件叫CPU,也就是集中的中央的处理单元。中央这个词意味着应该只有一个才对,但后来我们发现,现在的“核”越来越多,哪怕只是在一个芯片上就有成百甚至上千个核,我们已经进入了多核时代。芯片上的核不但多,而且还是各种各样“奇形怪状”的,有CPU、GPU、NPU,可能还有DSP(数字信号处理器)。
在万物智联的时代,各种不同异构的多核芯片之间,还会形成相互协同。所以,它们就需要有分布式的异构并行的能力。
如果不提供异构并行会出现什么问题?这张图表示的就是,假设一个一个的人是各种不同的计算单元,如果管理得不好,就会造成一人干活、众人围观的情况,生产效率非常低,不能充分发挥整个计算机的能力。
那么,怎么解决多核情况下的异构和并发问题呢?
首先,我们可以看到,传统的操作系统可能会导致不同的异构处理单元之间互相打架。就像我们在某条城市道路上,如果公交车和私家车抢道,公交车就很难准时。所以我们在想,能不能让不同的异构设备各行其道、各自管理。让不用它的时候,就可以像不在早高峰时候的公交车道,先让其他车上去。这样能够做到更高效的资源利用。
其次,可以跟交警限流一样,如果设备上或者CPU上的算力单元任务量不是很多,就能把一些核关掉,这样还可以节能。通过这种方式,我们的手机使用时长可以从8小时到12小时以上,如果能从一天到两天,用户就更开心了。
有了分布式异构并行之后,需要解决的是怎么进行智能化的资源调度,这里面也会涉及到刚才讲的一系列异构单元。
首先我们要知道,这些任务到底需要什么,我们到底能提供什么算力。这有点像经济学里供给和需求的精准匹配。我们需要把我们的任务通过负载追踪、分布式调度、业务感知和模型识别等方式分配。
大家看视频的时候,系统要编解码,硬件单元可能会调用比较多。打游戏的时候,对GPU调用比较多。感知到应用负载长什么样,并把它精确地映射到芯片上面去,这样就能够做到不缺位、不越位,做到精准供给。
我们如何让各种不同设备进行互联呢?首先就需要让它们能够对话,对话就要有一个协议。我们需要提供分布式的协议。能够对话以后,要考虑它们之间的数据怎么管理。比如数据可能本来存储在手机上,要想在个人计算机上打开,就需要分布式数据管理。比如大家拍合影时,我想用手表来控制手机拍照,就可以让大家站到一起,通过设备的虚拟化完成。
第三个不得不提的就是安全问题。
万物智联时代很多的数据和关键信息都处在不同的设备上,那这样会不会出现我的手表被攻破了,手机上的数据也因此失窃的问题?会不会造成安全的“木桶效应”?要避免这样的情况,就需要重构数字安全的底座。
首先就需要筑牢这个基座。想法是这样的,就像现在我们在这个楼里可以进入到会场,但是不能走到某个研究员的实验室里面去。因为建筑里的每个房间、每个单元都有一把锁。
而传统的操作系统只会设计一把大的锁,一旦拿到这个大的钥匙进入“大楼”,就能为所欲为。我们现在通过每个模块都加一把锁的方式,就使得一个环节被攻破了,其他内容还能保证安全。
第二个方面,我们用加强的基于数学的方式去证明这些安全攸关的模块是否正确。原来测试时没测到的部分可能产生安全风险,现在我们通过形式化证明的方式,就可以测试得更全面。
比如对于数学定理,我们原本是通过测试的方式知道个例是成立的,但是现在如果通过数学归纳的方式可以证明任何条件都是成立的,这样就可以证明它的完备性。
下一个问题是我们如何能够确保各个设备之间相互协作,所以我们还要对不同的设备进行分级。有的设备可能弱一点,给它的安全权限就要弱一点。有的设备安全能力比较强,权限就可以多一点。
我们不仅要分级,还要以强补弱。如果手表遭受什么风险的话,可以让我们的手机来帮助修复一下手表的安全漏洞,这样可以做到更强的、相互的安全协作和联防联控,使1+1真正大于2。
万物智联时代的操作系统还面临很多关键的挑战,我们也处在持续不断的攻克过程中。
我们研发了这么多的技术之后,如何把它们协作起来,构成一个真正可用的操作系统?这就是我们过去一直在努力的目标。我们通过产学研深度协同的方式,一直在构建一个万物智联时代的操作系统OpenHarmony,也叫“开源鸿蒙”。
OpenHarmony的设计理念是,如果把社区的版本当成一个乐高盒子,就可以面向不同的场景组装出不同的发行版本,运行在不同的设备上。通过这种方式,就可以构建一个分布式、全场景协同而且开源的操作系统基座和生态系统。
我们通过开源协作的方式,吸引到很多的人一起加入OpenHarmony的开发过程中。OpenHarmony目前已经成为业界发展速度最快的智能终端操作系统开源社区,有1亿多行代码,350多款商用软硬件。在开源的活跃度、贡献度等方面一直都是排第一位,在很多产业场景中都得到了广泛应用。
比如大家去交煤气费、电费、用人脸识别刷POS机,或者在某个无人机甚至是天上的卫星上,都有不少基于OpenHarmony的系统构建的内容。可以说万物智能时代,OpenHarmony目前已经无处不在。
操作系统的发展不是一蹴而就的,它是一个长期的过程。我们通过多种形式的产学研融合,比如高校的技术俱乐部、技术峰会等;还包括提出一系列挑战,比如我在2023年通过技术峰会发布的《终端操作系统10大挑战》等,这些为我们吸引了全社会的力量,让大家一起来不断地推进这个操作系统的发展。
在 的最开始我提到,在一开始作为“小白”的时候,由于电脑的操作系统中了病毒,引起了我对操作系统的兴趣;也由于我们国家在操作系统领域类似“奥斯卡”级别的学术顶级会议SOSP上面还没有突破,所以我进入了这个行业。在很多师长学长的帮助和指引下,我们在2011年首次突破了SOSP学术会议,我也有幸在6年以后成为这个大会的主席,甚至在2023年成为国际计算机协会操作系统专业委员会的主席。
我想,这其实也是我们国家在学术界大力投入操作系统研发过程中的一个缩影,也反映了我国操作系统在不断地快速进步。
最后呼吁大家,希望能和大家一起,通过操作系统的根深叶茂,来支撑数字经济的蓬勃发展。
谢谢!