鸿蒙读书笔记1:《鸿蒙操作系统设计原理与架构》

news2024/11/14 2:03:29

笔记来自新书:《鸿蒙操作系统设计原理与架构》
HarmonyOS采用分层架构,从下到
上依次分为内核层、系统服务层、框架层和应用层。

1. 内核层
内核层主要提供硬件资源抽象和常用软件资源,包括进程/线程管
理、内存管理、文件系统和IPC(Interprocess Communication,进程
间通信)等。
内核子系统:采用多内核(如Linux内核或LiteOS等)设计,支持针
对 不 同 资 源 受 限 设 备 选 用 合 适 的 内 核。
KAL(Kernel Abstract Layer,内核抽象层)通过屏蔽多内核差异,
为上层提供内核的统一基础能力,包括进程/线程管理、内存管理、
文件系统、网络管理和外围设备管理等。
驱动子系统:HDF是系统硬件生态开放的基础,提供统一的外围设
备访问能力和驱动开发、管理框架。

2. 系统服务层
系统服务层是HarmonyOS的核心能力集,该层包含以下几个部分。
系统基本能力子系统集:为分布式用户程序在HarmonyOS多设备上
的运行、调度、迁移等操作提供基础能力。该子系统集由分布式软
总线、分布式数据管理、分布式任务调度,以及公共基础库、多模
输入、图形、安全、AI、方舟编译运行时等子系统组成。
基础软件服务子系统集:提供公共通用的软件服务,由事件通知、
电话、多媒体、DFX、MSDP(Multimodal Sensor Data Platform,多
模态传感数据平台)等子系统组成。
增强软件服务子系统集:提供针对不同设备的、差异化的能力增强
型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子
系统组成。
硬 件 服 务 子 系 统 集: 提 供 硬 件 服 务, 由 位 置 服 务、
IAM(Identity and Access Management,身份和访问管理)、穿戴专
有硬件服务、IoT专有硬件服务等子系统组成。
3. 框架层
框架层是用户程序和系统交互的桥梁,为用户程序开发提供
JavaScript、C、C++等多语言的用户程序开发框架,以及UI框架、
Ability框架等同时为系统服务层的软硬件服务提供对外开放的多语
言框架API。
4. 应用层
应用层包括基础用户程序和第三方用户程序,基础用户程序作为系
统的一部分,以用户程序的形式向用户和第三方用户程序提供系统
服务能力。第三方用户程序是HarmonyOS生态丰富的基础,
HarmonyOS用户程序通常由一个或多个HA组成,支持跨设备的调度
与分发,为用户提供一致、高效的体验。

HarmonyOS关键技术
1. 分布式
分布式技术包括分布式计算、分布式存储、分布式调度、分布式软
总线、分布式安全、分布式硬件等。
分布式计算:HarmonyOS分布式计算,是指单个用户程序可以分解
为多个可执行实体,多个可执行实体分布在多个终端设备上分别执
行,最终协同完成整体任务。此处的分布式计算与以实现超算为目
的的并行计算和以弹性任务部署为目的的云系统中的分布式计算定
义有所不同。为了区别它们,把此处的分布式计算定义为“异构多端
非对称分布式计算”,而把后面两种定义为“同构多端对称分布式计
算”。可执行实体不是简单的一组指令,在HarmonyOS中一般以HA
为单位。
分布式存储:分布式存储(Distributed Storage)是指系统的各种存
储(如文件、数据库等)接口可以跨越不同的设备,文件的物理存
储位置由系统自动选择,用户程序不感知,用户程序感知的是经过
系统映射的逻辑存储位置。相对于单端文件系统,分布式文件系统
是允许文件通过网络在多台主机上分享的文件系统。对于文件访
问,单端文件系统一般直接访问底层的数据存储区块,而分布式文
件系统则以特定的通信协议和其他设备的存储服务一起访问。分布
式文件系统一般基于文件ACL(Access Control List,访问控制列
表)或用户授权等方式实现对文件系统的访问控制。CAP定理
(CAP Theorem)又称布鲁尔定理(Brewer’s Theorem)指出,对一
个 分 布 式 系 统 来 说, 数 据 的 一 致 性、 可 用 性 和 分 区 容 错 性
(Partition Tolerance) 无 法 兼 具, 最 多 只 能 具 备 两 种。 在
HarmonyOS中,可用性优先级一般高于一致性优先级。
分布式调度:分布式调度(Distributed Schedule)是指对分布在不同
设备上的软件实体和系统服务进行统一调度。其中,对软件实体的
分布式调度,是指对可分解为多个可执行实体的单个用户程序,操
作系统将各个可执行实体分布在多个终端设备上执行,最终协同完
成整体任务,其分布式调度过程由操作系统根据系统动态配置的业
务和调度策略自动判别实施,用户程序自身不能主动实施。
分布式软总线:支持处于同一分布式系统下的设备之间自发现、自
连接、自组网及处于不同分布式系统下的设备之间发现和业务按需
互联的能力;在各种复杂环境里,最大程度地提高空口利用率,保
证多设备、多业务并发时高优先级业务的用户体验。
分布式安全:HarmonyOS提出一套基于分级安全理论体系的安全架
构,围绕“正确的人,通过正确的设备,正确地访问数据”,来构建
一套新的、纯净的用户程序和有序透明的生态秩序,为用户和开发
者带来安全分布式协同、严格隐私保护与数据安全的全新体验。
HarmonyOS安全能力根植于硬件实现的3个可信根,即启动、存储、
计算,以基础安全工程能力为依托,重点围绕设备完整性保护、数
据机密性保护、漏洞攻防对抗构建相关的安全技术和能力。
分布式硬件:一种虚拟化技术,包括虚拟外围设备和虚拟服务两
种。虚拟外围设备支持将处于同一分布式系统下的其他物理终端上
的外围设备,映射为本地物理设备的虚拟外围设备,从而使用户程
序可以无感知地使用处于同一分布式系统下的其他物理终端上的外
围设备。虚拟服务支持将处于同一分布式系统下的其他物理终端上
的服务,包括系统服务和用户程序提供的服务,映射为本地物理设
备的虚拟服务,从而使用户程序可以无感知地使用处于同一分布式
系统下的其他物理终端上的服务。
2. 用户程序平滑迁移
在分布式系统中存在多个物理终端的情况下,用户程序可平滑地在
不同终端上迁移,即正在物理终端A上执行的用户程序,可以迁移
到处于同一分布式系统下的其他物理终端上继续执行。为简化系统
复杂性,对用户程序迁移进行如下设计约束。
第一,仅支持有限度的状态恢复,暂不考虑任意状态下的完全恢
复。
第二,只有采用HarmonyOS分布式开发框架开发的用户程序才能实
现平滑迁移。
第三,可迁移的用户程序需设计多状态可重入入口,即用户程序需
要设计1~N个状态,并且每个状态都有直达入口。例如,用户程序
A存在5个状态A~E,该程序在物理终端A上执行到状态B时发生迁
移,在迁移到目标设备上时,用户程序A将从状态B的初始阶段而非
状态B的当前阶段开始执行。
第四,每个可迁移的用户程序执行实体均会在编译时生成系统资源
需求Profile,只有满足系统资源需求的物理终端才能作为迁移的目标
终端。识别匹配迁移目标终端的过程由操作系统自动完成,用户程
序不能主动干预。IDE需要提供典型可迁移目标终端的仿真结果,并
在用户程序开发过程中让开发者理解其所开发的用户程序具备怎样
的可迁移能力,以及可迁移到哪些类型的物理终端上。
3. GUI自适应
前文讲到HarmonyOS支持让GUI自动适配各种尺寸、各种形状的屏
幕,实现用户一次编程就可在多种设备上运行的目标。事实上,操
作系统无法确保对任意GUI的自动适配都能提供令人满意的视觉体
验,譬如,由于可能出现如图像过度缩放导致图像不美观甚至难以
识别,要显示的文字信息太多而在较小屏幕上无法有效显示等问
题,HarmonyOS自适应布局技术对开发者的GUI设计存在一定的技
术约束。为了让开发者直观了解其所开发的GUI在不同物理终端上
的自适应布局效果,并能够进行针对性设计,指示系统在某些条件
下进行何种自适应处理,HarmonyOS IDE提供在开发过程中对各种
典型终端的仿真能力。当然,用户程序开发者也可以指定某些类型
的物理终端作为用户程序运行的目标终端。
4. 部件化拼装
HarmonyOS支持高度部件化,通过编译配置构建不同的部件,再通
过HPM将其拼装为可运行在目标终端上的系统镜像包。需要指出的
是,用于描述设备SystemCapability的Profile文件也会在编译构建过
程中自动生成,并最终打包在系统镜像包中。对于无法通过功能解
耦方式裁剪到目标大小的部件,则需要提供多种部件形态供HPM选
择。譬如,由于Linux内核无法裁剪到10 KB级别,HarmonyOS内核
部件组可提供Linux内核、LiteOS-A内核和LiteOS-M内核3种部件形
态。对于涉及多个部件形态的情况,HarmonyOS要求各部件接口集
合必须满足真子集包含关系。譬如,对于内核部件要求LiteOS-M接
口集合为LiteOS-A接口集合的真子集,则LiteOS-A接口集合必须为
Linux内核接口集合的真子集。
5. 语言统一运行时
HarmonyOS支持多范式多编程语言的用户程序开发,支持的编程语
言包括ArkTS(华为在TypeScript基础上扩展定义的一种语言超
集)、JavaScript、仓颉(华为自研编程语言)、C/C++等,用户需
要相应的工具链和运行时来支撑这些高级编程语言的高效开发和运
行。Ark Compiler作为HarmonyOS的统一编程平台,包含编译器、工
具链、运行时等关键部件,支持多种编程语言、多种芯片平台的联
合编译与运行,通过插件化和模块化机制提供对不同编程语言和不
同运行设备场景的支持。
语言支持插件化使得语言接入可配置,例如在轻量设备上,可配置
为JavaScript单一语言运行时。运行时系统支持模块化按需组合,其
中执行引擎包括解释器、JIT(Just-In-Time,即时)编译器、
AOT(Ahead Of Time,预先)编译器等,内存管理包括多种分配器
和垃圾回收器。例如在轻量设备上,可选择纯解释器执行引擎方
案。
6. 按需启停
与传统操作系统不同,HarmonyOS的内核线程和驱动不会在内核启
动时完全启动。启动的时机因不同的产品形态或不同的场景而不尽
相同,总的原则是按需加载和启动。譬如,在车机快速启动场景
下,内核只会启动与倒车影像等特性相关的部件。从用户态进程来
看,系统服务分为常驻服务和按需加载服务。常驻服务在系统启动
时启动,按需加载服务根据业务需要由系统动态加载,在业务结束
后系统动态关闭。同理,系统核心基础用户程序在系统启动时加
载,其他基础用户程序及第三方用户程序按业务需要由系统动态加
载。系统服务或用户程序出现故障时,系统需要根据故障服务的类
型对相关服务进行恢复,确保提供更好的用户体验。
7. 多模态交互
多模态交互是指整合或融合两种及两种以上的交互方式,给用户提
供更便捷、更人性化的体验。交互方式包括键盘/鼠标或触控方式的
GUI、 语 音 控 制 方 式 的 VUI(Voice User Interface, 语 音 用 户 界
面)、手势/姿态控制的CVUI(Computer Vision User Interface,计算
机视觉用户界面)和GeUI(Gesture User Interface,手势用户界
面),以及基于设备之间相对位置变化的交互等。多模态交互是下
一代操作系统的重要交互方式,是支持多设备和全场景的关键能
力,是AI交互能力向开发者开放的关键路径。在原子化服务的时
代,多模态交互是服务和用户之间的纽带,是多种设备统一交互的
关键技术,需要在操作系统层面构建。
8. 可动态挂载的HDF驱动框架
HarmonyOS采用全新设计的HDF驱动框架,实现驱动与系统完全解
耦,以及可在运行态动态挂载,使得驱动可以极低成本重用,突破
了传统驱动重用代价大、无法动态扩展硬件、安全风险高的瓶颈。
HDF驱动框架采用面向对象编程模型方式进行构建,通过硬件抽
象、内核解耦等方式,实现兼容不同内核部署的目的,从而帮助开
发者实现驱动“一次开发,多端部署”的效果。
9. 原生智能
原生智能包括HarmonyOS内置AI基础能力和利用AI自主改造的能
力。AI基础能力主要包括对AI硬件的管理、内置AI开发框架及AI推
理和训练模型等,方便用户程序和操作系统的其他子系统高效利用
系统的AI资源。操作系统利用AI自主改造的能力主要体现在利用预
置的AI能力进一步提升操作系统中其他子系统的智能化水平。

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

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

相关文章

若依plus-cloud nacos yml 动态获取 配置内容

这是剑走偏锋的写法。 直接上代码 在nacos中配置一个ruoyi-cms.yml 内容中有cms:filepath:******* springcloud配置 package org.dromara.cms.entity;import lombok.RequiredArgsConstructor; import org.springframework.core.env.Environment; import org.springframewo…

电脑怎么录屏?四款录屏工具分享

作为一个刚刚踏入视频创作领域的新手,我一直在寻找一款适合自己的录屏软件。最近,我尝试了四款市面上比较热门的录屏工具。今天,就让我来分享一下我的使用体验,希望能给同样在寻找录屏软件的朋友们一些参考。 一、福昕录屏大师 …

OpenCV运动分析和目标跟踪(1)累积操作函数accumulate()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将一个图像添加到累积图像中。 该函数将 src 或其部分元素添加到 dst 中: dst ( x , y ) ← dst ( x , y ) src ( x , y ) if mask…

为什么矩阵特征值之和等于主对角线元素之和,特征值乘积等于行列式值

首先给出特征值和特征向量的定义。 设A是n阶矩阵,如果数λ和n维非零向量x使关系式 Axλx (1) 成…

DPO: Direct Preference Optimization 介绍

DPO 是 RLHF 的屌丝版本,RLHF 需要加载 4 个模型(2个推理,2个训练),DPO 只需要加载 2 个模型(1个推理,一个训练)。 RLHF: DPO: DPO 原理 DPO 的本质是监督对…

canfd 卡 canfd-422ac在汽车电子测试中的大作用

随着汽车电子的高速发展,车内信息的急剧增多,传统的CAN总线的数据传输能力已经很难满足车辆ECU的数据传输需求了,此时CANFD就应运而生了。![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c3822ac2b2ed4694a58132e0b4743e99.png)CAN…

无需部署,云电脑带你秒变AI绘画大师

在人工智能的浪潮中,AI 绘画逐渐火爆,通过关键字描述就能让AI把你想要的画面完美展示出来。 当前最火的绘画软件当属 Midjonary, Midjourney 界面比较直观,适合新手以及非专业的用户,风格比较多样,可以轻松…

Python “集合” 100道实战题目练习,巩固知识、检查技术

本文主要是作为Python中列表的一些题目,方便学习完Python的集合之后进行一些知识检验,感兴趣的小伙伴可以试一试,含选择题、判断题、实战题、填空题,答案在第五章。 在做题之前可以先学习或者温习一下Python的列表,推荐…

Python selenium 破解腾讯滑块行为验证码

直接上代码: from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time,re,requests from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from seleniu…

leetcode两个题:只出现一次的数字、杨辉三角等的介绍

文章目录 前言一、只出现一次的数字二、杨辉三角总结 前言 leetcode两个题&#xff1a;只出现一次的数字、杨辉三角等的介绍 一、只出现一次的数字 0跟任何数异或结果都是任何数相同的数异或结果为0 class Solution { public:int singleNumber(vector<int>& nums) …

Navigation之使用Safe Args传递数据(二)

系列文章目录 Navigation的简单使用(一&#xff09; 一、Safe Args传递数据 1.引入库 1.将 Safe Args 添加到您的项目&#xff0c;请在顶层 build.gradle 文件中包含以下 classpath&#xff1a; buildscript {repositories {google()}dependencies {def nav_version "…

2024年9月114日(使用kubectl run 创建pod|配置文件创建pod)

一、pod 1、更改镜像站 [rootk8s-master ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","http…

如何将本地项目上传到GitHub(SSH连接)

在个人GitHub中新建项目(远程仓库)&#xff0c;添加一个README文件&#xff0c;方便后面验证 记住这个默认分支&#xff0c;我这里是main&#xff0c;你的可能是master或其他 先复制下SSH地址 在项目文件夹中右键打开Git命令行 初始化本地仓库&#xff0c;同时指定默认分支为ma…

MyBatis 面试题11-27

11、Mybatis 是如何将 sql 执行结果封装为目标对象并返回的? 都有哪些映射形式&#xff1f; Mybatis 在执行 SQL 查询后&#xff0c;会将结果集封装为目标对象并返回。这主要依赖于 Mybatis 的映射机制&#xff0c;它提供了两种主要的映射形式&#xff1a; 第一种&#xff1…

【触想智能】工控一体机在船舶航运上应用的优势和应用场景分析

随着船舶航运业的发展&#xff0c;工控一体机在船舶航运领域上的应用越来越广泛。工控一体机的功能和性能可以加强船舶航运领域的自动化和智能化水平。 下面&#xff0c;触想智能小编针对工控一体机在船舶航运领域上应用的优势和应用场景进行简单分析&#xff0c;给大家借鉴参考…

LVGL控件之表格(lv_table)

目录 一、概述二、表格1、设置单元格的值2、行和列的设置3、宽度和高度的设置4、合并单元格5、滚动6、事件7、API 函数 一、概述 Table&#xff08;表格&#xff09;是由包含文本的行、列和单元格构建的。 表格对象非常轻量级&#xff0c;因为仅存储文本。没有为各个单元格创…

Altium Designer常用操作备忘笔记

Altium Designer常用操作备忘笔记 Chapter1 Altium Designer常用操作备忘笔记Chapter2 Altium Designer 22.1.2使用总结&#xff08;常更&#xff09;一、原理图1.1 绘制元器件原理图1.2 绘制元器件封装1.3 修改原理图网格1.4 修改原理图库后更新当前原理图1.5 旋转和翻转1.6 悬…

Leetcode Hot 100刷题记录 -Day15(螺旋矩阵)

螺旋矩阵 问题描述&#xff1a; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]]输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a; 输…

104. 二叉树的最大深度【 力扣(LeetCode) 】

零、LeetCode 原题 104. 二叉树的最大深度 一、题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 二、测试用例 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出…

[git] MacBook 安装git

文章目录 1.Mac Git 安装2. 开发者工具安装 CommandLineTools安装完成&#xff0c;错误解决 3. git 账户配置账户设置生成秘钥git 或者 gitee 仓库添加公钥查看全局账户命令多账户设置config文件测试连接clone到本地 1.Mac Git 安装 Mac一般自带Git工具&#xff0c;也就是说已…