本文参考小米澎湃OS白皮书V1.0,下载地址:cdn-file.hyperos.mi.com/hyperos-fil...
1. 前言
雷军作为一个程序员是懂技术的,但是又想挣快钱,不愿意像华为一样埋头搞难啃的底层骨头,例如芯片和OS内核。但是小米内部还是有很多优秀的程序员,毕竟有北京大量程序员的支撑还有资本发工资,如果说华为是搅屎棍(高质量+遥遥领先),那小米也来了个掀桌子(开源)。华为虽然优秀但是开源做的差,小米本来技术没华为强,那我开源总行了吧,本来就是抄了又改的,我都公开,你华为黑科技就捂着吧。当然华为和小米都是很好的公司,只是有些优缺点罢了,纯属个人胡扯。
关于小米澎湃OS的一部分介绍见之前文档:XXX。从程序员的角度看,当今手机可以可以说集聚了众多高科技领域的技术,下一步可能就是汽车上的,作为系统功能了解角度这份白皮书还是不错的,如果面对需求没有合适方案的时候,不妨过来查一查给点灵感,本篇篇幅有限,只大体介绍下有那些方面,对软件技术架构有兴趣的可以自己去看pdf文档。
2. 整体架构介绍
核心5分层:
- 应用层
- 跨端层
- 服务与框架层
- 内核层
- 硬件层
架构4个目标:
- 实现单端性能表现最强 ;
- AI 赋能,成为整个生态的"智能大脑",能够为用户提供主动服务;
- 更加便捷高效的连接;
- 实现全端隐私安全坚固防护。
系统内核层,我们将自研的 Vela 系统内核与深度修改的 Linux 系统内核进行融合,重构了性能调度、任务管理、内存管理、文件管理等各个基础模块,实现了性能、效率的大幅提升。这一全新的融合内核,支持 200 多个处理器平台、20 多种文件系统,还能根据硬件能力差异灵活配置,具有很好的兼容性,使得每个独立设备的性能都能得到彻底解放。
服务与框架层,我们将安卓的服务框架和自研 Vela 系统的服务框架,都作为"中间件"纳入其中;同时,全新打造了 8 大子系统,其中全新的 AI 子系统融合大模型能力,成为整个系统的"智能大脑",不仅可以让单设备实现极强的端侧 AI 能力,同时赋予整个生态智能能力。
HyperConnect 跨端层,则是彻底打破了硬件设备的隔阂,让所有设备可以统一连接协议,并且实时通信。让整个小米澎湃 OS 生态打通"任督二脉",每个设备如同感知世界的触角,像一张巨大的网一样连接一起,最终构建「人车家全生态」的智能世界。
2. 跨端层
• 分布式子系统:支持多设备之间的协同工作和数据共享,以提供无缝的分布式计算和 体验,从而提高用户体验和便利性。 • 跨端服务框架子系统:为应用程序提供一套丰富的服务和工具,以增强应用程序的功 能和性能,提供了一个多元化的应用程序服务平台。 • 跨端公共能力子系统:提供了标准化的开发工具和库,以支持开发者构建各种应用程 序和服务,有助于提高应用程序的可移植性和一致性,使开发者能够更轻松地开发和 维护跨平台的应用程序。 • 跨端应用框架子系统:提供一种轻量级的应用程序模型,旨在提供更快、更流畅的应 用体验,并减少了应用程序的安装和占用存储空间的需求。 • 跨端安全子系统:专注于提供安全性和隐私保护,以确保跨不同端设备之间的通信和 数据共享的安全性。
3.1 分布式子系统
跨设备总线:提供面向多设备互联、跨平台、面向异构网络的广播、发现、连接、传输能力。
• 广播:提供统一的广播发送功能,支持自定义广播,协议兼容。 • 发现:提供统一的、可复用的发现功能。 • 连接:提供统一的基于服务驱动的经典蓝牙,低功耗蓝牙,局域网,点对点等连接通信能力,支持多端连接、通道复用。 • 传输:提供面向服务的信息交换传输通道。
看上面的图是不是更新描述了我们的需求,可能有些人要说这些都不是代码,小米就忽悠我们。那我反问一句代码很重要吗?如果是一个架构师的角度,一方面是全盘考虑功能是否合理齐全,另一方面对某一种技术进行调研多种方案对比选优,这些都是研究代码的么,我们要超越代码。更重要的公司的产品设计,为客户创造价值。下面就那这像需求一样的白皮书来说说我们怎么去看。
首先你看到一个词:跨设备软总线,把这几个字输入到百度搜索:跨设备软总线开源代码,总能找到一些代码拿来抄的。或者搜索:分布式通信协议开源软件,都能调研到一些技术。
例如上面的这个无感连接,如果没有找到相关的开源代码,作为需求"感知"不就是发一条消息,我们在对应动作的软件的地方加上发一个消息就可以了,但是没听说过这个功能,那你的产品可能就不智能,不够市场竞争力。
例如这个分布式服务,可能你的系统里面不全,那就可以考虑缺少的部分是否有价值,如果有价值还是去研究下怎么通过技术手段实现,就是说你得有实现技术的架构能力,不懂就问AI:yiyan.baidu.com/
回归正题,下面的介绍就是全面不求细节了。
3.2 跨端服务框架子系统
这个感觉还是分布式实现的基础上实现的应用协议而已,从技术上没多大区别,但是从用户功能来看很强大好用。举个AI服务的例子:
3.3 跨端公共能力子系统
这个感觉还是分布式实现的基础上实现的API调用而已,一个特点是支持多语言。
例如对于账号在不同设备上的管理,共享需求很大,并且不同设备的代码语言实现不一样,OS也不一样,那就需要系统间的API交互:
3.4 跨端应用框架子系统
就是一个APP可以在多种设备上运行,那就用网页或虚拟机技术,各种设备上都支持,这个应该有很多开源框架的支持。
3.5 跨端安全子系统
认证安全很重要,方案也很多,做安全的需要了可以自己看看。
4. 系统服务与框架
• 资源调度子系统:负责合理、高效地分配和管理系统资源,以确保应用和任务能够流 畅运行。 • 网络子系统:旨在支持多设备、分布式、安全和高性能的网络通信,以满足不同设备 和应用场景的通信需求。 • 多媒体子系统:提供了处理多媒体内容(如音频、视频和图像)以及与多媒体硬件交 互的功能和服务。 • 图形子系统:负责管理和控制图形显示以及用户界面(UI)渲染,高性能和响应性的 • 硬件服务子系统:负责管理和控制硬件资源以及提供硬件访问和互动的功能和服务, 提供一致的硬件访问接口。 • AI 子系统:集成人工智能(AI)和机器学习(ML)技术,以提供更丰富、更智能、 更个性化的体验。 • 安全子系统:满足不同设备和应用场景的安全需求而设计,提供全面的安全性和隐私 保护,确保用户设备和数据的安全。 • 编译器与运行时:提供跨设备统一的编译器与运行时,确保应用单端运行性能最强, 同时保障跨端运行的一致性与安全性。
4.1 资源调度子系统
聚焦任务如何在硬件上进行管理和调度,主要提供三个关键能力,即:
- 抽象协同芯片硬件,释放硬件能力;
- 统筹管理资源供需,提升全局能效;
- 使能应用高效运行,提供生态入口。
传统的 CFS 调度,主要是面向桌面系统 / 服务器的调度策略,可以更好的兼顾交互应用与系统吞吐量之间的平衡。属于性能优先的调度策略,通过把任务近乎平均的分配到系统所有可用的 CPU 上,最大限度地提高系统的吞吐量,不会过多的考虑到系统的耗电问题,设计时主要针对的是 SMP 系统。CFS 并没有充分利用各个核的能效比、频率差来平衡性能和功耗,自然也不适用于有交互界面、场景复杂的手机操作系统。2012 年前后,ARM 推出了 big.little 处理器架构,来优化手机日常使用中的 CPU 能效。随后,Linaro与 ARM 联合提出了 EAS (Engry Aware Schedule) 调度算法,通过对原有的调度策略(选核,负载追踪,均衡等)做重新设计,打通了 CPU idle 管理子系统,CPU freq 子系统与调度之间的关联,以调度为核心,让 CPU 状态管理相关的几个模块紧密协作在一起,目标是在保证系统性能的前提下尽可能地降低功耗。
提到了很多种方案,可以开阔我们解决问题的思路。
这些技术名词感觉用上传统行业上的名词加上了学术名词玩的新词,妥妥的互联网文化啊,忽悠,套路,套路得人心。这跟写论文要有个好题目一样,现实就是这花活受欢迎。
4.2 AI 子系统
4.3 图形子系统
4.4 网络子系统
短距子系统主要负责设备之间近距离的通信,例如 WiFi、蓝牙、UWB、NFC 等。这些技术通过空气以电波或光波的形式传递信息,覆盖范围相对较小,但可以非常高效地传输大量数据。它们常被用于无线耳机、个人电脑、智能手机和打印机等设备的连接,以及在智能家居和工业自动化等环境中的设备间通信。
蜂窝子系统则负责远距离的通信,通过无线电信号在蜂窝网络中传输信息。常见的蜂窝网络包括 5G、4G、3G 和 2G 等。这类网络覆盖范围广,可容纳更多的设备同时通信,但数据传输速度相对较慢。它广泛应用于手机、平板电脑和移动设备等,为人们提供了无处不在的通信连接。
4.5 多媒体子系统
4.6 硬件服务子系统
4.7 编译器与运行时子系统
编译器与运行时子系统的职责是可依据目标产品的不同,实现可大可小的小米澎湃 OS,不仅支持子系统裁剪、模块裁剪,还实现了模块可按需选择不同类型的编译器与运行时,将不同模块的源代码(如 C、C++、Java、TS 等)转换成机器代码,并针对不同编程语言提供特定的、可靠的、高效的运行时环境
编译系统是基于 Ninja 和 Bazel 的现代化编译系统,设计了统一的产品配置模版,支持各种不同品类的产品配置其子系统及模块,编译时按配置文件自动选择正确的代码并编译目标系统,编译过程中采用了小米自研的并行编译技术、远程缓存算法,比传统的安卓构建编译快 5 倍
4.8 安全子系统
• 硬件安全和可信执行环境:小米澎湃 OS 的安全是基于一体化软硬件的平台,使用隔离的硬件资源结合可信执行环境构建整个系统的安全基石。 • 系统安全:基于信任根建立完整的安全启动链,确保系统可信,保护内核及网络通信,对设备进行管理控制,安全高效地更新系统软件。 • 身份认证与数据安全: 确保正确的用户才可以访问设备。基于小米澎湃 OS 设计的数据保护架构,在保障用户数据安全的同时,也提升了小米澎湃 OS 的易用性和便捷性。 • 应用安全:小米澎湃 OS 确保应用的安全运行及用户数据的安全性,同时也对各种恶意软件进行治理,保证用户的良好体验。 • 安全开放框架:小米澎湃 OS 开放各种隐私安全能力,与各方共建良好的生态,共同保护用户的隐私安全。 • 安全认证与隐私政策:小米在信息安全与隐私保护方面的总体原则、组织架构、安全与隐私认证、隐私政策以及持续改进机制。
5 系统内核
• Linux 内核:融合内核的标准化组件集,适用重载硬件资源的抽象与管理。 • Vela 内核:融合内核的轻量化组件集,适用轻量硬件资源的抽象与管理。
5.1 Linux 内核子系统
用了开源Linux的内核,但是肯定是要改改的,例如内存分配如下: 招聘内核专家的时候,可能问你内存分配优化的问题,看这里能不能找到答案。
5.2 Vela 内核子系统
Vela 的目标: IoT 技术领域的核心痛点就是碎片化,其本质是市场和需求的碎片化所带来的技术组件碎片化。碎片化带来软件的低复用、低效率、和低质量。Vela 的目标是提供标准化的软件平台,高效、高质量支撑小米 AIoT 亿级设备的开发和接入,降本增效,解决IoT 设备的碎片化问题
6 系统生态
开发者服务: • 开发平台:开发平台是一套工具和资源,旨在帮助开发者创建应用程序和服务,以运 行在小米澎湃 OS 操作系统上。 • 分发体系:小米澎湃 OS 的分发体系是一个多层次的策略,旨在将该操作系统部署到 各种不同类型的设备上,提供多样性的应用程序和服务,以满足不同市场和用户需求。
6.1 开发者平台
6.2 分发体系
免安装的应用
物联网生态对垒已经开始,智能手机已成为万物互联的重要中心,各厂商都在构建自己的物联网生态体系和标准。应用程序已从传统的单一手机应用逐步发展为多端异构设备下的垂直服务。服务的形态越来越趋向于免安装、独立入口和更加便捷。服务的原子化和多端多场景的智能分发,以及三方生态扩展,是应用服务分发的必然趋势。小米以小米澎湃 OS 操作系统为基础,服务卡片依托于 Andriod Widget 和 maml 实现,包括应用类服务、内容接口类服务、静态卡片类服务,一次开发多端支持(手机、平板、折叠屏);赋能开发者拓展场景未来,标准化接入新型应用生态。跨端应用服务框架和开发工具正在规划和研发中;在 2023 年完成多场景智能分发的开发
7 开源开放
在科技领域,开放和合作是不可或缺的核心价值观。我们坚信,只有通过共同努力和创新,我们才能不断推动科技进步,为用户创造更多的价值。小米澎湃 OS 的开源将是小米这一承诺的具体举措。
我们鼓励开发者参与到小米澎湃 OS 的开发和改进中来,共同打造一个更强大、更创新的软件平台。开源 小米澎湃 OS 的代码将提供给全球的开发者,让他们能够自由地探索、扩展和定制 小米澎湃 OS,创造出更多精彩的应用和功能。除了开源代码,我们还将发布 小米澎湃 OS 全球开放合作伙伴计划。
这个计划将为合作伙伴提供一系列支持和资源,包括技术培训、市场推广、生态合作等,以便他们更好地融入 小米澎湃 OS 的生态系统。我们欢迎各个领域的企业、创业者和开发者参与到这一计划中来,与我们一起构建一个开放、共赢的未来。
后记:
澎湃OS的一个大的OS概念,涉及的方案特别的多,工作中我们可能只负责一个方面的一个小模块,甚至几个人负责一个小模块,那么做方案的时候就可以就去搜索对应的关键字,或许有所帮助。写这个白皮书的肯定是技术能力超强的一线研发人员,三个臭皮匠赛过诸葛亮,此白皮书是一批架构师的杰作,主打突出一个知识展现,而且把先进的技术美化打磨后的输出,也就是写PPT的能力,可能咱一遍看不懂,多看几遍。
换句话说:天下文章一大抄,但是很多人是囫囵吞枣,不了解自己抄的知识,能用就可以,小米这个至少是抄完自己理解了,可以表达出来自己抄了什么,能说清楚也很牛了,就差下一步超越了。