鸿蒙操作系统设计原理与架构

978-7-115-64446-6
作者: 李毅任革林
译者:
编辑: 邓昱洲

图书目录:

详情

本书重点介绍了鸿蒙操作系统的设计背景、设计理念和设计原则,同时对鸿蒙操作系统的整体架构、关键子系统的架构设计思路进行了详细的解析。第1章~第3章对鸿蒙操作系统进行整体概述,重点介绍操作系统历史和鸿蒙操作系统诞生的技术背景、意图解决的主要技术问题,同时介绍了鸿蒙操作系统的设计理念、主要技术特征,以及部件化解耦架构。第4章~第16章介绍关键子系统,分门别类地阐述鸿蒙操作系统关键子系统的技术架构和主要设计思路,包括内核、方舟运行时、图形、媒体、驱动框架、各种分布式技术,以及安全、DFX 等方面的相关架构设计思路。 本书适合对操作系统感兴趣的开发者、鸿蒙操作系统生态的参与者、相关领域研究人员,以及相关专业的高校学生阅读和学习。

图书摘要

版权信息

书名:鸿蒙操作系统设计原理与架构

ISBN:978-7-115-64446-6

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

版  权

著    李 毅 任革林

责任编辑 邓昱洲

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内 容 提 要

本书重点介绍了鸿蒙操作系统的设计背景、设计理念和设计原则,同时对鸿蒙操作系统的整体架构、关键子系统的技术架构和主要设计思路进行了详细的解析。第1章~第3章对鸿蒙操作系统进行整体概述,重点介绍操作系统的发展和鸿蒙操作系统诞生的技术背景、试图解决的主要技术问题,同时介绍了鸿蒙操作系统的设计理念、主要技术特征,以及部件化架构原理解析。第4章~第16章介绍关键子系统,分门别类地阐述鸿蒙操作系统关键子系统的技术架构和主要设计思路,包括统一内核、驱动子系统、分布式技术、方舟编译运行时子系统、UI框架、图形子系统、多媒体子系统、安全子系统、DFX框架和文件管理的架构设计思路。

本书适合对操作系统感兴趣的开发者、鸿蒙操作系统生态的参与者、相关领域的研究人员,以及相关专业的高校师生阅读和学习。

新一代智能终端操作系统丛书

丛书编委会

主  编:李 毅

编  委:龚 体 高 泉 陈晓晨 朱 洲 

     朱 爽 柳晓见 杨开封 于小歧 

     陈 健 王长亮 戴志成 鲜余强 

     黄 然 任革林 万承臻 陶 铭 

     李 锋 陈秋林 李高峰

本书编委会

主  任:任革林

编  者:李 毅 李世军 万承臻 强 波 余枝强

     付天福 孙冰心 黄 然 李 煜 李 刚

     杜明亮 龚阿世 李勇彪 赵文华 张 亮

     易 见 王根良 李家欣 张勇智 朱佳鑫 

     黄节两 袁 博 陈 风 马尔利 徐 超 

     张 创 丁 浩 张 斌 黄慧进 黄海涛

     孙 斐 王 雷 崔 坤 孟 坤 史豪君

     李自勉 金俊文 高红亮 杜小强 方习文 

     闫永杰 李 煜 姚满海 张智伟 冒晶晶




注:编者中有两位李煜,分别是来自不同领域的专家。

丛 书 序

2023年2月,习近平总书记在中共中央政治局第三次集体学习时强调,“要打好科技仪器设备、操作系统和基础软件国产化攻坚战”。操作系统作为数字基础设施的底座,在信息技术体系中起着整合上层软件和底层硬件资源的重要作用。多年来,我国主要操作系统(包括桌面操作系统、服务器操作系统、移动终端操作系统、工控操作系统等)的市场一直被跨国巨头所垄断,相应的产业生态也受到严重的制约。在这种形势下,鸿蒙操作系统突破重围,脱颖而出,面向智能终端这一新兴领域,打造既不受制于人又面向未来技术发展趋势,既能应对复杂国际环境竞争又能服务于我国数字经济发展底座的国产智能终端操作系统,在操作系统和基础软件国产化攻坚战中走在前列,得到业界越来越多的关注和认可。

2023年CSDN发布的《2022—2023中国操作系统开发者调查报告》显示,鸿蒙操作系统是最具有代表性和市场影响力的操作系统之一,有接近90%的开发者了解鸿蒙操作系统,这一调查结果体现了鸿蒙操作系统在国内的主导地位和业界对华为公司的关注。鸿蒙操作系统在国家建设科技强国的关键历史时期应运而生,为我国的软件产业生态发展提供了机遇。早年,华为公司将技术保底扎根于操作系统,这是极有远见的。因为操作系统是软硬件资源的分配者,它下接终端、上承应用,是信息时代不可或缺的根技术。人们应该还记得,20世纪80年代末,日本开源架构的PC系统TRON刚一露头就遭美国遏制,韩国和欧洲各国也因各种原因错过了本土操作系统的发展时机。过去,我国信息技术领域存在“重硬轻软”的倾向,我们错过了早期与发达国家同赛道竞争的时机。而今,国产操作系统整体的研发、推广环境,遇到的境况与当时的TRON相比,还多了生态支撑不足这一问题。可见,要攻下操作系统这一难关,不仅需要足够的远见,更需要不问结局、不计输赢的无畏实干。

“新一代智能终端操作系统丛书”由长期从事鸿蒙操作系统设计和研发的团队核心成员编写,他们是鸿蒙操作系统的缔造者和培育者。丛书以操作系统发展的历史规律和产业需求为导向,讲述鸿蒙操作系统的设计原理及设计思路,并介绍北向应用开发和南向智能设备开发。本丛书重点介绍鸿蒙操作系统关键技术的运作原理及相关的架构设计,适合对鸿蒙操作系统感兴趣的科研人员、软件架构师、软件工程师、高校教师和学生阅读。鸿蒙操作系统的诞生对我国科技强国建设具有特殊的意义,本丛书也将记录这其中的一分努力。

再好的种子,要成长为参天大树,也需要大众无微不至的关心与呵护。2022年9月,习近平总书记在中央全面深化改革委员会第二十七次会议中强调,“健全关键核心技术攻关新型举国体制,要把政府、市场、社会有机结合起来,科学统筹、集中力量、优化机制、协同攻关”。鸿蒙操作系统经过多年的深耕,已经具备构建我国信息技术领域根技术和数字经济技术底座的能力,现在是厚积薄发、开拓市场的时候了。希望通过本丛书的出版和传播,各界能更加重视鸿蒙操作系统,对其给予更多的认同和支持;希望通过鸿蒙操作系统的开源,全球开发者和广大伙伴能更踊跃地协同共建OpenHarmony社区,促进鸿蒙生态枝繁叶茂;希望高校和科研院所能做好鸿蒙操作系统的人才培养,为国产操作系统及其生态的可持续发展提供坚实的支撑。

中国工程院院士 倪光南

2024年5月

前  言

操作系统伴随着计算机技术的发展而不断演进。当前,人类正从信息社会迈向智能社会,在背后支撑这一巨大转变的是计算机软硬件技术的快速发展,这也为下一代操作系统的诞生创造了条件,同时也提出了新的要求。

操作系统是连接计算机硬件和软件的桥梁,在计算机系统中处于非常重要的位置。在计算机世界里,硬件资源之间、软件资源之间,以及硬件资源和软件资源之间的基本交互逻辑,需要依靠操作系统进行定义和抽象。同时,人和计算机之间、计算机和计算机之间的基本交互逻辑也需要依靠操作系统进行定义和抽象。计算机硬件厂商需要按照操作系统定义和抽象的接口来设计与操作系统的交互,从而完成与其他计算机硬件和软件之间的交互。同理,计算机软件也需要按照操作系统定义的API(Application Program Interface,应用程序接口)完成与操作系统的交互,从而达成与计算机硬件及其他软件之间的交互。

2019年8月9日,华为开发者大会正式发布鸿蒙操作系统(HarmonyOS)。鸿蒙操作系统被定位为面向全场景、全连接、全智能时代的下一代智能终端操作系统。

操作系统诞生以来,基于丰富的应用经验,已形成了一套较完备的理论体系。鸿蒙操作系统在该理论体系的基础上,结合我国多年的产业化经验,参考学术界的最新研究成果,完成了基础架构设计。鸿蒙操作系统通过架构解耦,可弹性部署在不同形态的设备上;通过极简开发与一次开发、多端部署,为用户提供多种终端设备上的一致使用体验;面对多设备场景,支持应用在不同的设备之间自由流转,提供智慧协同的全新体验。可以看出,鸿蒙操作系统在设计理念上突破了传统单设备操作系统的设计假设和约束,是万物互联时代智能终端操作系统领域的一次大胆探索。

2020年9月,开放原子开源基金会接受华为贡献的智能终端操作系统基础能力相关代码,随后进行开源,并根据命名规则将该开源项目命名为OpenAtom OpenHarmony(简称OpenHarmony)。

OpenHarmony开源以来,国内外众多芯片厂商、设备厂商积极对其进行适配,发布各种开发板、操作系统发行版和设备,厂商们需要更深入地理解鸿蒙操作系统的设计逻辑。当前,我国已有200多所高校开设或正在筹划开设鸿蒙操作系统相关课程或实验,高校教师需要一套系统的参考资料用于编写鸿蒙操作系统相关教材。另外,众多应用开发者在各种论坛探讨鸿蒙操作系统的相关技术,互相解答问题。学术界和工业界均希望鸿蒙操作系统设计团队能提供一套详细论述鸿蒙操作系统设计理念的图书,作为教学和讨论的基础。

本书重点介绍鸿蒙操作系统的设计原理与架构,适合对鸿蒙操作系统实现原理感兴趣的专业人员阅读。本书不是操作系统入门参考书,不会着重展现技术实现细节,建议读者对操作系统基础知识有一定了解后再阅读本书。

鸿蒙操作系统不是一成不变的,会根据开发者的反馈进行持续优化,建议读者参考OpenHarmony社区资料和代码以加深对鸿蒙操作系统架构的理解,并及时跟踪鸿蒙操作系统的演进。

本书由鸿蒙操作系统设计团队的核心成员集体创作,主要贡献者如下:李毅、任革林、李世军、万承臻、强波、余枝强、付天福、孙冰心、黄然、李煜、李刚、杜明亮、龚阿世、李勇彪、赵文华、张亮、易见、王根良、李家欣、张勇智、朱佳鑫、黄节两、袁博、陈风、马尔利、徐超、张创、丁浩、张斌、黄慧进、黄海涛、孙斐、王雷、崔坤、孟坤、史豪君、李自勉、金俊文、高红亮、杜小强、方习文、闫永杰、李煜、姚满海、张智伟、冒晶晶。感谢各位作者、专家的辛苦付出。

非常感谢以下专家为本书提供非常专业的评审建议:龚体、陈海波、高泉、于小歧、陈健、王长亮、戴志成、鲜余强、高涵一、张明修、张栋、赵金勇、杨妮、代育红、陶铭、李红前、黄湘媛、沈芬、张志军、任晗、凌铭、时睿、吴昊、周英玉、白海丽、段夕超、黄海涛、鲁志军、兰守忍、周耀颖、谭景盟、赵志山、廖智琪、王再尚、刘斌、闫夙丹、耿晓东、崔坤、林洪亮、周杰、胡笑鸣、吴江铮等。

同时感谢人民邮电出版社科技出版中心总经理王威、学术分社副社长韦毅对本书出版的支持。感谢人民邮电出版社编辑团队的辛苦付出。

对于为本书做出贡献但没有列出名字的专家,在此一并表示感谢。由于编者水平有限,本书内容可能存在值得商榷之处,欢迎读者批评指正。

第1章 操作系统的发展史和演进

本章回顾了操作系统的发展史和演进,基于操作系统应用的产业场景和解决的主要问题将其划分为三代。当前,计算机硬件和用户程序越来越复杂,业界正在逐步构筑新的计算机体系结构。同时,IoT(Internet of Things,物联网)发展进入了一个新的历史阶段,万物互联时代将出现诸多挑战,这为新一代操作系统的诞生创造了条件。本章最后介绍下一代操作系统的关键特征,例如模块化、虚拟化、多模态交互、分布式、智能化和安全等。

1.1 操作系统概述

计算机系统由软件和硬件组成,其中软件由一系列按照特定顺序组织的数据和指令构成,而硬件一般由芯片、器件及电路等组成。软件需要运行在硬件上,硬件需要有可运行的软件才能发挥其功能,软件和硬件只有互相协作才能完成实际的工作。在计算机科学中,软件是指计算机系统处理的所有信息,包括程序和数据。

计算机软件可以进一步划分为用户程序、系统软件(System Software)和介于两者之间的中间件。用户程序一般针对某一特定业务提供特定功能,系统软件一般为计算机提供最基本的通用功能,包括操作系统、数据库管理系统、编译器、解释器等面向开发者的软件。常见的系统软件分类如表1-1所示。

表1-1 常见的系统软件分类

系统软件分类

描述

OS(Operating System,操作系统)

负责控制与管理计算机硬件、软件资源,提供通过用户操作接口与计算机硬件交互的计算机程序;计算机软件必须在操作系统的支持下才能运行。常见的操作系统如Linux、Windows、Android等

DBMS(Database Management System,数据库管理系统)

DBMS支持以一定方式将数据存储在一起,支持多个用户共享,具有尽可能小的冗余度,与用户程序彼此独立。常见的数据库管理软件如SQL、Oracle等

编译器(Compiler)

将“一种语言”(通常为高级语言)翻译为“另一种语言”(通常为低级语言)的程序。例如GCC(GNU Compiler Collection,GNU编译器套件)、Clang等

解释器(Interpreter)

能够边解释边执行解释型语言,不需要编译就可以运行程序

链接器(Linker)

将编译器或汇编器(Assembler)产生的目标文件和外部程序库链接为一个可执行文件

加载器(Loader)

负责将程序加载到存储器中,并配置相关参数,使其能够运行

驱动程序(Driver)

负责让计算机和设备进行通信的程序,操作系统一般通过驱动程序来控制硬件设备

操作系统作为系统软件的集大成者,一般会内嵌数据库和语言运行时(解释器、加载器),同时提供驱动程序和用户程序的开发工具,包括驱动程序/用户程序开发环境、编译器、链接器等。

操作系统在其早期阶段主要表现为批处理系统,每类设备都需要定制化的操作系统。计算机科学家通过对ISA(Instruction Set Architecture,指令集体系结构)的定义,首次将计算机处理器架构与实现解耦,与此同时,也将操作系统与CPU(Central Processing Unit,中央处理器)等硬件解耦,这为操作系统从专用走向通用奠定了技术基础。在大型机时代,首先需要解决的问题是多个用户如何同时操作同一台计算机。为解决此问题,操作系统引入了分时、多任务、文件系统、动态链接等概念。操作系统对计算机的快速发展和普及做出了不可磨灭的贡献,经过多年的探索和实践,其基础理论和技术已经基本成熟,但仍在不断发展和持续演进中。

1.2 操作系统的发展史

从某种意义上说,操作系统的发展史就是计算机硬件和软件的发展史,它的发展与计算机硬件体系结构、软件技术的发展密不可分。特别是几次产业浪潮,极大地促进了操作系统的快速发展和普及。

ENIAC(Electronic Numerical Integrator And Computer,电子数字积分计算机)被认为是世界上第一台通用计算机。它基于二进制的真空管技术,可编程并执行复杂的操作序列(操作序列中可以包含循环、分支和子程序)。实际上,早期的计算机是没有操作系统的,经过培训的计算机操作员通过记录程序和数据的卡片来操作机器,这通常需要花费几个星期的时间。随着硬件和用户程序越来越复杂,对计算机的操作变得更加复杂。后来,用每个程序都需要的输入和输出等公共操作组成了统一的代码库,这也被认为是操作系统的雏形。1956年,美国通用汽车公司和北美航空公司推出世界上第一个可用的操作系统GM-NAA I/O,在随后几十年间,操作系统跟随计算机技术的蓬勃发展而不断演进,多次推动信息产业浪潮的发展,如图1-1所示。

1. 第一代计算机阶段(1945—1955年):真空管

在这个阶段,汇编语言还没有出现,所有的程序设计都用机器语言直接操控硬件,还没有形成操作系统的概念。程序通过打孔的形式被记录在卡片上,计算机通过读取这些卡片来处理计算任务,输出的数据也通过卡片呈现。对于一些复杂的任务,卡片的数量高达数百万张,可以想象,操作第一代计算机是一件非常费时费力的事情。

图1-1 操作系统与产业浪潮的相互促进

2. 第二代计算机阶段(1956—1965年):晶体管

晶体管的发明使计算机的可靠性获得了极大的提升,计算机第一次可以做到长时间无故障运行。1957年,IBM公司开发出Fortran语言,它是世界上第一个被正式采用并流传至今的高级编程语言,我们常说的编译、链接、函数库等计算机基础概念在这个阶段已经被提出并实现。程序员负责写程序,编码员负责在卡片上打孔,操作员负责把卡片输入计算机。为了减少计算机输入和输出时间,工程师们设计出一种用于专门处理卡片输入和输出且造价较低的计算机。它的处理思路是先用一台计算机从卡片中读取数据输入磁带;然后操作员通过一个批处理系统读取磁带中要处理的任务,并运行该任务;任务完成后将结果输出到另一个磁带中;接下来读取并运行下一个任务、输出任务结果,如此循环往复。这里提到的批处理系统就是操作系统的雏形,然而它还不是真正意义上的操作系统。

批处理系统的主要设计思想浓缩进了被称为监控程序(Monitor Program)的软件中。批处理系统的工作过程如下。

第1步,计算机的控制权由监控程序掌握。

第2步,监控程序从输入设备中读取一个任务,然后把任务放置在用户程序区域,并把控制权交给用户程序。

第3步,执行用户程序,当用户程序执行完成后,监控程序再次获取计算机的控制权,返回第2步执行下一个任务。

相比操作员而言,监控程序可以“无等待”地读取任务、执行任务,再读取任务、执行任务,计算机的利用率得到有效提升。

看到这里,也许您会心存疑问:当用户程序运行完成后,监控程序通过什么可以再次获取计算机的控制权?如果用户程序是一个恶意程序或存在bug,长时间无法运行完成,或者不主动释放控制权,监控程序如何才能获取控制权?

实际上,仅靠软件本身是无法确保监控程序总是可以获取控制权的。在计算机的世界里,当软件无法解决问题时,我们还可以依靠硬件来解决,操作系统更需要硬件的帮助。在第二代计算机阶段,计算机硬件厂商为操作系统提供如下重要功能。

内存保护(Memory Protection):监控程序的内存空间受硬件保护,一旦检测到用户程序试图更改监控程序的内存空间——不管是有意的还是无意的,CPU的控制权直接转移给监控程序。内存保护一般采用内存分段(Segmentation)的方式,物理内存被系统分割成许多小的分段,操作系统对需要保护的分段进行特殊标记。

定时器(Timer):用户程序接管控制权后,定时器会自动启动。如果定时器时间到了而用户程序仍未运行完成,控制权会被强行交还给监控程序,监控程序会强行终止用户程序。

特权指令(Privileged Instruction):只能由监控程序执行、不允许用户程序直接执行的指令会被系统设置为特权指令,例如I/O(Input/Output,输入输出)指令。如果用户程序想要执行特权指令,可以请求监控程序为自己执行这个指令。特权指令就是为监控程序而设计的,毕竟,只有拥有较高权限的一方才能管控拥有较低权限的一方。

从现代操作系统的角度来讲,批处理系统已经具备基本的任务调度能力,它可为计算机系统提供一个自动任务处理序列。从用户的角度来看,批处理系统已经把CPU的处理时间完全占满;但从CPU的角度来看,CPU经常“忙里偷闲”。因为访问 I/O设备仍然需要较长时间,其间,CPU长期处于空闲状态。I/O访问的速度相对于CPU的处理速度要慢很多,CPU需要完成I/O操作,才能接着执行其他指令。因此,如何更充分地利用CPU就是操作系统要解决的问题,我们常说操作系统的发展史就是对CPU的“压榨史”,这不无道理。在这个阶段,有一件事情不得不提,1963年,康威定律的提出者康威博士发表论文“A Multiprocessor System Design”,正式提出 fork思想,从而实现多处理器并行。从那之后,操作系统的设计大都采用了该思想。

从操作系统发展的角度来看,这个阶段的计算机硬件成本很高,编程语言尚处于雏形期,操作系统与硬件深度耦合,其主要目标是追求较高的硬件使用效率。

3. 第三代计算机阶段(1966—1990年):大型机、小型机

使用集成电路使计算机硬件技术产生了质的飞跃,低成本、小型化、专业化的计算机层出不穷。与这些计算机对应的操作系统也各种各样,每一个操作系统都有自己的操作过程和调试工具。设备厂商每生产一类新的机器都会配备一套新的操作系统。20世纪60年代IBM开发出System/360系列计算机,与前面介绍的设备不同,这些计算机拥有统一的操作系统——OS/360。

前面提到,I/O访问常常需要占用较长的时间,对于批处理系统,在这段等待时间里,CPU只能“无所事事”。如何让CPU忙起来?多道批处理系统就是计算机科学家的一种尝试。一旦有一个任务需要等待 I/O访问,多道批处理系统就立刻切换到另一个不需要等待 I/O访问的任务,I/O访问结束后,再切换回原来的任务继续处理。多道批处理系统也叫多道程序设计(Multiprogramming)或多任务处理(Multitasking),其核心思想是尽可能让更多的任务运行起来,竭力不让CPU闲着。您可能会问,控制权已经交给另一个任务,当I/O访问结束后怎么切换回原来的任务?像批处理系统一样,多道批处理系统也必须依赖计算机硬件功能,具体来说,就是支持 I/O 中断(Interrupt)。当 I/O访问结束后,一个中断信号会被发送给CPU,且该信号有较高的权限,CPU收到后必须暂停当前正在运行的任务,转而处理该任务。在多道批处理系统里,这表现为CPU控制权被转移给多道批处理系统的中断处理程序。可以说,没有中断就没有现代操作系统。

多道批处理系统已经具备现代操作系统的一些基本思想,在批任务处理场景中可获得较高的CPU利用率。随着需要处理的任务越来越多,以及不同的用户需要同时处理不同的任务,小型机应运而生。和大型机使用多道批处理系统不同,多个用户需要频繁地和小型机进行交互,CPU等待的时间主要花费在与用户的交互上。如何更好地处理与用户的交互问题是操作系统首先需要解决的问题,为了解决这个问题,交互式操作系统诞生了。交互式操作系统问题的解决思路是“分时”,即操作系统控制每个用户程序以很短的时间为单位交替执行。人类的反应速度主要取决于人的感官(如眼睛、耳朵、皮肤等),以及中枢神经系统与肌肉之间的协调关系。没有受过专门训练的人的反应时间通常为0.2~0.3 s,而一个训练有素的运动员的反应时间通常为0.1~0.2 s。因此,只要将用户程序对每个用户当前交互操作的响应时长控制在0.1 s以内,几乎所有用户就会感觉自己独占了这一台计算机。分时操作系统通过时钟中断切换用户程序,例如每10 ms向CPU发出一次中断信号,要求系统调度用户程序。

在第三代计算机阶段,具有现实意义的操作系统的概念被首次提出,多道批处理系统、分时操作系统、MULTICS(Multiplexed Information and Computing Service,多路信息与计算服务)等概念被操作系统的先驱们一一探索。MULTICS属于分时多任务操作系统,它帮助程序员调试程序。当然,受限于当时计算机的硬件能力和高昂的价格,相关产品无法大规模商用落地,但商业上的失败并不能掩盖MULTICS对操作系统演进的巨大贡献。20世纪70年代,继承了MULTICS关键思想的UNIX操作系统诞生了。

UNIX操作系统是一个强大的多用户、多任务操作系统,可支持多种处理器架构。从操作系统的分类上说,UNIX操作系统属于分时操作系统。UNIX简洁至上的设计原则,也被称为KISS(Keep It Simple, Stupid,在设计中应当注重简约)原则,UNIX提供机制而非策略的设计理念吸引了一大批计算机软件技术人员。这些设计原则和设计理念对后续操作系统及大型软件系统的设计产生了持续和深远的影响。

操作系统的繁荣发展催生了UNIX的多个变种(如BSD和System V)。为了使用户程序能够在不同版本的UNIX上运行,POSIX(Portable Operating System Interface,可移植操作系统接口)诞生了。它定义了操作系统必须支持的一组系统调用接口,于1985年由IEEE(Institute of Electrical and Electronics Engineers,电气电子工程师学会)首次提出,目前已被大多数操作系统支持。

第三代计算机出现的时代是计算机技术发展的第一个黄金时代,硬件层面出现了集成电路,软件层面创造了操作系统。操作系统的时代已来临,这一阶段的主流操作系统被称为第一代操作系统。

需要指出的是,这个阶段的操作系统的目标人群仍是有一定计算机基础的技术人员,人机交互方式也不够友好,如何提升技术人员工作效率和解决特定领域的技术问题是彼时操作系统需要重点解决的。

从操作系统技术发展的角度来看,计算机硬件成本逐渐降低,编程语言快速发展,操作系统的设计目标主要是与硬件解耦,并逐渐形成独立的理论体系。进程、调度、任务管理、内存管理、虚拟地址、多用户、并发等操作系统的核心概念都是在这个阶段提出并不断得以实践的。通用、可靠、稳定和安全是这个阶段的操作系统的主要研究方向。现代操作系统理论的基本框架在这个阶段基本奠定,为后续操作系统的快速发展打下了坚实基础。

4. 第四代计算机阶段(1991年至今):PC及云主机

随着集成电路集成度的大幅度提升,计算机微型化从理论变成现实,计算机迎来了第一个大繁荣时代——PC时代。

第四代计算机阶段的代表操作系统有MS-DOS、Windows、macOS和Linux。和第一代操作系统相比,它们具备更好的用户交互接口,通过引入GUI(Graphical User Interface,图形用户界面)和鼠标,极大降低了计算机操作的复杂性。计算机由此大规模进入商业公司、政府部门和千家万户。1985年,微软公司推出了以GUI为主的Windows操作系统,并最终获得了PC操作系统的主导地位。20世纪末互联网的兴起使PC迅速在全球范围内普及。2005年,全球使用互联网的人数创下纪录,达到10亿。梅特卡夫定律指出,一个网络的价值等于该网络内的节点数的平方,而且该网络的价值与联网的用户数的平方成正比。也就是说,一个网络的节点数和使用该网络的用户数越多,整个网络和该网络内的每台计算机的价值就越大。PC进入千行百业,催生了操作系统更多的应用场景,操作系统因此在多个领域有了长足的发展,下面列举几个主要领域做简要说明。

计算机图形学(Computer Graphics)。计算机图形学主要研究在计算机世界中表示图形、存储图形、处理图形和显示图形的相关原理与算法。利用计算机绘制出与现实世界接近的图像,以给人视觉上更加逼真的感受,是计算机图形学一直努力的方向。自计算机图形学创立以来,各种图形技术层出不穷,如GUI、坐标转换与光线跟踪、材质贴图、顶点混合、纹理压缩和凹凸映射贴图、3D渲染引擎等。图形处理涉及大量的图形计算任务,专为通用计算和逻辑处理而设计的CPU对此显得力不从心,GPU(Graphics Processing Unit,图形处理单元)应运而生。GPU是一种特殊类型的处理器,具有数百个、数千个甚至更多的内核,通过并行运行内核来处理大量计算任务。在进行三维绘图时,GPU的工作比CPU更高效。计算机图形学在计算机发展史中的地位不管怎么浓墨重彩地描述都不为过。可以说,没有计算机图形学,就没有现代计算机,也没有互联网和电影特效,计算机也不会进入普通人的生活。

计算机存储系统(Computer Storage System)。计算机存储系统的核心是存储器。存储器是用来存储程序和数据的设备。现代计算机系统中常采用由寄存器、高速缓存、主存、外存等组成的多级存储架构。采用多级存储架构的主要目的是让存取速度、存取容量、存储器成本和易失性等多种因素之间取得平衡。操作系统需要设计适当的算法,利用数据访问的局部性原理,在不同层级访问速度存在数量级差异的情况下达到存取性能和成本的最佳平衡。在操作系统中,通常把需要持久化的一组数据抽象为一个文件,操作系统提供打开文件、关闭文件和读写文件等基本接口。对文件进行操作时,用户程序不需要关心数据存储在存储器上的具体物理位置,数据在存储器上的存储位置由操作系统的文件系统统一管理;操作系统也不用理解数据的具体格式,数据的具体格式由用户程序定义和解析。计算机存储系统在云服务器领域被称为DFS(Distributed File System,分布式文件系统),它通过计算机网络技术,将分散在多台机器上的存储资源组成一个虚拟的存储设备。通常,DFS的元数据非常多,元数据的存取性能是整个分布式文件系统性能的关键所在。

计算机网络(Computer Network)。计算机网络是指计算机设备通过有线或无线的传输介质,通过节点之间的链路连接互相交换数据和分享数据的数字通信网络。计算机网络把孤立的计算机连接在一起,使单台计算机可访问的数据范围被极大地扩大。连接在互联网上的计算机变为一个可访问海量信息的客户端,通过该客户端,人们可以进行信息共享、软件共享和硬件共享。

分布式系统(Distributed System)。分布式系统是指将物理上独立的一组计算机通过计算机网络连接在一起工作的软件系统。该软件系统支持管理所有节点的软硬件系统资源,能够控制分布式程序的运行和状态共享,并可以执行并发操作。

除上述领域外,编程语言、运行时和媒体处理等被引入操作系统并迅速发展壮大。另外,GPU和其他硬件加速器的出现,使原本以CPU为核心的操作系统不得不做出改变。

在这个阶段,Windows和macOS在桌面操作系统中占有统治地位,它们较好地解决了用户通过鼠标与计算机设备进行图形交互的问题,同时也解决了个人用户在计算机中使用相关的图形、多媒体、网络和Web等的技术问题。Linux在嵌入式设备、超级计算机,尤其在服务器领域确定了其不可挑战的地位,它是一种自由和开放源码的类UNIX操作系统。从技术角度来看,Linux实现了系统与网络通信一体化,并因其低廉的使用成本及对大量硬件的适配支持而“独步江湖”。

这个阶段的操作系统被称为第二代操作系统,和第一代操作系统相比,使用鼠标等更自然的交互方式被引入,同时TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)等通信技术也被预置到操作系统中。操作系统的交互性更加友好,为办公数字化、个人娱乐和互联网技术的发展做出了重要贡献。操作系统的目标人群不再局限于计算机相关的技术人员,经过简单培训的普通人员也可以操作计算机。操作系统交互性的提升促进了用户程序生态的丰富,用户程序生态的丰富则推动了PC更大范围的普及。办公软件、影音娱乐、游戏、浏览器、工业软件、企业管理软件、数据库软件等加速了各行各业的数字化改造进程。用户程序的传播方式非常灵活,譬如可通过光盘、网络下载、磁盘复制等进行传播,但第二代操作系统缺少对用户程序的统一管理,仿冒、安全木马、盗版等各种问题层出不穷。

从操作系统技术发展的角度来看,操作系统进入快速发展期,相关理论基本完善,PC成为市场的主角,人机交互、网络技术、安全、兼容性等成为操作系统追求的主要目标。

5. 第五代计算机阶段(2007年至今):移动计算机

移动通信在近30年蓬勃发展,给人们的工作、生活和学习带来了极大的便利。特别是3G、4G数据业务速率的不断提高,使互联网从桌面设备拓展到移动设备。美国苹果公司准确预判了移动互联网可能带来的巨大的发展机会,于2007年推出轰动一时的iPhone手机,该手机搭载iOS系统,给用户带来了前所未有的交互体验。用户不再需要通过触控笔和传统键盘的输入方式来操控移动设备,而是可以通过更自然的方式来操控,譬如通过手指触摸的方式在显示屏幕上(实际上是在触摸屏上)做出点击、滑动、多指触控等动作;也可以通过摇一摇、旋转设备等来跟系统交互。紧随其后,美国谷歌公司推出了开源的Android系统,微软公司也推出了Windows Phone系统。

更自然的交互方式大幅降低了操作系统的使用门槛,极大拓展了移动设备使用人群的范围,几乎人人都可以操作移动设备。庞大的移动设备用户群体也促进了应用生态从桌面计算机向移动设备的大规模迁移。移动设备集成了更多的传感器,应用开发者通过丰富的传感信息创造出形形色色的、更有创意的应用程序。

第五代计算机阶段的操作系统的典型代表是iOS和Android,人们通过移动设备不仅可以浏览网页和阅读电子书,还可以体验移动商务、移动视听、即时通信、手机游戏和移动支付等业务,移动终端操作系统深刻地改变了信息时代人们的生活方式和工作方式。这个阶段的操作系统被称为第三代操作系统。从技术上讲,这个阶段的操作系统更强调用户的交互体验,引入了更多的外围设备和传感器;为了使移动设备有更长的续航时间,操作系统提供了强大的功耗管理能力;随着移动设备上承载的用户数据的增加,操作系统在安全和隐私保护方面进行了进一步加强;为了方便用户安全地下载第三方应用,集中式应用生态分发体系诞生了。当然,这些都离不开移动设备计算能力的大幅提升和功耗的下降,以及通信技术的快速发展和传感器技术的逐步成熟。

从操作系统技术发展的角度来看,操作系统理论日益完善。操作系统设计中与硬件相关的部分比重越来越小,其设计重心从南向硬件生态逐步向北向应用生态迁移。操作系统可以独立支撑起一个庞大的软件产业,并从单纯地追求高性能逐渐发展到追求更高能效比,UX(User Experience,用户体验)在操作系统设计中的权重越来越大。

1.3 下一代计算机体系结构

回顾计算机技术的发展历程,可以发现计算机体系结构和计算机硬件依赖的半导体技术是推动计算机技术快速发展的动力。

20世纪60年代,最大的磁存储系统只能存储1 MB的信息,该存储系统不仅像机房那样庞大,而且访问速度慢、功耗高。1966年秋天的一个晚上,34岁的IBM电气工程师鲍勃·登纳德灵光乍现,他想用一个晶体管来存储1 bit的数据。如果这个想法成为现实,只需要使用极少的电量反复刷新晶体管就能够留住电荷,从而维持数据的存储。现在,我们知道登纳德发明了计算机存储系统中的DRAM(Dynamic Random Access Memory,动态随机存储器)。1974年,登纳德提出了著名的登纳德缩放(Dennard Scaling)定律,该定律指出,随着晶体管密度的增加,每个晶体管的功耗会下降,因此他预言每平方毫米硅的功耗几乎是恒定的。在很长的时间里,某代半导体产品的工作频率会比上一代产品提高40%,而同样空间可容纳的晶体管数量会比上一代产品增加一倍。计算机体系结构使用各种创新技术来利用快速增长的晶体管资源,提高了CPU的性能,减小了内存访问速度和CPU处理速度之间的差异给系统带来的性能损失。在过去几十年里,摩尔定律一直发挥着作用,在不增加成本的情况下,计算机性能呈指数增长。正如登纳德所言,“缩放终究会结束,但是,创造力永无止境”。登纳德缩放定律从2007年开始逐渐失效,工艺提升不再能保证功耗不增加,2012年该定律基本被终结。计算机体系结构的对比如表1-2所示。

表1-2 计算机体系结构的对比

对比项

2010年前的体系结构

2010年后的体系结构

登纳德缩放定律

单芯片功耗几乎是恒定的

工艺提升不再能保证功耗不增加,业界无法接受芯片功耗随芯片晶体管数量增加而增加

摩尔定律

每 18 个月晶体管数量提高一倍,成本基本不变

进入“后摩尔定律时代”,预计2030年左右摩尔定律将面临终结

可靠性

晶体管较可靠,具备纠错机制如ECC(Error Checking and Correction,差错校验和纠正)机制

晶体管可靠性下降,ECC机制在某些场景下不再有效

计算能力

单核计算能力不断提升

计算能力通过多核和异构多核实现。核之间、芯片之间、设备之间的驱动全局总线能力提升缓慢

体系结构

使用通用计算平台,一次性投入大,可通过海量用户分摊成本

不同领域具备不同体系结构,软硬件协同设计、能效提升明显。下一代计算机体系结构的重心更接近物理层,譬如模拟计算、量子计算、DNA计算、超导逻辑、碳纳米管处理器均依赖物理层的技术革新

虚拟化技术

虚拟化技术处于起步阶段

软件不感知硬件的替换,较低的价格使用户可以超额认购资源

垂直化技术

逻辑处理和数据存储分离

内存与高性能逻辑处理功能集成在一起,譬如NDC(Near Data Computing,近数据计算)和PIM(Processing-In-Memory,存储器内嵌处理器)架构

体系结构作为计算机系统的基础架构,正在经历从独立计算到分布式部署的上下文计算的转变。这种转变要求通信和计算并重,性能、隐私与安全、可用性和能耗并重。并行性、专用化及跨层次设计成为“能量优先时代”的关键原则。

长期以来,用户程序开发人员不需要关注底层技术就能轻易获得计算机体系结构革新等给应用软件开发带来的各种好处。一方面,计算机提供更高的性能,使实现那些有更多计算需求的用户程序(如AI、AR、VR等)变得可能;另一方面,通过支持更高层的编程抽象(如脚本语言、编程框架),使那些对性能要求不高的用户程序更容易开发。随着下一代体系结构的重心更接近物理层,可能必须要求一部分用户程序具备感知底层硬件的能力,这对下一代计算机体系结构提出了如下新的要求。

新的系统资源管理方式:以前的操作系统更强调系统资源对用户程序的透明性,对部分性能要求不高的用户程序而言,这种处理方式是合理的;但对另一部分性能要求较高的用户程序而言,可感知系统资源的具体差异更有助于用户程序以更好的方式使用硬件资源。

新的用户程序开发方法和编程模型:当前的用户程序开发以CPU为核心,编程模型以同步编程模型为主。随着多核、异构多核设备的普及,需要提供让用户程序在多形态设备上可以并行运行的方案,譬如感知底层领域体系结构的新的特定编程模型。

异构计算、异构存储:因为散热和能耗的原因,通过提升CPU时钟频率和内核数量来大幅提高计算能力的传统方式遇到瓶颈。针对不同的计算类型,CPU、GPU、NPU(Neural network Processing Unit,神经网络处理器)、TPU(Tensor Processing Unit,张量处理器)、IPU(Image Processing Unit,图像处理器)、DSP(Digital Signal Processor,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field Programmable Gate Array,现场可编程门阵列)等用于特定领域的加速器不断涌现。这些异构计算单元要求操作系统能够基于算力、性能、功耗、并发等多种因素提供综合调度能力。因NVRAM(Non-Volatile Random Access Memory,非易失性随机访问存储器)、SCM (Storage Class Memory,存储级内存)、PIM等新存储架构的出现,传统分层存储体系的部分存储层级关系变得模糊,这要求操作系统能够更好地支持新型异构存储,提升存取性能。

支持多种指令集:不同的计算单元可能使用不同的指令集,这需要操作系统运行时能够针对不同计算节点编译出不同指令集的二进制代码。

并行计算对操作系统的要求是既要考虑用户程序的具体特征,又不能过分“迎合”用户程序的需求。下一代计算机体系结构在并行计算方面的核心问题如下。

并行类型:并行计算中,有两种并行类型,即任务并行(Task Parallelism)和数据并行(Data Parallelism)。任务并行就是对多个待解决的问题进行任务分割,不同的任务分布在不同的处理单元上执行。数据并行就是对任务依赖的数据进行分割,将分割好的数据放在一个或多个处理单元上执行,每一个处理单元对这些数据都进行类似的操作。

处理单元的组织结构:处理单元的组织结构包括单设备上独立的核、多核、协处理器和加速器,以及多设备之间独立的核、多核、协处理器和加速器。

同步和通信:通过底层通信机制解决数据在多个核之间或设备之间的同步问题。特别是设备之间的数据同步,由于通信带宽的限制,需要做到按需同步,仅同步业务必需的数据。

总体而言,我们需要打破现有的计算机软硬件抽象层次,提出一套新的机制和策略来实现局部性和并发性;提供可编程、高性能和高能效的软硬件协同平台;能够高效地支持同步、通信和调度;开发真正易于使用的并行编程的模型、框架和系统。

随着万物互联时代计算机体系结构的不断演进,操作系统必然要能够同步演进。同时,操作系统需要高效地使能体系结构的新变化,充分发挥软件和硬件的协同作用。

1.4 万物互联时代面临的挑战

人类文明先后经历了农耕时代、工业时代和信息时代。诞生于20世纪60年代的互联网极大地推动了信息时代的发展,无数计算机通过网络连接在一起。人们打破了距离和语言的限制,通过网络可以浏览信息、分享数据、发送电子邮件等。互联网的兴起使人们获取信息的广度和深度发生了深刻的变化,尤其是移动互联网的普及,使全球移动用户数量得以快速增长。

一般而言,智能终端(Smart Terminal)是一类嵌入式计算机系统设备,其典型特征是包含可编程芯片、处于计算机网络的末梢,存在人—机、物—机交互界面。

IoT通过网络,特别是无线网络,将智能终端相互连接起来,实现任何时间、任何地点,人—机、机—机的互联互通。IoT的概念最早可以追溯到20世纪80年代初,但多年来IoT一直处于概念期,并没有真正地快速发展起来。根据使用场合,IoT终端可分为固定终端、移动终端和手持终端;根据功能的扩展性,则可分为单一功能终端(专用智能终端)和通用智能终端;根据应用的行业,则主要分为工业设施IoT终端、农业设施IoT终端、物流识别IoT终端、电力系统IoT终端、安防监测IoT终端等,需要说明的是该分类随着行业的增加和细分而变化。传统观点认为,智能手机、平板计算机、笔记本计算机、台式计算机和固定电话等传统智能终端属于非IoT终端,而IoT终端(狭义)是指非IoT终端之外的智能终端设备,如网关设备、传感器设备和NFC(Near Field Communication,近场通信)设备等短距通信设备。近年来,随着IoT实践的不断深入,越来越多的观点认为智能手机等智能设备也属于IoT终端。如果不做特殊说明,本书中提到的IoT设备默认包含手机等智能终端。

近10年来,智能终端的发展一直处于“快车道”中,无论是设备数量还是设备种类,都发生了巨大变化。IoT终端在多个领域中逐步落地,特别是智能家居、工业IoT、车联网、智慧城市等领域,目前正处在快速发展中,万物互联时代到来了。

1.4.1 万物互联时代已来临

回顾移动互联网发展历程,2011年年底,全球智能手机出货量首次超过了PC出货量,这标志着移动互联网时代的来临。IoT研究机构IoT Analytics 2020年发布的IoT跟踪报告显示,那之前10年,全球所有IoT终端(不包含智能手机)连接数年的复合增长率达到10%。报告指出,2020年全球IoT的连接数约为117亿,IoT发展进入一个新的历史阶段,报告同时预测,2025年智能设备的数量将达到300亿部。

与计算机体系结构不断发展一样,IoT硬件技术也在快速发展中,举例说明如下。

计算单元:从通用计算走向领域计算,CPU、GPU、TPU、NPU、IPU不断发展,以支撑AI、图形处理、并行运算等强算力需求。

存储单元:智能存储、存算一体、SCM、非易失性内存等存储单元会逐步规模应用,易失存储与持久存储逐步走向融合,边界不再清晰。

通信单元:无线通信技术不仅提供通信能力,也提供无线传感技术和增强型无线位置追踪等能力。同时,5G大连接、低时延、高可靠性使新型高吞吐量、低时延广域计算成为可能。

智能驾驶:智能驾驶汽车包含完整的传感器、网络互联、计算单元等,是新一代移动数据中心的主要载体。

智能家庭:家居越来越智能化,无缝连接、自然交互等可支撑良好的用户体验。新型IoT设备硬件技术发展需要操作系统提供新的抽象与设计来充分简化编程、快速互联、释放算力,以支持构建异构新老硬件混合异构环境,实现新型硬件技术与现有硬件技术的完美融合。

当前,智能终端操作系统主要解决的是人和单设备的交互问题,交互的方式取决于单设备的硬件支持哪些交互能力。针对用户如何通过一台设备和另一台设备进行交互的问题,当前多个智能终端操作系统做了一定的尝试。譬如,打通App在两个设备之间的消息通道,优化了用户在特定场景下的操作体验等。未来的操作体验将会围绕万物互联的全场景展开,大量设备如何动态接入网络?如何互相通信?用户与多设备的交互方式如何体现以人为中心?这些都是迫切需要在系统层面解决的问题。

1.4.2 改善终端用户体验的诉求

在20世纪大型机时代,终端通常指的是与集中式处理计算主机系统交互的,由显示器、键盘等I/O设备组成的操作台设备。后来,终端的处理能力越来越强大,“终端”这个词已经约等于计算机系统,也就是我们常说的微型机或PC。21世纪,随着移动系统(包括软件和硬件)技术的发展,人们所说的终端,更多的是指笔记本计算机、智能手机、平板计算机等设备。并且,随着消费电子设备的发展,智能电视、智能眼镜、智能手表、智能手环等设备也已经加入终端的行列。

近年来,智能终端的概念在各种媒体中常被提及。从概念上讲,智能终端是相对于非智能终端而言的。21世纪之前,面向消费市场的终端产品由于软硬件能力的限制,大多属于非智能终端。随着嵌入式软硬件技术和操作系统技术的发展及硬件成本的不断降低,智能终端迅速发展并快速取代非智能终端,成为市场主流。智能终端的“智能”主要体现在功能的可扩展性方面,智能终端跟具体应用软件的结合可以看作某一场景的非智能终端。譬如,智能终端安装了学习软件后就变成了学习机;智能终端安装了K歌软件后,则变成了KTV点唱机;智能终端安装了导航软件后就变成了导航仪。用户通过安装各种各样的软件,可以很方便地使智能终端变成融合了无数个非智能终端功能的综合体。

经过十多年的快速发展,越来越多种类的新型智能终端大规模进入了普通人的生活,并深刻地改变了人们的生活方式和工作方式。智能终端未来的发展趋势体现在以下层面上。

在硬件层面上体现为新型硬件器件的引入、更高的硬件集成度和智能终端设备范围的拓展,一些原本非智能终端随着硬件的升级变为智能终端。

在操作系统层面上体现为对新型硬件和较低性能非智能终端的支持,与其他智能终端更高效地协同,交互更人性化、更智能,体验更好。

在应用层面上体现为用户程序种类更丰富,用户程序之间的协同更方便、更普遍。

可以看出,智能终端的硬件能力只有在丰富的生态应用下才能充分发挥其“智能”,智能终端丰富的应用程序则可以极大地扩展其功能。软件通过组合使用各项智能硬件功能,结合网络接入功能,可以把更多的内容引入智能终端。这也同时要求智能终端使用开放操作系统。

需要注意,开放操作系统和开源操作系统是两个不同的概念。开放操作系统是相对封闭操作系统而言的,开放操作系统是指操作系统的应用生态是开放的,一般通过开放的API、配套的SDK(Software Development Kit,软件开发包)和IDE(Integrated Development Environment,集成开发环境)支持第三方开发者进行应用程序的开发。而开源操作系统是指操作系统的源码是开源的,开源操作系统不一定是开放操作系统。

综上所述,智能终端繁荣发展的核心是使用新一代开放操作系统,它从本质上决定了应用的快捷开发程度,以及应用使用智能终端设备软硬件资源的能力。

在万物互联时代,人和各种不同设备之间的交互会更加频繁,设备和设备之间的交互也会常态化。但是,人和设备之间的交互及设备和设备之间的交互要做到以人为中心,更好地为人服务,就需要重新设计人—机和机—机交互体系。我们可以畅想一下,万物互联的智能世界跟当前世界相比会发生根本的变化:具备联网能力、存储能力和一定计算能力的智能设备数量迅速增加;在大多数场景下,每个人的周围几乎随时同时存在多台智能设备,这些智能设备通过网络连接在一起,互相协同,用户可以通过任一设备控制另一设备,而不管这台设备当前所处的具体位置;用户也可以通过一台设备访问其他设备上的资源,这些资源可能存在于本地的另一台设备上,或者存在于远端的另一台设备上,但对用户而言,这些资源就好像永远在其身边一样可随时随地使用。若想将这些畅想变为事实,需要解决当前存在的如下四大痛点。

体验不一致:譬如,手机上丰富的应用无法在其他终端上使用。

体验不连续:譬如,视频播放无法跨设备迁移,播放进度不同步。

硬件互割裂:譬如,手机无法使用车机上的GPS(Global Positioning System,全球定位系统)进行辅助定位。

内容不协同:譬如,手机上的地图信息无法与车机上的地图协同使用。

1.4.3 开发者面临的挑战

庞大的开发者群体是软件生态繁荣的基础,操作系统的设计必须了解开发者面临的挑战,并能够在系统层面上重点帮助开发者应对挑战。

相关调研数据显示,在移动终端开发者中,63%的开发者反馈他们开发一个应用需要适配多个操作系统。虽然当前有多款支持跨平台的开发框架,如Web开发框架和Flutter开发框架等,但对于一些较复杂的应用程序,开发者仍需要针对不同的操作系统分别进行开发,这是开发者面临的最大挑战。不同的操作系统对外提供的平台API能力范围也不尽相同,通过跨平台的开发框架很难解决由操作系统本身差异导致的各种深层次问题。在当前IoT领域,操作系统种类繁多,百花齐放,给设备开发者带来便利,同时也给应用开发者带来了适配更多操作系统的繁重工作量。

排在第二位的挑战是开发者必须面对类型众多的智能设备。即使这些设备使用同一个操作系统,应用开发者也不得不针对不同类型的设备开发不同的应用,以提供更好的业务体验。譬如,不同设备屏幕大小不同、分辨率也不同,如何为这些设备设计更好的UI(User Interface,用户界面)?一种常见的做法是为不同的设备设计不同的布局和资源,开发者会将大量精力耗费在UI的设计和调整上。另外,这些设备能够提供的交互方式也千差万别,有的提供触控交互,有的提供键盘和鼠标交互,有的提供遥控器交互,开发者需要针对这些不同的交互方式开发不同的业务处理逻辑。

调研数据同时显示,大多数应用使用了多语言的混合开发模式。这需要开发者掌握多门开发语言,对大多数开发者而言,这是一项较高的要求。熟练掌握一门开发语言需要花费大量的学习成本,开发者不但要熟悉开发语言的语法知识,还要通过不断实践来掌握该语言常用的开发模式。另外,开发者还需要能够熟练使用该语言配套的工具链,对常用的第三方库也要有足够的了解。还有一点需要指出,开发语言版本的升级迭代也给开发者带来了更多的学习成本。

另外,适配不同的操作系统、适配不同的设备、使用多种语言开发,必然导致代码库的维护更加复杂。许多开发者将大量精力投入架构优化,希望通过一个架构支持不同的操作系统和不同的设备。一种常见的思路是提取更多的公共组件,这些公共组件通常进行了跨平台的设计,对于无法跨平台的组件,采用分别实现的方式。多组件不仅带来了维护成本的提高,也带来了功能的不一致性和接口兼容性等方面的技术问题。

1.5 下一代操作系统的关键特征

从一般意义上说,操作系统是对计算机硬件实现的抽象,并为用户程序提供一个较理想化的抽象模型。在前面回顾的操作系统发展史中,我们可以看到每一代操作系统都有不同的关键特征。现代操作系统经过多年的发展,基本概念和功能已经成熟,当前发布的操作系统新版本主要涉及功能增强、性能优化和对新硬件的适配。在万物互联时代,产业环境、消费者和开发者都对操作系统有不同于以往的诉求,如果把可满足这些诉求的操作系统称为下一代操作系统,那么这个操作系统应该具备哪些关键特征呢?

我们知道现代操作系统的规模越来越大、功能越来越复杂。据统计,1975年发布的UNIX V6代码约1万行,1991年发布的Linux 0.01代码约8000行,2003年发布的Linux 2.6.0代码约593万行,2021年发布的Linux 5.12版本的代码约2880万行,Linux每年新增代码约200万行。设备开发者从一个如此庞大的操作系统的源码中裁剪出自己设备可用的精简操作系统是一件非常困难的事情,原因之一是操作系统内部实现没有进行充分解耦,虽然也进行了一定的模块化设计,但不同特性的代码盘根错节地耦合在一起,各个模块间的依赖非常复杂。在万物互联时代,设备种类异常丰富,设备开发者需要一种能够灵活定制的操作系统。也就是说,系统构建者不但需要从操作系统中获得更多的通用性,还需要更多的灵活性来定制他们的特定软件运行环境,而且这种灵活性不会引入破坏标准组件的复杂性。因此,我们认为下一代操作系统的一个关键特征是完全按照模块化方法构建,以与正在构建的下一代硬件相适应,它具有高度抽象和模块化的特点,系统构建者可以从现有组件货架中快速组装。

虚拟化(Virtualization)技术起源于20世纪60年代末,是计算机的一种资源管理技术。它的基本原理是通过将计算机的各种物理资源(如CPU、内存、磁盘、网络适配器等)予以抽象和转换,对外呈现出一种可分割、可组合的配置环境,从而打破物理资源不可切割的壁垒,并提供一种更好的方式来使用这些物理资源。根据不同抽象层次,虚拟化技术可以分为硬件抽象层(Hardware Abstract Layer,HAL)虚拟化、指令集层虚拟化、OS层虚拟化、编程语言层虚拟化、库函数层虚拟化、应用层虚拟化等。当前虚拟化技术的一个基本特征是基于同一物理设备进行分层虚拟化。在万物互联时代,多台不同物理设备之间能否进行跨设备虚拟化?答案是肯定的。譬如,电视把门铃的摄像头虚拟化到电视中,这样可以方便地让电视使用门铃的摄像头获取视频流。虚拟化技术打破了单一硬件的物理限制,通过对多台设备的硬件资源进行统一虚拟池化,可为用户提供更多的服务和功能,实现更好的跨设备协同特性,带来前所未有的跨端体验。我们认为,下一代操作系统的一个关键特征是具备细粒度的跨设备虚拟化。譬如,可以创建一个从网络获取而不是从 USB(Universal Serial Bus,通用串行总线)端口获取坐标数据的虚拟鼠标,在物理上该鼠标属于另一台本地或远端物理设备。当然,也可以在一台智能终端上启动另一台智能终端上的用户程序。

交互式操作系统允许用户频繁地与计算机对话,对话的方式包括键盘和鼠标的输入、触摸输入、屏幕的输出等。在万物互联时代,更多更自然的交互方式将被引入计算机世界中。在某些场景下,语音交互可能是一种更便捷、更安全、更合适的交互方式。譬如,与无屏智能音箱交互,或者在驾驶过程中通过语音交互更改车机上运行的导航软件所设置的目的地。在万物互联场景下,设备形态的多样性对交互的多样性提出了更高的要求,人们甚至不用刻意发出指令,设备也会自动捕捉用户可能的潜在意图。想象这样一个场景,司机长时间驾驶车辆在高速上行驶,有点困意,车机会及时感知到司机的身体状态,如果司机继续驾驶可能存在安全隐患,车机会通过高频音提醒司机需要休息。我们认为,下一代操作系统的一个关键特征是提供多模态交互,人们与设备的交互方式不能仅局限于传统的交互方式。多模态交互技术会提供更自然、更高效、多样化的其他交互方式,同时各种交互方式互相叠加,主动交互与被动交互协同,给人们带来前所未有的交互体验。

分布式操作系统是指分布在不同计算机物理设备上的操作系统组件通过通信网络进行数据交换和协同的软件系统,不同组件共同对外提供服务,这对用户来说,就像是一台计算机在提供服务一样。在万物互联时代,分布式操作系统如何与形形色色的IoT设备结合使用?这又会带给人们什么样的用户体验?能否实现用户只使用任意IoT设备,例如键盘、鼠标、智能手表、智能音箱、摄像头、智能手机、电视、汽车或任何电子设备,将其作为一个“接入点”,操作系统就能够将用户所拥有的设备与用户数据连接在一起,从而让用户获得一致的交互体验?答案是肯定的。譬如,用户购买了一部新的手机,只需要对其进行授权,它就会加入“我的设备”。又如,用户在行驶的汽车里使用笔记本计算机工作,若笔记本计算机的处理器能力不足,操作系统会将一部分计算需求转移到车机的处理器进行协同处理。操作系统的文件存储能力会进一步增强,用户不用关心文件存储位置,甚至不再担心文件备份问题。我们认为,下一代操作系统的一个关键特征是具备异构分布式能力,分布式能力不再是服务器的专属能力。

从用户程序开发者的角度来看,开发者可调用的能力不再只来自操作系统本身,它可能来自当前设备中的其他程序,或者其他设备中的程序。开发者不必关心它来自哪里,只需要关心自己需要什么。所有开发者开发的用户程序都可以为其他用户程序提供能力,操作系统提供一套全新的开发模型和开发框架,以满足操作系统快速组装、细粒度的跨设备虚拟化和异构分布式对用户程序的开发要求。

众所周知,AI经过多年的发展,近几年在深度学习领域有了实质性的突破,在某些特定方面智能接近或已超过人类。近期基于大语言模型的各种应用层出不穷,一次次带来超出预期的体验。与当前操作系统相比,下一代操作系统将原生支持AI,包括AI基础能力和利用AI自主改造的能力。AI基础能力主要包括对AI硬件的管理、内置AI开发框架和AI推理模型等,方便用户程序高效利用系统的AI资源。操作系统利用AI自主改造的能力主要体现在利用预置的AI能力进一步提升当前操作系统智能化水平。譬如通过周边环境感知、运行上下文感知等AI技术让系统资源的管理更加高效;通过语音识别,机器视觉,用户操作习惯学习等AI能力,让交互操作个性化、更自然;通过AI能力将传统UI控件改造为智能UI控件,支持智能抠图、图像分割、图像理解、文字提取、文本朗读和智能纠错等;通过AI对分布式能力进行改造,提供智能搜索和智能协同等体验。操作系统和AI的结合将对现代操作系统带来深刻的影响。

安全是操作系统运行的基础,特别是在万物互联时代,大量的设备连接在一起,它们协同工作,使数据在多台设备之间不断流转。万物互联带给用户便利的同时,也暴露了更多的攻击面,让黑客有机可乘,每一台设备都可能成为被攻击的入口,每一次成功的攻击都可能威胁到用户的所有设备。随着用户对个人数据越来越关注,必须有效保障用户的知情权和隐私权,做到让用户对自己的个人数据可知、可控。我们认为,下一代操作系统的一个关键特征是更加安全,即通过信任管理、访问控制、数据加密、可信计算、差分隐私、数据脱敏等技术,构建集采集、传输、存储、访问、更新、生命周期管理于一体的数据安全体系。

相关图书

鸿蒙原生应用开发:ArkTS语言快速上手
鸿蒙原生应用开发:ArkTS语言快速上手
Qt程序设计基础  基于银河麒麟桌面操作系统
Qt程序设计基础 基于银河麒麟桌面操作系统
鸿蒙入门:HarmonyOS应用开发
鸿蒙入门:HarmonyOS应用开发
鸿蒙第三方组件库应用开发实战
鸿蒙第三方组件库应用开发实战
华为LiteOS:快速上手物联网应用开发
华为LiteOS:快速上手物联网应用开发
鸿蒙征途:App开发实战
鸿蒙征途:App开发实战

相关文章

相关课程