鸿蒙内核论文阅读总结概述

原文链接:

https://www.usenix.org/system/files/osdi24-chen-haibo.pdf

“Microkernel Goes General: Performance and Compatibility in the HongMeng Production Microkernel” 由 Haibo Chen 等人撰写,介绍了鸿蒙内核(HM)的设计与实现。HM 是一款商业化的通用微内核,在保持微内核优势的同时,解决了在通用场景下的性能和兼容性问题。

  1. 研究背景
    • 微内核的优势与局限:微内核具有安全性、可靠性和可扩展性等优点,在嵌入式和安全关键场景中得到广泛应用。然而,在面向智能手机和智能汽车等更通用的场景时,面临性能和兼容性问题。
    • 通用场景的需求:新兴场景如智能车辆和智能手机需要丰富的外设和应用,强调安全性和可靠性,同时对性能要求较高。现有的操作系统难以同时满足这些需求。
  2. HM 的设计理念
    • 最小化微内核与隔离的 OS 服务:保留微内核的最小化原则,将必要的功能放在核心内核中,其他组件作为隔离的 OS 服务放在核心内核之外。采用细粒度的访问控制,以保持最小特权原则。
    • 最大化兼容性:通过实现 Linux API/ABI 兼容和高效的驱动重用来集成现有软件生态系统。使用 ABI 兼容的垫片来识别和重定向 Linux 系统调用,通过驱动容器重用未修改的 Linux 驱动。
    • 性能优先:在不违反微内核架构原则的前提下,优先考虑性能。采用灵活的组合方式来减少 IPC 开销,通过地址令牌补充能力来实现高效的内核对象合作,支持无策略的内核分页。
  3. 性能设计
    • 同步 RPC - like IPC Fastpath:采用类似 RPC 的线程迁移作为 IPC 的快速路径,解决了异步 IPC 在新兴场景中的问题。同时,考虑了 IPC 的内存占用、资源耗尽和资源核算等问题。
    • 差异化隔离类:根据 OS 服务的特性采用差异化隔离类,为不同的服务提供定制的隔离和性能。包括核心 TCB、机制强制隔离和地址空间隔离等类别。
    • 灵活组合:允许在性能要求较高的场景下合并紧密耦合的 OS 服务,以减少 IPC 频率和消除状态重复记账。同时,在安全关键场景下保留分离服务的能力。
    • 基于地址令牌的访问控制:提出基于地址令牌的访问控制方法,解决了基于能力的访问控制在新兴场景中的性能问题。通过将内核对象映射到地址空间,实现了高效的内核对象合作。
    • 无策略内核分页:采用集中式内存管理,通过预先做出策略驱动的决策,在核心内核中留下无策略的页面故障处理机制,提高了处理匿名内存页面故障的性能。
  4. 兼容性设计
    • Linux ABI 兼容性:通过在 IC0 放置 ABI 兼容的垫片来实现 Linux ABI 兼容性,垫片将 Linux 系统调用重定向到适当的 OS 服务,并作为全局状态的中央存储库,支持 fd 复用和 fork 等功能。
    • 驱动容器:通过驱动容器重用 Linux 设备驱动,容器提供必要的 Linux KAPIs,允许现有驱动在不修改的情况下运行。采用控制平面和数据平面分离的方法提高驱动的性能。
  5. 实际应用与性能对比
    • 实现与部署:HM 的核心内核由 90k 行 C 代码实现,其他 OS 服务可单独部署,总计超过 100 万行代码。已在数千万台设备上进行了部署,根据不同场景进行了配置。
    • 性能对比:在智能手机、智能车辆和智能路由器等新兴场景中,与 Linux 相比,HM 在上下文切换、网络、应用启动时间、帧丢失和中断延迟等方面具有更好的性能,同时减少了内存占用和系统启动时间。
  6. 经验与教训
    • 兼容性优先,逐步本地化:兼容性是商业部署的关键第一步,通过大规模测试来检查兼容性。
    • 先部署,再持续优化:微内核难以在初始阶段满足所有性能目标,需要进行全系统优化。采用半形式化验证和自动化验证来提高代码质量。
    • 硬件故障的放大:在大规模部署时,一些低概率的硬件故障可能会影响用户体验,通过隔离关键驱动和创建监视器来缓解这些问题。
    • 大内核锁在新兴场景中不可扩展:在新兴场景中,大内核锁面临可扩展性问题,需要采用其他方法来解决并发问题。
  7. 结论与未来工作
    • HM 是一款商业化的通用微内核,保留了微内核的原则,同时解决了在新兴场景中的兼容性和性能问题。为未来微内核在生产中的应用提供了参考。
    • 未来的工作包括进一步探索微内核在硬件异构性和容错方面的应用,以及提高自动化验证的效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/2628.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

[OS] mmap() 函数的参数及其作用

参数说明: addr:映射区域的起始地址。如果设置为 0,则由内核自动选择页对齐的地址。length:需要映射的字节数,决定映射的区域大小。prot:映射区域的内存保护属性,如只读、可读写等。这个属性不…

meta-learning based FD论文阅读笔记

[1]Semi-Supervised Temporal Meta-Learning Framework for Wind Turbine Bearing Fault Diagnosis Under Limited Annotation Data 问题背景 the fault data are so scarce that it is time-consuming to acquire a well behaved deep learning modelmuch unlabeled data ca…

web渗透——小白入狱

目录 理论知识总结一、Web渗透核心知识点二、Web渗透实操案例三、Web渗透学习建议实操案例一、信息收集实操步骤: 二、SQL注入实操步骤: 三、跨站脚本攻击(XSS)实操步骤: 四、CSRF攻击实操步骤: 五、本地文…

一个完整的产品级物联网系统在农业领域的应用,通过传感器、通信、云计算和控制设备的协同工作,实现了智能化的农业灌溉管理

以下为您详细介绍一个智能农业灌溉系统作为产品级的物联网实际案例: **一、项目背景** 随着农业现代化的发展,精准灌溉对于提高农作物产量、节约水资源具有重要意义。传统的灌溉方式往往依赖人工经验,效率低下且浪费水资源。因此&#xff0c…

JeecgBoot入门

最近在了解低代码平台,其中关注到gitee上开源项目JeecgBoot,JeecgBoot官方也有比较完整的入门教学文档,这里我们将耕者官方教程学习,并将其记录下来。 一、项目简介 JeecgBoot 是一款基于代码生成器的低代码开发平台拥有零代码能力…

qt QEvent详解

1、概述 QEvent是Qt框架中事件机制的基础类。在Qt中,事件是由底层窗口系统(如Windows、Linux的X11、macOS的Cocoa等)生成的,Qt的主事件循环(QCoreApplication::exec())负责从事件队列中获取这些事件&#…

#Jest进阶知识:整合 webpack 综合练习

这一小节,我们来做一个综合的练习,该练习会整合: typescriptwebpackjest 准备工作 首先创建项目目录,通过 npm init -y 进行初始化。 整个项目我们打算使用 typescript 进行开发,因此需要安装 typescript npm i t…

【安卓13 源码】Input子系统(4)- InputReader 数据处理

1. 多指触控协议 多指触控协议有 2 种: > A类: 处理无关联的接触: 用于直接发送原始数据; > B类: 处理跟踪识别类的接触: 通过事件slot发送相关联的独立接触更新。 B协议可以使用一个ID来标识触点&…

VMware 虚拟机使用教程及 Kali Linux 安装指南

VMware 虚拟机使用教程及 Kali Linux 安装指南 在现代计算机科学与网络安全领域,虚拟化技术的应用越来越广泛。VMware 是一款功能强大的虚拟化软件,可以帮助用户在同一台物理机上运行多个操作系统。本文将详细介绍如何使用 VMware 虚拟机,并…

工业通信网关的各项功能解析-天拓四方

在工业自动化和智能制造的浪潮中,工业通信网关作为连接工业现场与互联网的重要桥梁,发挥着至关重要的作用。它不仅实现了不同网络协议之间的转换,还在数据采集、设备控制、网络管理等方面展现出强大的功能。 一、协议转换功能 工业通信网关…

用Python打造媒体管理播放器:从零到全功能GUI应用

背景 在日常生活中,我们经常需要管理和播放大量媒体文件。市面上的音频播放器可能功能单一,或者界面复杂。作为一名程序员,我决定使用Python自己打造一个简单yet强大的媒体管理播放器。 C:\pythoncode\new\playsong.py 全部代码 import os…

ubuntu 20.04 安装使用 nvidia gdrcopy

1,预备环境 首先安装 nvidia display driver ,cuda toolkit 其次安装依赖工具 sudo apt install build-essential devscripts debhelper fakeroot pkg-config dkms 2,下载源码 git clone --recursive https://github.com/NVIDIA/gdrcopy.…

MongoDB简介

一.MongoDB相关概念 1.1.简介 MongoDB是一个开源,高性能,无模式的文档性数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最像关系型数据库(MySQL)的非关系数据库。 它支持的…

Socket篇(学习前言)

目录 一、计算机网络 二、网络编程 三、网络编程三要素 1. IP地址 1.1. 简介 1.2. IP地址分为两大类 IPv4 IPv6 1.3. IP地址形式 1.4. DOS常用命令 1.5. 特殊IP地址 2. 端口 2.1. 简介 2.2. 端口号 2.3. 端口类型 周知端口 注册端口 动态端口 3. 协议 3.1. …

【专题】基于服务的体系结构

对于面向服务的体系结构(Service-Oriented Architecture,SOA)的几种定义: W3C:SOA是一种应用程序体系结构,在这种体系结构中,所有功能都定义为独立的服务,这些服务带有定义明确的可…

AMD显卡低负载看视频掉驱动(chrome edge浏览器) 高负载玩游戏却稳定 解决方法——关闭MPO

问题 折磨的开始是天下苦黄狗久矣,为了不再被讨乞丐的显存恶心,一怒之下购入了AMD显卡(20GB显存确实爽 头一天就跑了3dmark验机,完美通过,玩游戏也没毛病 但是呢这厮是一点不省心,玩游戏没问题&#xff0c…

小容器拉动大市场 全面云原生化刻不容缓

毋庸置疑,容器技术的发展推动了云原生计算革命。当前,在云原生已经成为企业用云新常态的情况下,作为一项核心能力,容器管理与服务也成了检验云服务商的试金石。Omdia最新发布的《Omdia Universe: Cloud Container Management &…

一招帮你搞懂数据结构的插入、删除

目录 一、尾部插入(添加) 1.初始化 2.一个打印数组的函数 3.尾插 4.完整版 二、任意位置插入 1.流程图 2.任意插 3.完整版 三、指定数据删除 1.流程图 2. 删除(首位查找到的元素) 四、删除所有 思想 代码 五、有序…

二叉树相关算法

满二叉树:每层都是满的 完全二叉树:特殊的满二叉树,可以有一个子节点,但最后一层必须是从左到右排列,中间不能有空隙,强调除了最后一层外,其他层都是满的 一、dfs深度搜索 例题:求…

Sigrity Power SI VR noise Metrics check模式如何进行电源噪声耦合分析操作指导

SSigrity Power SI VR noise Metrics check模式如何进行电源噪声耦合分析操作指导 Sigrity Power SI的VR noise Metrics check模式本质上是用来评估和观测器件的电源网络的耦合对于信号的影响,输出S参数以及列出具体的贡献值。 以下图为例