software-strategy-book/Ch2-5-OperatingSystem.tex

132 lines
41 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

% !TEX root = main.tex
操作系统负责管理软硬件资源、操纵程序运行,为应用软件提供公共支撑,是“软件作为基础设施”的集中体现。过去,操作系统是信息空间的基础设施,起到以平台化方式向下管理各类资源、向上支撑应用运行的作用;未来,在信息物理持续融合趋势的推动下,操作系统管理资源将向各类物理资源扩展,甚至向其他具有“数字孪生”特性的经济、社会和生产生活资源扩展。这一趋势是“软件定义”思想发展的必然结果:随着计算系统正在突破单机、数据中心等封闭环境的限制,操作系统的资源虚拟化、功能可编程能力进一步拓展,从控制管理单个计算节点资源进一步延伸为连接协调多个节点组成的复杂计算系统,为信息空间、物理空间乃至整个社会提供“软件定义”手段,推动着诸如面向网构软件的操作系统\cite{mei2016internetwareos}、智能家居操作系统、智慧城市操作系统等“泛在操作系统”Ubiquitous Operating System\index{泛在操作系统}成为现实\cite{mei2018toward}
与此同时操作系统的外延、或者说“操作系统应该是什么形态”这一问题也在随着技术和应用的发展而不断扩展演化。例如在人机物融合互联这一大背景下中间件正在表现出加速融合到操作系统中的趋势早在上个世纪的90年代初美国华盛顿大学的MOSESMeta Operating System and Entity Shell项目即使用了“元级操作系统”的概念来描述分布环境下“位于本地操作系统之上、应用之下的一层软件”早期的普适计算中间件Gaia~\cite{Roman:2002:GMP:643550.643558}等已在文献中混用“元级操作系统”和“中间件”概念而今天广泛应用的ROSRobot Operating System\cite{quigley2009ros}更是继承了网络计算中间件的核心思想。换言之,操作系统正在以海纳百川的方式沉淀各类具有软件定义特征的运行平台设施,这也是本章标题“操作系统与运行平台”的由来。
基于上述内涵和外延两个方面的观察,本章将从平台架构、方法机制、安全隐私等方面列出操作系统与运行平台的重大挑战问题,并阐述本领域的研究趋势和内容。
\section{重大挑战问题}
互联网革命正在进入下半场,“万物互联”时代正在到来,人机物融合的泛在应用场景推动着操作系统和运行平台的新一轮变革,带来平台架构、资源管理、应用支撑、安全隐私等方面的挑战。首先,在所管控资源高度异构、涵盖人-机-物三元空间的条件下,未来的操作系统和运行平台需要什么样的架构(§\ref{os-architecture}
其次,从向下管理泛在资源的角度,需要什么样的资源虚拟化和调度机制(§\ref{os-scheduling});再次,从资源聚合和应用协同支撑的角度,在网络环境下如何实现从“精确控制”到“连接协调”的变迁(§\ref{os-connection});第四,从向上支撑应用运行的角度,应当如何支撑上层应用持续适应和演化(§\ref{os-evolution});最后,在人与物加入到操作系统管理对象中之后,基础设施层的安全与隐私保护风险如何应对(§\ref{os-security})。
\subsection{支持软件定义的新型运行平台架构}\label{os-architecture}
“软件定义”的提法最早可追溯到上个世纪90年代所提出的软件定义无线电Software-defined Radio\cite{tuttlebee1999software}概念。在软件定义的无线电设备中,一部分传统由晶体管、集成电路等实现的信号处理部件(如滤波器、调制/解调器等)被软件所代替,在简化硬件设计同时,获得“功能可编程”的显著收益——设备能力可以按需扩增或裁剪,从而快速适应技术标准和市场需求的变化。
进入21世纪随着云计算等新型计算范型的出现人们对计算系统的灵活性、可管理性和资源利用率的追求日益提高“软件定义”一词被引入到计算技术领域。以 “软件定义网络”Software-defined Network\index{软件定义网络} 为例,与传统网络互联能力由硬件/固件所决定不同软件定义网络强调将整个网络自底向上划分为数据、控制和应用三个平面。其中控制平面向下操纵和协调数据平面上设备如交换机的行为向上提供尽可能与硬件无关的抽象编程接口、支撑应用平面运行。控制平面不仅具备“功能可编程”能力也具备了“资源虚拟化”能力也即能够对数据平面资源进行高效管理、封装与抽象。“软件定义”内涵的这一升华深受操作系统思想的影响。例如首个开源的软件定义网络控制器NOXNetwork Operating System在其文献\cite{Gude:2008:NTO:1384609.1384625}中指出“现代操作系统通过提供对资源和信息高层抽象的可控访问…使得程序可以在各种计算硬件上安全和高效执行复杂任务”NOX就是将操作系统思想拓展到了网络设备管理中。
\begin{figure}[htbp]
\centering
\subfigure[传统操作系统]{
\centering
\includegraphics[width=0.4\linewidth,height=2.5cm]{fig2-5/tos.png}
}\
\subfigure[软件定义网络]{
\centering
\includegraphics[width=0.5\linewidth, height=2.5cm]{fig2-5/sdn.png}
}
\caption{操作系统与软件定义网络架构的类比}
\end{figure}
将操作系统“功能可编程”、“资源虚拟化”的思想拓展到存储、安全、数据中心等具体领域,我们就得到了软件定义存储、软件定义安全、软件定义的数据中心等概念。进一步,随着操作系统由计算机软硬件之间的桥梁、人与计算机之间的桥梁拓展到云边端、人机物之间的桥梁,其定位将由单个计算机“管家”演化为支撑“软件定义一切”的运行平台。传统操作系统架构面向的是信息空间内孤立计算节点,主要关注基于一般硬件的通用场景。这一沿用数十年的架构将面临如下三个方面的挑战:
\begin{itemize}
\item 新型硬件对经典操作系统架构的挑战。近年来处理器、存储器件、网络互联设备等硬件技术快速发展众核处理器、FPGA/GPU加速硬件、非易失内存、远程直接数据存取RDMA网络等一系列高性能、具有新架构和新特征的新型硬件不断涌现并逐渐成为主流技术。一个典型案例是面向人工智能等特定领域的“CPU + xPU\footnote{如图形处理器GPU、张量处理器TPU、神经网络处理器NPU等}“体系结构在高性能计算机及移动异构片上系统中均得到较广泛应用。如何充分发挥新型硬件的潜力是经典操作系统架构设计所面临的重大挑战。以内核设计为例传统操作系统主要有宏内核和微内核两种模式以Unix/Linux为代表的宏内核操作系统在架构上已经趋于稳定新的改进主要来自对新的硬件、新的抽象和新型外设的支持这种不断打”补丁“的方式导致系统不堪重负而宏内核天然的一体性也导致通过定制裁剪来适应异构硬件的方法代价高昂现有微内核操作系统主要考虑受约束场景的需求缺乏对大型计算密集任务场景的扩展性支持也缺少完善的用户态环境。
\item 从单一节点到大规模开放环境的挑战。可以预见,随着人机物融合、特别是“软件定义一切”的付诸实践,未来操作系统将具有两种形态:一方面,在新型硬件技术和新型应用场景的共同驱动下,今天我们所熟知的、以单一计算节点为作用空间的经典操作系统(以下称节点操作系统)将继续发展,实现节点尺度上的资源虚拟化和功能可编程;另一方面,操作系统的作用空间将突破单一节点的束缚,新一代操作系统将运行于经典操作系统之上,实现网络环境下异构资源聚合和优化管理,支撑各种类型、更大尺度上的分布式应用,实现计算、数据甚至物理世界各类异构资源的调控。后者将极大的扩展现有操作系统概念的内涵与外延,由于系统边界的开放性、软件架构的分布性、运行环境的动态性、涉及资源的高度异构性,其架构将很难沿用传统操作系统自顶向下、精确控制的模型(详见\ref{os-connection}节)。
\item 人机物三元融合互联场景的挑战。今天广泛使用的Windows、Linux等操作系统在架构上深受首个现代意义上操作系统Unix的影响。它们运行于单一计算节点范围内内部大致可划分为资源管理、系统调用、人机接口等层次。这种架构针对信息空间内部的孤立计算节点设计很难支撑泛在化、智能化、网络化的新型应用场景。具体而言在计算维度上单一的本地计算将向云边端一体化计算、人机物协作计算、智能和机器学习计算等新型场景变迁在通信维度上5G等无线通信技术的出现使得网络时延和吞吐量得到极大改善可望触发移动和嵌入式操作系统的新一轮革命在控制维度上物联网、机器人等与物理世界紧密融合的计算设备涌现使得“功能可编程”将突破信息空间范畴需要在操作系统架构设计层面上考虑物理空间约束和对物理空间的影响。
\end{itemize}
\subsection{泛在资源的高效虚拟化和灵活调度}\label{os-scheduling}
文献\cite{mei2018toward}给出了“泛在操作系统”的概念指出未来的操作系统不仅仅是IT操作系统也将成为物理世界和虚拟世界的操作系统在今天已经初露端倪的机器人操作系统、车辆操作系统、物联网操作系统等基础上校园操作系统、城市操作系统、家庭操作系统等可望在将来成为现实。在这一背景下操作系统的核心功能――资源虚拟化和调度的实现机制面临一系列挑战\ref{fig2})。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.7\linewidth]{fig2-5/mmm.png}
\caption{人机物融合新型资源的虚拟化和调度所面临挑战}
\label{fig2}
\end{figure}
首先高性能处理器、新型存储器件、高速网络互联设备等快速发展使得经典的计算资源虚拟化和调度机制面临挑战。例如多核和多芯片计算机系统中非一致性内存访问架构使得传统基于页的虚存系统面临挑战目前已有的设备模拟、设备半虚拟化、设备直通、单根虚拟化SR-IOV等技术尚不能完全扩展到 GPU、张量处理器等人工智能新型加速器或者是效率和灵活性还需要进一步提升非易失性内存的应用使得内存中的某些数据不再需要存储到硬盘内存和持久存储走向融合对传统类文件系统架构带来挑战100G及以上以太网链路在大规模数据中心的普及网络进入纳秒级时延带宽增长速度超越CPU处理能力增长速度操作系统网络协议栈面临挑战等等。
其次,如何为人机物融合计算中的各类新型异构资源建立抽象,是未来操作系统需要解决的核心问题。本质上,操作系统和运行平台负责向应用提供“抽象”,并将这些“抽象”绑定到硬件祼机。数十年来,这一领域已经积累了诸如进程、线程、文件、内存页等一系列重要抽象机制,为现代操作系统奠定了基石。但是,未来操作系统所管理的资源将跨越人、机、物三元空间,涵盖物理资源、计算资源、数据资源等多种类型,现有抽象远远不能满足需求。因此,需要探索符合新型资源特点、切合其特性的抽象机制,并突破在单一计算节点、有一定边界的分布式系统、跨域开放式系统等不同尺度上维护这些抽象的方法机理。
再次,在操作系统支持下,物理资源将呈现物理与数字二像性,如何将信息空间内的抽象与物理空间内的实体绑定,并持续保持和校正二者之间的一致性,是操作系统泛在化以后产生的新问题。一方面,需要利用物理模型、传感器实时数据、大时空尺度上的历史数据等,通过集成多物理量、多尺度、多概率的仿真过程,实现物理资源到信息空间中实体的正向映射,以及“因果关联”的虚拟实体到物理资源的映射,构建“数字孪生”关系;另一方面,即使建立了上述双向映射,也要考虑物理域和社会域资源在管理和调度过程中的特有属性,例如动作的非精确性和动态性、固有的噪声等。
最后,需要深入理解未来泛在计算场景下应用模式的共性特征,为上层应用提供适当的、相对稳定的“功能可编程”接口。可以预见,未来泛在计算场景至少包括数据规模巨大、强调按需能力获取的“云-边”效用计算,资源需求动态变化、不确定性很强的智能计算,移动性强、承载设备多、续航要求高、迭代快的智慧城市、工业互联网等领域的协作计算,人与物相互驱动、相互协同的人机物统一计算等。这些泛在应用模式很多都处在探索阶段,需要理解和凝练应用模式的共性特征,进而通过编程接口支撑上层应用灵活实施软件定义。
\subsection{基于连接协调的资源聚合与应用协同}\label{os-connection}
未来的人机物融合系统将是大规模、网络化的计算系统虽然每个节点上的节点操作系统仍通过自顶向下、精确控制的模型来达到资源虚拟化、功能可编程的目的但这种机制很难放大到网络层面、特别是大规模网络化系统。事实上简单放大的思路在30年前的Amobea\cite{Tanenbaum:1990:EAD:96267.96281}等分布式操作系统实践中就已经尝试过,并被证明很难奏效(参见\ref{middleware}。根本原因在于大规模网络化的系统具有开放复杂系统的特征1需求和环境开放性突出表现在此类系统通常是在不断适应需求和环境变化的过程中逐步成长演化而成的这一过程在时间尺度上可能长达数年甚至数十年2行为开放性突出表现在此类系统中存在大量非线性相互作用和涌现现象整体的行为很难简单地通过成员系统行为来进行刻画和预测3边界开放性突出表现在系统往往依赖于大量外部软件实体自身构成不具有明确、封闭的边界同时人社会组织、物理世界和软件系统边界模糊化。这些开放性将直接映射到操作系统和运行平台层面使得要“虚拟化”的资源和“可编程”的功能都具有明显的开放性导致很难构建出自顶向下、精确控制的模型。
因此,在开放的网络化环境下,更为妥当的资源管理和应用协同方式将是 “连接协调”,即通过按需聚合和动态协同来打破不同节点之间的壁垒,统一管理并优化利用计算、数据甚至物理世界各种资源,支持应用实体的分布式自主协同。换言之,操作系统将成为通过软件定义管理复杂计算系统的“元”级系统,面向单个计算机系统的“控制”功能则逐渐转移到面向多个计算机系统“连接协调”功能。这将动摇现代操作系统构造和运行的很多基本假设。虽然相关理念在中间件领域和网构软件\cite{Mei:2012:ISP:2311627.2311662}等范型中已有了初步实践,但一系列共性机理层面上的问题仍有待解决,包括需要何种模型来协调跨域资源及其能力、如何在动态环境下维持相对稳定的“功能可编程”抽象、如何支撑软件实体通过扁平化架构达成共识、如何有效管理调度各种冲突及涌现现象等。
在机理突破基础上,“连接协调”需要何种类型的基础设施支撑,是操作系统领域另一重要挑战。近年来,以区块链\index{区块链}为代表的分布式共识\index{分布式共识}技术,特别是区块链从应用系统向运行平台蜕变的发展历程(参见\ref{blockchain-history}为这一方面的实践提供了一个可借鉴案例——区块链可以在相对开放环境下通过扁平化架构和“连接协调”机制在多种类型大规模分布式系统中构建群体的共同认知。例如IBM的面向区块链的分布式操作系统Hyperledger Fabric\cite{Androulaki:2018:HFD:3190508.3190538}可以利用区块链来支撑分布式应用运行,并且通过模块化的共识协议灵活适应不同的应用场景和信任模型。但是,当前区块链的实际部署仍集中在金融、物流等少数领域,要使其能够为更多应用领域赋能,一系列问题仍有待解决,包括共识算法效率以及如何在效率和扩展性、安全性之间权衡、如何实现不同区块链之间的互操作、如何在形成共识同时保护隐私、如何在开放环境下实现有效监管等。
更进一步,区块链及其上软件系统作为新一代分布式软件体系结构的探路者,在扩展操作系统运行平台外延与内涵的同时,在未来极有可能成为系统软件和软件生态发展的催化剂,围绕群体共识、可信计算等问题,催生分布式软件一个新的独立分支。因此,如何“来自区块链、超越区块链”,借鉴区块链思想,为未来大规模网络化系统共同认知、协同决策、行为实施等环节实现连接协调提供手段支撑,是操作系统和运行平台领域需要探索的方向。
\subsection{复杂软件系统适应演化的共性支撑}\label{os-evolution}
近年来,以人机物融合系统为背景,有研究者提出了信息产业的“昆虫纲悖论”:一方面,未来物联网设备和应用场景将会像昆虫一样繁多,带来空前巨大的市场;另一方面,由于每种场景都存在其个性化需求和特点,针对场景所开发的软件系统将缺乏可拷贝性,导致边际成本显著提高,反过来制约产业的发展。要打破这一悖论,关键在于软件系统不能静态绑定到特定场景,而应当具备灵活适应场景的能力,在其生命周期内能够持续演化来应对环境和用户需求的变化\cite{wang2015auxo}
软件适应\index{软件适应}能力将成为未来人机物融合软件系统的基本属性,而操作系统在支撑软件适应演化活动方面具有天然优势:从可计算性的角度而言,操作系统与下层硬件裸机一起组成了能够“操纵”应用软件执行的通用图灵机实现,这一“操纵”能力使得操作系统有可能驱动应用软件的适应和演化\cite{jos19dongcha}从计算反射Reflection实现的角度而言操作系统和运行平台是应用软件执行的“元层容器”对于上层应用具有反射能力例如获知上层应用和环境状态、维护系统化反映上层应用环境和状态的模型、对上层应用实施调整操作等。因此操作系统和运行平台是驱动计算节点动态感知、自主学习、在线演化的理想载体但这也同时对平台设计实现提出了一系列挑战。
\begin{itemize}
\item 操作系统及其上应用的自主适应与学习赋能。从计算资源聚合到多样化人机物融合场景下的资源按需定制,关键在于操作系统和其上应用需要具备主动适应新场景和场景变化的能力,包括:操作系统本身和其上应用都具有柔性架构,节点本身可以动态调整,节点与节点这间连接关系可以按需变化,并且携带有指导这些变化的元层数据;在操作系统和运行平台内部构建“感知-理解-调整”回路,能够捕获和理解环境及运行状态,进而据此进行应用配置生成、主动部署、参数和连接关系在线调整等操作;具有从过去的适应和演化动作及效果中持续学习的能力,从而突破预定义场景和决策规则的约束,使得操作系统及其上应用在适应场景和用户需求变化的维度上能够表现出一定的“智能”。
\item 大规模复杂软件系统\index{复杂软件系统}的演化规律及其运行支撑。人机物融合场景下许多软件系统已经达到了空前的规模。例如互联网的前身ARPANET仅连接了4个节点而2019年移动社交应用微信的活跃用户数达到了11.5亿。规模上的量变引起质变,此类系统具有与单个节点或小规模分布式系统不同的演化规律,带来了一系列挑战性问题\cite{huaimin2014growth}:软件系统规模巨大,其海量状态数据之间存在着千丝万缕的联系,如何“去粗取精、去伪存真”,提取能够作为适应演化依据的运行态势数据;系统中的节点通过“连接”形成了一个复杂网络,如何基于复杂网络中的交互掌握软件体系结构和当前运行态势;在由大量自治软件单元所组成的软件系统中,适应性演化动作往往发生在单元、子系统、系统等多个尺度上,如何在群体层面上形成恰当的适应性演化行为,以及不同层次上的适应性演化如何相互影响;等等。
\item “人在回路中”的软件系统演化决策。软件是“由人开发为人开发”的产品人在软件生命周期各个阶段所发挥的作用不可替代人是软件产品需求的提出者也是需求落地实施的开发者同时也是软件终端的使用者以及运行时的维护和升级者。因此未来人机物融合软件系统适应性演化决策应当是软件和人相结合的方式除了现有的规则、策略、机器学习等自动化方法外“人在回路中”是其重要的特点主要表现为三种形态操作系统和运行平台集成DevOps工具链来有效支持人作为“指导者”Oracle来发挥作用软件系统从平台层所累积的人的行为数据、特别是群体行为数据中进行主动学习从而不断提升其演化决策能力人与软件实体协同工作在宏观尺度上通过人的行为演化驱动软件演化实现行为涌现和人机协同演化。
\item“信息-物理-社会”空间的协同持续演化。未来软件将与其所在的社会和物理环境紧密融合在一起,相互作用、相互影响。这与传统的、完全在信息空间运行的软件有演化着质的区别。具体到基础性的、“操纵计算系统执行”的操作系统和运行平台层面,需要有能力支撑上层应用与物理世界和人类社会长期性的共同演化。 这将显著扩展现有操作系统的内涵,带来一组极具挑战性的开放问题,例如:物理空间变化的频率远高于信息空间变化的频率,如何高效地支撑上层软件适应物理空间的变化;利用人工智能算法来进行演化决策,一旦决策错误可能会直接在物理空间造成严重后果,操作系统和运行平台应当提供什么样的监督、审计和补偿机制;等等。
\end{itemize}
\subsection{人机物融合过程中的安全与隐私保护}\label{os-security}
数十年来“魔高一尺道高一丈”主流操作系统不断围绕系统用户认证、访问控制、数据安全、漏洞攻击缓解等方面进行安全增强。然而安全与隐私保护是一种伴生技术新的安全问题伴随新计算模式的涌现而不断产生。未来随着5G通讯、移动互联、云计算与物联网的应用普及人机物将广泛互联网络虚拟世界与现实世界将实现深度融合导致信息系统的安全防御边界愈加模糊面临的安全威胁在种类和数量上都将激增用户隐私保护的难度显著增加。在未来人机物融合的过程中作为信息空间与物理空间乃至整个社会进行统一信息处理的载体操作系统及运行平台在安全和隐私保护方面的需求将面临一系列挑战
首先,需要在大规模松耦合交互场景下建立虚实融合的信任关系。在未来人机物深度融合的时代,将会有大量物理设备与应用软件接入到运行平台,以数字身份作为运行主体在系统中发挥作用。随着越来越多的现实世界行为被迁移到网络虚拟空间进行处理,在数字世界中如何对纷繁芜杂的虚拟社会关系进行准确刻画并实施严格管理,是构筑未来安全可信数字空间的所必须要面对的挑战。在此基础上,要建立数字身份的信任关系,还需要在平台层面上对数字实体在虚拟世界的行为进行全面、如实地记录,为准确刻画数字世界实体间的信任关系提供有力依据。并且,由于现实社会中主体之间关系的大规模、松耦合特性,原有的集中式管理方式对人机物融合系统的实体管理将无法适用,需要实现管理的弱中心化,基于区块链等新型分布式信任关系构建方法已在操作系统领域崭露头角\cite{Androulaki:2018:HFD:3190508.3190538}
其次,需要实现人机物融合场景下的严苛安全和隐私保护需求。
人机物融合场景下计算节点众多、数据传输分散,诸如边缘计算等以“计算尽可能靠近数据的源头”为基本理念的计算模式将走向前台\cite{Satyanarayanan2017}。而这些新的计算模式由于其服务模式的复杂性、实时性,数据的多源异构性、感知性以及终端的资源受限特性,传统数据安全和隐私保护机制将很难高效应用。同时,由于移动终端的资源一般都比较有限,其所能承载的数据存储计算能力和安全算法执行能力也有一定的局限性。如何将传统的隐私保护方案与边缘计算环境中边缘数据处理特性相结合,从数据隐私、位置隐私、身份隐私等多个方面入手研究相应的保护方案,并沉淀为软件基础设施,是未来操作系统安全与隐私保护领域面临的重要挑战。同时,为了支撑广泛、大规模的人机物融合和互联,需要突破现有操作系统安全和隐私保护的被动防御机制、打破“信任篱笆”,强化安全与隐私保护的主动性与支配性,在利益与风险之间权衡,既关注更强、更灵活的隐私保护,又支持网络资源共享和互联互通。
\section{主要研究内容}
如本章伊始所述,未来操作系统将具有节点操作系统和以网络为核心的新一代操作系统两种形态。前者是对今天经典操作系统的继承与发展,后者以“泛在操作系统”\cite{mei2018toward}等为代表,运行于经典操作系统之上,通过“连接协调”实现网络环境下人机物异构资源聚合和优化管理,支撑各种类型、不同尺度的泛在应用。本节将围绕未来操作系统的上述两种形态,阐述操作系统和运行平台的研究趋势与内容。其中,§\ref{os-research1}\ref{os-research3}聚焦节点操作系统,§\ref{os-research4}\ref{os-research8}聚焦新一代操作系统,§\ref{os-research9}和§\ref{os-research10}则分别重点阐述与软件适应和演化、操作系统生态链构建相关的问题(图\ref{fig3})。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.9\linewidth]{fig2-5/cnt.png}
\caption{操作系统和运行平台的研究内容}
\label{fig3}
\end{figure}
\subsection{新型硬件资源管理和调度技术}\label{os-research1}
近年来,计算机硬件技术发展迅速,并且表现出向“上”(高性能)、“下”(轻量级)两端拓展的趋势。作为计算系统的“管家”,如何充分适应新型硬件特点并充分发挥其潜能,是操作系统理论和技术的重要研究方向,研究内容包括:新型基础内核架构将汲取宏/微等不同类型内核的长处研究实现适合多样化应用场景和新型硬件特点、易于裁剪定制的新一代操作系统内核架构异构资源融合支撑着重针对”CPU+xPU“硬件体系结构解决异构编程模型、同步和通信机制、访存效率的优化等问题实现高效易用的异构资源使用模式面向极端硬件和应用的轻量级虚拟化机制将结合硬件虚拟化支持研究轻量级虚拟化的实现与虚拟化资源管理机制满足大规模虚拟化管理以及极端硬件如FPGA/GPU加速硬件、TB级内存、非易失性存储器等条件下的虚拟化需求应用场景支撑能力主要研究智能计算、边缘计算以及云边端融合应用场景下的基础系统共性支撑环境为在节点粒度上为新一代人机物整合应用实现可编程的资源和能力抽象。
\subsection{面向特定应用领域的优化技术}\label{os-research2}
当前,运行于单一计算节点的操作系统架构已经趋于稳定,但移动计算、物联网等特定应用领域的快速发展,推动着相应操作系统实现优化技术的突破。一方面,移动计算已经是主流的计算模式之一,智能移动终端的操作系统当前已经形成了较为成熟的产业生态。但是,移动计算与边缘计算、人工智能等新兴领域的交叉融合,推动着其架构和实现机理的不断拓展,相应操作系统也表现出向低功耗、强交互、智能化和高安全发展的趋势,研究内容包括轻量级操作系统架构、多场景自适应电源管理优化、资源受限环境下的深度学习适配优化、多种生物特征认证增强等。另一方面,随着物联网等设备的普及,针对嵌入式计算中安全关键、任务关键、非关键等任务混合运行及其安全隔离问题,围绕任务确定性调度、系统实时响应、任务间高效通信、操作系统内核验证等技术展开研究,满足嵌入式计算在复杂环境中对系统实时性、安全性、可靠性的严酷要求。
\subsection{软硬协同的安全攻防对抗技术}\label{os-research3}
如何结合处理器和硬件平台的特点设计新型安全高效的操作系统结构是未来操作系统技术的另一主要研究内容。当前基于CPU的可信计算空间隔离和基于TPM芯片的可信计算技术为可信软件执行提供了硬件级的执行验证这些技术都从操作系统底层提供了有力的可信执行支持。未来操作系统安全研究将发展软硬协同的操作系统安全攻防对抗模式变被动响应为主动防护夯实信息系统的安全基础。具体而言需要突破软硬件高效协同的安全架构设计、安全防护模型和方法、跨域交互机理及优化方法和基于模糊测试的内核安全性测试等关键技术结合硬件平台提供的多层次特权防护、资源分区隔离等安全能力解决软硬协同的高安全操作系统设计中的核心问题。
\subsection{面向分布计算环境的资源虚拟化技术}\label{os-research4}
虚拟化技术不仅仅能够在单台计算机上实现资源的有效隔离更重要的是在分布计算环境下能够实现大量资源的细粒度管理为弹性可伸缩的资源聚合奠定基础这也是为什么云计算高度依赖虚拟化技术的原因。当前“函数即服务”FaaSFunction as a Service、边缘计算等新型分布计算应用模式正在涌现操作系统在资源虚拟化方面需要突破一系列理论和实践问题。首先虚拟化技术需要能够在支持多租户隔离的前提下实现高密度的资源虚拟化。以边缘计算场景为例与集中式云数据中心不同可能需要在边缘的十几个服务器上分别支持数千种不同的服务当前已有的基于容器的轻量级虚拟化技术尚不能完全满足。其次在无服务器计算和边缘计算等场景中应用对资源的需求是高度动态变化的这给虚拟化的性能提出了苛刻要求需要探索新的轻量级虚拟化架构和优化机制。再次部分云计算应用开始采用微服务架构 。这意味着软件体系结构进一步地解耦,单个镜像上运行的业务更加专一。当前 Unikernel\cite{Madhavapeddy2013}等机制可以大幅度精简冗余模块,提高虚拟机的启动速度,但虚拟化场景下的适用性和成熟度还需要进一步提升。最后,在分布环境下,计算资源之外的其它资源(如网络等)专用虚拟化技术需要进一步探索。
\subsection{跨节点的资源高效按需聚合技术}\label{os-research5}
“计算的泛在化”意味着操作系统和运行平台的作用范围突破了传统单一计算节点范畴,需要在广域环境内调度各类资源,为上层软件提供相对稳定的抽象。在计算系统规模持续增长的情况下,需要突破海量虚拟机资源的高效管理、虚拟机间通信优化、自适应的虚拟机在线迁移及动态部署、共生虚拟机间共享内存的弹性管理及优化、虚拟机访存效率优化等技术,实现跨节点的高效分布式计算资源调度。另一方面,网络操作系统中往往没有明确、固化的控制中心或层次结构,跨节点的“资源虚拟化”和“能力可编程”主要依靠“连接协调”、通过自底向上的方式来实现。如何借鉴社会系统、经济系统、生物系统等复杂系统机理,实现上述目标,也是此类操作系统面临的挑战。
在跨节点的资源按需聚合方面,未来的一个重要应用模式是“云-边-端”\index{“云-边-端”}协同模式。因此,需要面向现代网络化信息支撑体系的发展趋势,探索以资源虚拟化、服务云化、前后融合为基本特征的“云-边-端”协同操作系统柔性结构设计与优化技术,研究“云-边-端”高效资源协同调度框架、基于云边端协同和多目标优化的任务调度技术等。
\subsection{多租户条件下的主动防御技术}\label{os-research6}
多租户将是未来运行平台的主流应用形态之一。更多的服务被整合在单一平台上这些服务中可能包括了来自不同租户的不同安全等级的信息必须根据用户需求对应用系统的硬件、软件、数据、网络、存储等不同层面资源实现安全隔离。同时为了提高资源利用效率运行平台根据资源使用情况进行动态调度这种动态变化的环境将显著增大了安全隔离的难度。为了提高服务运行性能以Docker为代表的轻量级虚拟化容器技术也被广泛应用相对于虚拟机的强隔离性容器技术则是以弱隔离性换取性能的提高。在应用虚拟化技术的过程中隔离性与性能之间的取舍、动态变化下虚拟计算资源的安全复用、Hypervisor虚拟机监视器层的虚拟机监管、虚拟机逃逸防护等都成为必须要面对的挑战。同时虚拟化技术还需要对软件定义网络在数据中心内部的网络安全管理提供支持通过虚拟网关等技术对虚拟化数据流进行安全监控这些虚拟设备能否安全使用都将对系统安全性产生深刻的影响。
\subsection{基于区块链的新型分布架构运行支撑技术}\label{os-research7}
以区块链为基础的共识与信任机制可以为去中心化、扁平化的分布式应用架构提供支撑,具有驱动未来分布式软件乃至整个软件生态跃升式发展的潜力,将成为新一代操作系统和运行平台的基本能力之一(参见\ref{os-connection}节)。要实现这一目标,需要在如下一些方面开展研究:首先,区块链技术本身具有可扩展性、去中心化和安全性三者不可兼得的“三元悖论”难题,在区块链成为共性构件后,需要针对应用场景特点突破侧重点不同的共识算法,进而通过机制与策略的分离,实现场景定制的三元平衡寻优;其次,区块链技术在渗透至不同场景后,为了支持价值在不同行业与场景之间流动,支持不同行业与场景群体之间的协作交互,实现区块链的互操作性势在必行,需要针对公证人、侧链、原子交换、分布式私钥控制等为代表的跨链技术深入展开研究;再次,为了保证共识形成,区块链中事务信息需要通过网络传播给大范围节点,需要不断完善链内数据产生、验证、存储和使用整个过程中的隐私保护机制;第四,区块链的匿名性给网络监管机构带来了极大的挑战和威胁,当前对公有链的监管尚无有力技术手段,而如何在保护隐私的前提下实现监管,也是当前联盟链面临的重大挑战;最后,需要深入研究在应用层如何充分发挥区块链的优势和潜力,针对可信计算、共同认知、群体协同等不同场景探索其适用范围。
\subsection{物理和社会资源的抽象和管控技术}\label{os-research8}
操作系统 “资源虚拟化”的能力来自于其对资源的抽象、封装和调度。传统操作系统针对信息空间内部的资源,已经建立了进程/线程、内存页/虚拟内存、文件等相对稳定的抽象实体。未来,在人机物融合系统中,如何表达和管理各类高度异构、动态变化的物理和社会资源,是操作系统领域的开放问题。其中一个核心问题是:在信息、物理和社会(包括人的认知)空间三者之间,如何刻画、检验、保持、校正多模型结构之间定性与定量一致性,进而实现具有“数字孪生”的物理和社会空间资源的调度和管理。此外,未来操作系统的编程接口不仅涉及到计算资源的“软件定义”,可能包括各种可传感物体对象、智能无人系统等各类物理资源,甚至向其他具有“数字孪生”特性的经济、社会和生产生活资源,其接口形式、接口实现机理等都是开放的问题。
\subsection{运行平台支持的软件持续演化技术}\label{os-research9}
适应和演化是未来人机物融合软件的基本特征,其实现机制牵涉到两个层面。首先,未来人机物融合软件的运行平台自身应当是柔性设计、可以持续演化的。其次,操作系统和运行平台是能够支撑上层应用适应和演化的天然基础设施,应当为其提供相应支撑。由于在线演化的需求是在“软件作为基础设施”过程中逐渐显现的,其实现机理也是目前操作系统和运行平台领域研究相对薄弱的环节,需要从态势评估、演化决策、效果评估、人机物协同演化等多个角度开展研究。首先,作为支撑复杂软件系统运行的“元层容器”,操作系统和运行平台有可能采集到各个软件实体的运行状态和环境状态,基于大数据的软件系统态势评估需要从中“去粗取精、去伪存真”,提取出能够作为适应和演化依据的运行态势。其次,为了支撑软件根据环境和状态变化自主做出在线调整和演化的决策,操作系统和运行平台需要提供什么样的支撑,以及在这一过程中如何支持“人在回路中”发挥作用,这一问题仍有待深入探索。再次,由大量自治软件单元所组成的复杂软件系统中,适应性演化动作往往发生在单元、子系统、系统等多个尺度上,需要在“元层”对各个尺度上的演化效果进行评估,必要时进行多个尺度上的演化调整。最后,如\ref{os-evolution}节所述,新一代操作系统需要有能力支撑“信息-物理-社会”空间的协同持续演化,相关机理和实现机制亟待突破。
\subsection{基于开源和众包的操作系统生态链构建技术}\label{os-research10}
开源和众包对操作系统及其上生态链的发展已经产生深远影响。如何在操作系统生态链构建过程中,最大限度扬长避短,发挥开源和众包的优势,是需要深入研究的问题。首先,在使用开源资源时,如指导思想和方法不当,可能导致在产品中包含若干“黑盒子”,引入代码不可控、产品升级被动等风险,因此,需要研究操作系统代码来源链的建模和分析方法,以及多来源和开源/闭源混源代码缺陷的定位和溯源方法。其次,开源的优势之一是可以促进面向行业或应用场景需求的专用操作系统的发展,在严格遵循开源许可证的前提下,实现操作系统的快速定制。这可能会对操作系统的可剪裁性产生深远影响,甚至催生未来新的商业模式。再次,如何在技术、平台和机制设计层面上驱动开源社区的群智汇聚,丰富和完善操作系统及其上软件生态链,也是未来系统软件领域的重要研究内容。
\section{本章小结}
无论是今天还是未来,操作系统都是“软件作为基础设施”的集中体现,也是“软件定义一切”能力的基石。在计算泛在化背景下,未来的操作系统将突破当前单机操作系统这一狭义形式,向支撑人机物融合、具有“资源虚拟化”和“功能可编程”特点的泛化运行平台过渡。受这一趋势所推动,一系列重大挑战性问题涌现,包括支持软件定义的新型运行平台架构、泛在资源的高效虚拟化和调度方法、软件系统持续适应演化的支撑机制、人机物融合过程中的安全与隐私问题等。本章对上述挑战的概念内涵、产生背景和展开后的具体问题进行了详细阐述,并在此基础上结合操作系统和运行平台领域当前研究热点,从未来操作系统的不同形态角度,对领域研究方向及内容进行了梳理。