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

笔记来自新书:《鸿蒙操作系统设计原理与架构》
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.mzph.cn/diannao/53861.shtml

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

相关文章

Unity教程(十五)敌人战斗状态的实现

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

react js 路由 Router

完整的项目,我已经上传了 资料链接 起因, 目的: 路由, 这部分很难。 原因是, 多个组件,进行交互,复杂度比较高。 我看的视频教程 1. 初步使用 安装: npm install react-router-dom 修改 index.js/ 或是 main.js 把 App, 用 BrowserRouter 包裹起来 2. Navigate 点击…

redis基本数据类型和常见命令

引言 Redis是典型的key-value(键值型)数据库,key一般是字符串,而value包含很多不同的数据类型: Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( Commands | Do…

TS 常用类型

我们经常说TypeScript是JavaScript的一个超级 TypeScript 常用类型 TypeScript 是 JS 的超集,TS 提供了 JS 的所有功能,并且额外的增加了:类型系统 所有的 JS 代码都是 TS 代码 JS 有类型(比如,number/string 等&…

《JavaEE进阶》----14.<SpringMVC配置文件实践之【验证码项目】>

本篇博客介绍的是Google的开源项目Kaptcha来实现的验证码。 这种是最简单的验证码。 也是很常见的一种验证码。可以去看项目结果展示。就可以明白这个项目了。 前言: 随着安全性的要求越来越高、很多项目都使用了验证码。如今验证码的形式也是有许许多多、更复杂的图…

基于SpringBoot的古城墙景区管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的古城墙景区管理系…

2024数学建模国赛官方评阅标准发布!

​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑​↑…

C++类与对象(下)--最后的收尾

内部类 • 如果⼀个类定义在另⼀个类的内部&#xff0c;这个内部类就叫做内部类。内部类是⼀个独⽴的类&#xff0c;跟定义在 全局相⽐&#xff0c;他只是受外部类类域限制和访问限定符限制&#xff0c;所以外部类定义的对象中不包含内部类。 #include<iostream> using…

安装FTP服务器教程

一。安装vsftpd yum install vsftpd 二。修改配置文件&#xff0c;匿名账户具有访问&#xff0c;上传和创建目录的权限 vim /etc/vsftpd/vsftpd.conf &#xff08;红色进行设置放开YES&#xff09; local_enable&#xff1a;本地登陆控制&#xff0c;no表示禁止&#xff0c;ye…

3. 轴指令(omron 机器自动化控制器)——>MC_MoveAbsolute

机器自动化控制器——第三章 轴指令 4 MC_MoveAbsolute变量▶输入变量▶输入输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启运动指令▶多重启动运动指令▶异常 示例程序1▶参数设定▶动作示例▶梯形图▶结构文本(ST) 示例程序2▶参数设定▶动作示例▶梯形图▶结构文…

RDMA应用场景及效果

GPU Direct 参考&#xff1a;网络架构如何支持超万卡的大规模 AI 训练&#xff1f;| AICon_芯片与网络_InfoQ精选文章 GPU 网络的情况已经发生了很大变化。每个 GPU 都有自己的内部互联&#xff0c;例如 NVIDIA 的 A100 或 H800&#xff0c;它们内部的 NVLink 互联可以达到 6…

单个 java 虚拟机 生产者消费者

一、通过 java.lang.Object#wait()&#xff0c;java.lang.Object#notify&#xff0c;java.lang.Object#notifyAll来实现 生产者&#xff0c;消费者 public abstract class Goods {protected String type;protected String goodName;protected int number;public abstract …

【Authing身份云-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

香港打工人√三天通过微软mos认证

在繁忙的香港&#xff0c;时间就是金钱&#xff0c;效率就是生命。作为一名香港的打工人&#xff0c;在这座竞争激烈的城市中&#xff0c;不断提升自我是保持竞争力的关键。最近&#xff0c;我完成了一项挑战&#xff1a;在短短三天内通过微软MOS认证大师。以下是我备考的经验分…

微调大模型:提高其代码修复能力的尝试

目录 一、作品背景&#xff1a; 二、作品目标&#xff1a; 三、作品技术方案&#xff1a; (1)标记化 (2)量化 (3) LoRA&#xff08;低秩自适应&#xff09;配置 (4)训练配置 (6)模型保存 四、作品效果&#xff1a; 一、作品背景&#xff1a; 随着大型模型技术的日益成…

SOMEIP_ETS_107: SD_Consider_Entries_Order

测试目的&#xff1a; 验证DUT在接收到包含两个条目的消息时&#xff0c;能够按照正确的顺序处理&#xff1a;首先是带有TTL 0的SubscribeEventgroup以删除订阅&#xff0c;然后是常规的SubscribeEventgroup以重新订阅。 描述 本测试用例旨在确保DUT能够正确处理订阅消息的顺…

Frida0C - Module相关API

亲爱的读者你们好啊&#xff0c;今天主要分享一下 frida 相关的学习文档&#xff0c;见文章最后一节。 Module var module Process.findModuleByAddress(Module.findBaseAddress("libc.so")) module.enumerateSymbols()enumerateSymbols 返回该 so 的符号表。 还…

Java项目: 基于SpringBoot+mybatis+maven医院管理系统(含源码+数据库+任务书+开题报告+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven医院管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

ffmpeg安装测试(支持cuda支持SRT)

文章目录 背景安装ffmpeg直接下载可执行文件选择版本选择对应系统版本下载测试Linux下安装 查看支持协议以及编码格式 常见错误缺少 libmvec.so.1LD_LIBRARY_PATH 错误 GPU加速测试SRT服务器搭建下载srs5.0源码解压安装配置启动 SRT推流测试SRT播放测试 背景 在音视频开发测试中…

视频监控管理平台LntonAIServer视频智能分析抖动检测算法应用场景

在视频监控系统中&#xff0c;视频画面的稳定性对于确保监控效果至关重要。抖动现象是指视频画面中存在不稳定或频繁晃动的情况&#xff0c;这可能会影响视频的清晰度和可读性。LntonAIServer通过引入抖动检测功能&#xff0c;帮助用户及时发现并解决视频流中的抖动问题&#x…