写点什么

智能时代,操作系统的升维所面临的挑战

  • 2023-01-09
    北京
  • 本文字数:6542 字

    阅读完需:约 21 分钟

智能时代,操作系统的升维所面临的挑战

近几年来,智能操作系统非常火爆,不亚于芯片。其实在每个时代,它都会被放到风口浪尖上。每个人无时无刻不在用操作系统,尤其是作为一名开发者。有的人用 Windows,有的人用 Linux,还有些人用 Mac OS。每个时代的操作系统不一样,从 Unix 到今天智能手机的操作系统。


我们当前所处的智能时代,操作系统的升维面临哪些挑战?操作系统后续如何演化?下面我分享一下我的观点和建议。(本文整理自中科创达战略产品部首席架构师刘寿DIVE全球基础软件创新大会2022的演讲分享)。


以下为刘寿永演讲的精华内容,经编辑。


首先我会介绍下中科创达。然后回顾一下操作系统的历史,读史可以明智,知古鉴今,我们可以通过历史发展的车轮看到操作系统的演化,从而预判它未来的发展趋势。第三部分主要分享下操作系统面临什么样的挑战,在每一个时代,引爆操作系统发展的点往往不一样。第四部分,从更高的维度,看看操作系统未来的发展是什么样子。创新和历史是我所谓的阴阳之道,是正反两面。因为做创新时往往会背负历史包袱,我们应该怎么去看待操作系统的创新和历史,最后会总结一下我的观点,并展望下操作系统未来的趋势。

创达简介

中科创达是智能系统技术供应商,成立于 2008 年,在 2015 年上市,现在大约有一万多名员工,其中 90%是软件开发工程师,服务于全球一千多个客户,分布在全球大约三十个城市。


创达的核心业务主要有四块。第一块是传统的智能手机和其他智能终端;第二块是智能物联网;第三块是智能汽车;第四块是智能行业,现在无论是物联网,还是汽车,人工智能都是必不缺少的模块。


创达的技术范围覆盖了所有的类型终端,比如说摄像头、安全、人工智能,还有近几年来比较火爆的边缘。边缘端的微服务、混合云、容器编排、以及云端和云端链接、设备管理等等,创达的技术范围都能覆盖到。创达已经建立了全套的产业链上下游合作服务伙伴,包括 ODM、芯片厂、云厂商、操作系统厂商等等。

操作系统历史回顾

从 70 年代的 Unix 小型机,到 80、90 年代的个人电脑,到 2010 年开始的智能手机,再到从 2020 年开始到现在的物联网,每个发展时期,都有不同的操作系统作为主导,都有其成功因素和核心系统。


比如说 Unix 系统,它的主要核心技术在于分时共享、C 语言的编程接口。其主要成功因素则在于通用计算,一切皆文件。到今天为止,大部分的类 Unix 操作系统的核心概念还是文件。


到了 80 年代,个人 PC 出来以后,操作系统以 MacOS 和 Windows 为典型代表,主要强调图形界面交互。另外,它们有了自己的应用软件,尤其是办公软件。


到了 90 年代,随着因特网的发展,Linux 横空出世。Linux 是因为因特网诞生的,它的一个著名发行版是 Red Hat,提供了优秀的操作系统和服务。它的主要成功因素是移动互联网和开源运动。现在整个 Linux 世界里,几乎所有的软件都是开源软件,它们推动了 Linux 整个生态和基础软件的发展。


到了 2010 年,智能手机出现,典型的操作系统代表就是 iOS 和安卓。它们更强调交互,不是键盘式的交互,而是多点触摸,触摸屏式的交互。另外它们第一次有了“应用商店”概念。所以它们最主要的成功因素是移动互联网的发展和更好的用户体验。


到了今天,物联网的发展更强调自然交互,已经超越了触摸,也不仅仅是视觉、手势、语音,而是各方面的交互。这主要取决于人工智能的发展,还有开放协作的模式,能够把物联网系统打造得更流畅、更人性化,交互体验更好。

操作系统面临的挑战

在每个时代,每个操作系统都有自己的挑战,就像《易经》里讲的“物极必反,否极泰来”。当一个时代发展到某个程度时,某一类操作系统变得不再适应时代的发展,它要么自我突破,要么被另外一个系统取代。


在不同的时代,系统都需要做哪些突破?


二零零几年时,出现了 MID(Mobile Internet Device)。以前的手机屏幕很小,这时出现了大的交互式屏幕,图形系统就显得尤为重要,大家都致力于如何把图形的性能提高,交互性做好。


到了智能手机时代,又面临另外一种挑战。智能手机的发展越来越复杂,硬件设计越来越复杂,功能系统越来越复杂。硬件的复杂使得整个系统的模块越来越复杂。现在整个安卓系统的代码,可能就有上亿甚至十亿的代码行数,已经远远超过了以前的系统。另外还有了“应用”生态。很早以前,应用和系统是绑定的,没有人要单独去装一个应用。随着智能手机的到来,产生了各种各样的应用。比如大家经常刷的抖音、社交经常用的微信、还有一些轻音乐软件,甚至还有一些行业上的 APP 等等应用。为什么现在应用占据了生态?因为脱离了这些应用,手机可能就只是一个打电话的工具了


而到了现在我们所处的智能时代、物联网的时代,操作系统的发展又面临着一些新的挑战。


第一,整个物联网时代,设备形态越来越多样化。大家可以观察一下自己的家里和外面,像无人机、扫地机、监控摄像头,还有语音交互设备和 Box 等等,它们的形态不一样。形态不一样,产业链上下游的路径会变得越来越长,会有不同的硬件供应商、AI 算法供应商、系统集成商、云厂商等等,它们交织在一起,形成了一个庞大的产业链上下游。


第二,不同的设备上运行着不同的操作系统。如何打通这些多样化的操作系统?这是现在面临的挑战。不是说所有设备上必须装统一的操作系统,但所有的设备互联互通,是智能物联网时代应该解决的问题。

从更高维度看智能系统

软件×硬件=人体

现代的操作系统已经不单纯是软件问题,而是包含了软件和硬件两个部分。底层的硬件,从设计到产品,再到上面运行的软件,软件又包含了一些可拆卸的模块,典型的比如 UI 模块、多媒体模块、互联模块、设备管理模块、安全模块、AI 模块。每个模块功能各有不同,这些模块是可以拆卸的组合,根据不同的设备形态和应用场景,把这些模块做一个排列组合,就能形成一套系统,来适配物联网设备。


所以我们把软件和硬件的结合,称为一个统一的智能系统,就相当于人体一样,由肌肉、骨骼、血液,组合在一起,形成了整个人体。所以不能单纯从软件角度去看智能系统,而应该把硬件也囊括在内,通过软件硬件统一看待整个系统的发展。

计算×感知=智慧

再从另一个维度看一下,如果人有了骨骼、肌肉,还缺什么?缺大脑和感知。人能和自然界交互,主要就靠这两样。感知,用佛教的说法叫“眼耳鼻舌身意”,能够感觉到、看到、触摸到、听到,才会对外部世界有感知。有了感知以后,更重要的是大脑要进行处理,也就是计算。


2001 年时,云计算刚开始发展起来,是中央控制的计算模式。现在,随着硬件和边缘感知的发展,计算和感知融合到了一起,不仅仅发生云端,也可能发生在边端,甚至可能发生在设备端。


这产生了几个特点:


第一,超低功耗。可能随便一个超低功耗的设备就可以具有感知和计算能力。


第二,维护变易。之前的电话线、网线都是有线连接,未来可能是无线连接,随时更换,系统更容易升级。


第三,隐私安全。一些隐私安全的问题,可以直接在设备端做 AI 分析,比如人脸识别、物体跟踪,不用传输到云端。路径越短越安全,因为限制到一个局域网的范围之内,不会脱离到广域网,就不容易被黑客攻击。


第四,集成智能。一些内置的 AI 等丰富的算法可以供设备端使用。


第五,丰富连接。尤其是 WiFi、BT、ZigBee 等无线连接,都可以无缝连接。未来,计算与感知的应用领域也会非常广泛,比如像智能零售、智能楼宇、智慧家庭、安全监控、入侵检测等。

人×物=社交

除了计算与感知之外,未来的社交范围也扩大了。


现在我们是人与人之间的社交,以后是物与物之间的社交。比如说边缘端和近端的交互、边缘端和云端的交互。


另外,人与物之间也产生了交互。未来,人的交互对象可能未必是一个人,可能是一个物。物与物之间也可以做一些交流,这样,可以建立人与物之间的互动场景。


通过软件,可以定义一些场景模型。就像现在比较火爆的元宇宙一样,人也进入了一个虚拟环境,物也进入一个虚拟环境,虚拟与现实结合,形成很大的社交群体——人、物的社交群体。

技术×行业=数字化

行业的技术落后于互联网发展,也落后于行业本身的发展。如果把一些新技术应用在行业上,帮助行业做数字化改造,形成一套广泛应用的行业系统,这时操作系统就有了新的定义。比如导入一个 AI,建立一个视觉融合平台,再在产线上配套一些摄像头,内部有一些预处理模块、AI 算法、账户绑定,可以做缺陷检测、物体识别、尺寸测量这样的系统,然后部署到工业场景,这对工业场景的数字化改造有非常大的帮助。


所以说不能简单地看待操作系统,像传统意义上的那种操作系统:有一个内核、几个中间件,能跑在 X86、ARM 或者 RISC-V 上,并不是那么简单。可能更多要从场景驱动,通过场景来定义不同行业的操作系统。

端×云=边

现在,边缘计算发展非常迅速,应用场景也越来越多。边缘计算未来会形成自己独特的领域,现在好多云计算的场景、技术,可能会下沉到边缘。因为随着处理器的速度、AI 的运算能力在边缘侧不断增长,无论是技术还是平台,都可以移到边缘上。


边缘端会发展为由许多边缘设备组合到形成的边缘集群网络,然后在边缘网络上运行一些边缘的组件,比如设备的编排、算力网络的编排、容器化、以及边缘协同、边缘链接等。


另外,边侧会内置一些算法。因为有些情况下,需要做实时交互,如果能在边侧处理,就尽量在边侧处理,不需要到云侧绕一圈。


还有一些操作系统的核心模块,比如作为一个开发者,需要去做低代码开发、H5 编程,或者需要连接物联网设备,在边的场景,这些都可以轻而易举触摸到。


还有一些边缘模块,像安全模块,比如设备认证、区块链加密的,可以放在边缘上,让边缘变得更加安全。


另外可能还有些特殊的模块融入到边缘,比如图形处理模块,还有一些机器人的模块,也可以放在边缘,作为一个机器人的控制中心。

创新和历史包袱的碰撞

从应用场景创新来看,到目前为止,操作系统的发展还是比较快的。但这产生了另外一个问题:创新和历史的碰撞。就像《易经》里说的“一阴一阳之谓道”。因为创新就意味着要破除旧的东西,是不是旧东西就没有用,就应该抛弃它?我分享一下我的观点。

内核的纠结——“大脑”:安全还是效率?

关于内核,提到 Linux 时,我们讲的更多是 Linux 内核(Linux 内核是一个宏内核的结构,历史上就有微内核和宏内核之争)。没有内核就没有顶层的应用,世界上能提供安全内核的没有几个厂家,尤其是在消费市场上。


内核意味着安全可靠和效率。效率往往和安全可靠是一种平衡关系。无论是宏内核还是微内核,在什么样的场合就应该用什么样的内核。关键还是要发展自主内核,这条路我们还是要坚持走下去,因为它是操作系统的根基。

中间件的缺失 ——“器官”:新生还是移植?

除了内核之外,还有中间件。


为什么中间件如此关键?安卓系统之所以被称为操作系统,正是因为它在 Linux 内核上叠加了一层中间件,这就是它区别于 Linux 的最大不同。比如它的硬件抽象层和 Linux 不一样,整个中间件,整个框架层,比如 SurfaceFlinger、AudioFlinger,和以前的 Linux 的 PulseAudio、Gstreamer,还有 S11 系统,都是完全不一样的模式,所以安卓被称为操作系统。它的顶层支撑的应用也有单独的 API,包括应用商店。所以中间件的创新,对整个操作系统是非常关键的创新。


今天讲操作系统,我们更多是缺失中间件,这意味着更多的是缺失基础软件的创新。如果缺失了中间件,我们就回到了原始的编程状态,比如要用 API 去调 POSIX 的接口;如果要画一个图,还要去操作 Frame Buffer。


为什么说中间件需要创新?从开源的历史上讲,软件设计思想都集中在开源模式里,都集中在以前的软件设计的模式里。如果跳出以前的软件设计模式去看现在的应用场景,看现在的系统的设计模式,可能是不一样的。

应用要扎根

说到中间件,不得不说应用,因为所有的中间件都是用来支撑应用发展的。很多人从应用讲生态,如果没有应用,操作系统是没有用的。所以应用非常关键,它也是一个操作系统生态能够野蛮生长、顺利成长的一个关键因素。


但不是说有了应用,就可以抛弃中间件和底层内核。因为它们是基础,所有的应用都是建立在基础之上的,就像建立在沙滩上的城堡一样,如果根基不稳,大水一来,整个城堡都会垮掉。应用很重要,应用很关键,的确应用也是生态的一部分,但是永远不要忘了,还有基础。

人才不足

目前,我国基础软件领域尤其是操作系统这块的人才不足。智能系统的发展要素里,硬件或云的发展,IOT 设备的种类,AI.....这些都不是关键。


创新的人才才是真正的关键。从计算机的教育系统开始,如何去培养这种创新性人才?如何给予这些创新性的人才一些精神和物质上的资助,这些很关键,这样才能让这些创新性人才不停发展。


基础软件的商业模式还是比较难的,所以培养人才比较关键,从学校开始,包括社会上的支持,共同打造整个人才发展的路径。

开源是机会

开源对操作系统发展来说,是很大的机会。如果了解了操作系统和开源的历史——尤其是理查德·斯托曼发起的开源运动,它标志着整个 Linux 生态野蛮生长,就知道开源对操作系统来讲,是一个绝妙的机会。因为它带来了几点好处:


首先,开源这种合作模式是一个全球异地化的合作模式。


另外,它需要企业之间的合作、协同,而不是单一的企业搞一个小作坊就能生产出一套软件来,因为现在软件越来越庞大,系统越来越复杂。


除了企业之间的合作,它也是人与人之间的一种合作模式。这有利于更好地发展软件的可交互性和稳固性。


还有一点就是开源的商业模式,我希望未来开源软件有比较好的商业模式,这样才能支撑开源软件的发展。比如说单个项目的开源版本、商业版本、收费服务、订阅服务,需要我们去尊重开源软件、基础软件开发者的劳动成果。另外还有用开源项目做成产品化的。这些就是开源的商业模式。


还有开源软件的生态环境,这也是为什么开源能够发展得如此大的一个重要原因。比如像现在的开源芯片 RISC-V,在短短的几年之内发展势头非常迅猛。


Linux 操作系统已经有 30 多年的历史了,现在依然占据着很重要的位置。另外中间件,比如像 K8s、AJX 这种边缘中间件、编排管理中间件、甚至一些调度中间件,它们形成了操作系统中间件的一层很稳固的生态。从生态环境来看,无论从底层到上层,从硬件到软件,它们是很好的环境,有利于整个生态的发展。


另外,对每个工程师来讲,开源是一个可以自我成就的过程。从组织上讲是全球的协作分工,大家能学到很多东西;从技术上讲,很多开源项目都来源于大企业,你可以和顶尖人才去交流。


最后就是人才方面。它能够帮助我们培养出更多具有先进软件工程思想的人才,有利于发展我们自己的基础软件,所以说开源是我国操作系统发展的一个绝好的机会。

总结

如果我们看过历史,看过未来,却不去思考,那将是一种毁灭性的灾难。


内核依然要坚持,因为内核才是根。比如说有个内核过了 ASIL-D 认证,那它就是一个安全的内核,可以应用到很多安全的行业里去。


中间件是发动机,是最需要创新的地方,也是我们把它称之为操作系统的地方。如果未来我们有一个称之为操作系统的东西,那它一定是在中间件和传统的操作系统上有很大的不一样,无论是和 Linux、安卓或者其他操作系统。中间件是发动机,是我们需要创新的地方,是我们需要改变软件架构思想的地方。


应用也非常关键,是连接、繁荣整个生态的地方。但是没有好的发动机,没有好的根,应用也会死亡。


所以,未来的系统是一个软硬结合的系统,软件离不开硬件,硬件离不开软件;未来的系统也是一个端云结合的系统,从端侧到云侧,端、边、云协同工作,成为一个整体。


还有技术与行业的结合,把移动互联网的技术,一些新的技术,应用于行业当中,帮助行业做数字化转型,推动整个行业发展,也是未来智能系统的一个很关键的要素。


最后是边缘。边缘是系统发展的未来,因为无论是从端侧,还是云侧,现在都开始往中间走。所以我认为边缘是一个很重要的场景。边缘算力网络未来必定会成为整个智慧行业的中心,无论是智能楼宇还是智慧家庭。


讲师介绍


刘寿永 ,中科创达软件股份有限公司战略产品部 首席架构师。2011 年至今在中科创达从事软件开发相关工作,任职战略产品部首席架构师,负责中科创达操作系统相关技术和产品的设计与研发,熟悉高通、Intel、ARM、海思、展讯、MTK 等多个芯片平台,主要专注在 Linux/Android/鸿蒙/RTOS 等操作系统整个架构设计和生态建设。积极贡 LF/LFEdge/AGL/Autoware/RISC-V 等开源社区和技术联盟。和芯片厂、OEM、OEM、操作系统厂商、互联网、开源基金会等产业链上下游共同合作,为行业客户提供稳定易用的 Mobile/IoT 等操作系统平台方案和产品。

2023-01-09 11:443842
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 528.1 次阅读, 收获喜欢 1975 次。

关注

评论

发布
暂无评论
发现更多内容

设计模式的艺术 第十七章命令设计模式练习(开发一个基于Windows平台的公告板系统。该系统提供了一个主菜单(Menu),主菜单包含一些菜单项,Menu类可以增加菜单项。菜单项主要方法是click(),每个菜单项包含一个抽象命令类)

代廉洁

设计模式的艺术

LeetCode-66. 加一(java)

bug菌

Leet Code 每日一题 9月月更

PCTP考试学习笔记之二:TiDB 数据库 schema 设计

TiDB 社区干货传送门

集群管理 管理与运维 数据库架构设计

软件测试 | 测试开发 | 一文带你了解K8S 容器编排(下)

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 黑盒测试方法论—边界值

测吧(北京)科技有限公司

边界测试

购买小间距LED显示屏前需要了解什么?

Dylan

LED显示屏 led显示屏厂家

软件测试 | 测试开发 | 测试开发基础 mvn test | 利用 Maven Surefire Plugin 做测试用例基础执行管理

测吧(北京)科技有限公司

maven

千锋锋友学盟分享会:程序员百万年薪进阶指

千锋IT教育

51单片机定时器原理及相关器件

孤衫

C语言 单片机 9月月更

软件测试 | 测试开发 | 构建测试平台与对应的组织架构需要哪些能力?

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 持续交付-Blue Ocean 应用

测吧(北京)科技有限公司

转:工业软件上云很难吗?可以微创呀!

小江

工业软件云化

软件测试 | 测试开发 | 这些常用测试平台,你们公司在用的是哪些呢?

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 跨平台API对接(Java)

测吧(北京)科技有限公司

jenkins、

软件测试 | 测试开发 | 测试左移之Sonarqube scanner使用

测吧(北京)科技有限公司

SonarQube

「龙蜥开发者说」征稿啦!

OpenAnolis小助手

开源 征文 获奖 龙蜥开发者说 龙蜥技术

Apache DolphinScheduler PMC:开源不一定也要九死一生

Apache DolphinScheduler

海豚调度 开源社区 Apache DolphinScheduler 开源文化 #开源

「工作小记」不同内容相似结构?按个开关试试

叶一一

JavaScript 前端 React Hooks 9月月更

主流定时任务解决方案全横评

Serverless Devs

spring Linux

20个既简单又实用的JavaScript小技巧

千锋IT教育

MASA Framework 获取配置信息的方法

MASA技术团队

.net MASA Framewrok MASA

计算机网络体概念

StackOverflow

编程 计算机网络 9月月更

dbt-tidb 1.2.0 尝鲜

TiDB 社区干货传送门

新版本/特性解读

基于函数计算自定义运行时快速部署一个 springboot 项目

Serverless Devs

《TiDB跨版本升级》 --流程概述

TiDB 社区干货传送门

迁移 实践案例 版本升级 管理与运维 安装 & 部署

参加了个算法比赛,真是一言难尽啊

捉虫大师

Go 算法 map 比赛 9月月更

中国移动NZONE 50 Pro 5G手机正式开售

Geek_2d6073

为什么我要迁移SpringBoot到函数计算

Serverless Devs

LeetCode-58. 最后一个单词的长度(java)

bug菌

Leet Code 每日一题 9月月更

技术分享| 基于RTM 实现的呼叫邀请如何添加推送功能?

anyRTC开发者

音视频 IM 实时消息 呼叫邀请 推送

iptables与firewalld防火墙是怎么样工作的呢?

阿柠xn

防火墙 Linux Kenel 运维‘ 9月月更

智能时代,操作系统的升维所面临的挑战_AI&大模型_刘寿永_InfoQ精选文章