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

news2024/11/15 10:04:43


2. OS基础平台部件化
(1)内核层
内核层包括内核部件和HDF驱动框架部件。当前已提供LiteOS-M、
LiteOS-A、Linux和UniProton这4种内核部件,未来还可增加更多类
型的内核部件。LiteOS、Linux内核部件可以按需部署在不同设备之
上,内核层向系统服务层提供POSIX/ CMSIS接口,用于屏蔽不同的
内核实现差异。同时向系统服务提供标准化的HDI,屏蔽不同厂商
驱动的实现差异。内核层的部件化设计如图3-4所示。
图3-4 内核层的部件化设计
(2)系统服务层和框架层
HarmonyOS架构分层根据功能定位区分了系统服务层和框架层,系
统服务层是所有系统服务的汇总,通过框架层向用户程序暴露API。
单个系统能力实现通常分布在系统服务层和框架层,考虑到系统服
务和框架紧密耦合,在HarmonyOS中未统一定义系统服务层和框架
层的层间接口,针对同一个功能实现的系统服务和框架组合在一起
形成一个个独立的“部件”,部件提供一定的系统能力和对应的API能
力。注意,有的部件不对外提供对应的API能力。部件之间基于
InnerSDK完成解耦,支持独立代码下载、独立编译、独立验证、部
件拼装。系统服务层和框架层的部件化设计如图3-5所示。
图3-5 系统服务层和框架层的部件化设计
3. HarmonyOS部件化拼装
HarmonyOS是一款面向全场景、全连接、全智能时代的开源操作系
统,采用部件化设计,支持在多规格内存资源的设备上运行,设备
开发者可基于目标硬件能力选择系统部件进行集成。为了保证在不
同硬件设备上易集成,同时又具有北向接口(HarmonyOS与用户程
序之间)、南向接口(HarmonyOS与硬件之间),以及东西向接口
(HarmonyOS 设 备 之 间 或 HarmonyOS 实 例 之 间) 的 兼 容 性,
HarmonyOS定义了4种规格的系统,参考定义如下。
(1)轻量系统(Mini System)
轻量系统面向使用MCU(Microcontroller Unit,微控制单元)类处理
器的设备,硬件资源极其有限,支持的设备最小内存为128 KB,可
以提供多种轻量级网络协议、轻量级的图形框架,以及丰富的外围
设备控制能力等。可支撑的产品如智能家居领域的连接类模组、传
感器设备、可穿戴设备等。
(2)小型系统(Small System)
小型系统面向使用应用处理器的设备,硬件资源相对有限,支持的
设备最小内存为1 MB,最大不超过128 MB,可以提供更高的安全能
力、支持多窗口的图形框架,具备视频编解码的多媒体能力。可支
撑的产品如智能家居领域的网络摄像机、电子猫眼、路由器及行车
记录仪等。
(3)标准系统(Standard System)
标准系统面向使用应用处理器的设备,支持的设备最小内存为
128 MB,可以提供增强的交互能力、GPU及硬件合成能力、更多控
件,以及动效更丰富的图形能力、完整的应用框架等。可支撑的产
品如带屏IoT设备、轻智能手机等。
(4)大型系统(Large System)
大型系统面向使用应用处理器的设备,支持的设备最小内存为
1 GB,提供多模交互能力、GPU和硬件合成能力、控件及动效更丰
富的图形能力,以及完整的应用框架等。可支撑的产品如智能手
机、平板计算机、智能手表等。
说明
以上几种系统所支持的最小内存的单位分别为KB(轻量系统)、
MB(小型系统和标准系统)、GB(大型系统)等。
HarmonyOS针对不同的系统规格,定义了BCG和OCG,设备开发者
可按需配置,以支撑其特色功能的扩展或定制开发。同时,
HarmonyOS也支撑设备厂商扩展私有的系统能力,打造设备差异化
竞争力。
BCG是指针对不同系统规格定义的最小系统能力集。BCG只有4种,
分别对应轻量、小型、标准和大型这4种系统规格。任何HarmonyOS
设备必须包含4种BCG之一。OCG是指针对不同系统规格定义的可选
系统能力集。OCG可以根据设备实际情况较自由地组合而成。
PCG(Privated Components Group,私有部件组)是指设备厂商的私
有扩展系统能力集。
同一系统规格的设备具有相同的BCG,设备厂商可按需选择OCG、
PCG。BCG、OCG与PCG的关系如图3-6所示。
图3-6 BCG、OCG与PCG的关系




部件的特性定义
HarmonyOS使用SystemCapability(SysCap)定义每个部件对外提供
的系统软硬件能力。设备开发人员可以基于SysCap组合进行产品定
制,SysCap与API的关系如图3-9所示

SysCap与API
SysCap指操作系统中相对独立的特性,如蓝牙、WiFi、NFC、摄像
头等。每个系统能力对应多个API,这些API绑定在一起,会随着目
标 设 备 是 否 支 持 该 系 统 能 力 而 存 在 或 消 失, 也 会 随 着
DevEco Studio(HarmonyOS用户程序的IDE)一起提供给开发者。
当开发者开发应用时,DevEco Studio会自动根据系统能力提示该
API是否支持该应用。
2. 支持能力集、要求能力集与联想能力集
要求能力集与支持能力集的关系如图3-10所示。
支持能力集:HarmonyOS设备的属性之一,描述的是设备可支持的
能力。
要求能力集:HarmonyOS用户程序的属性之一,描述的是应用运行
时需要的设备能力。例如包含用户程序需要使用的SysCap的API,不
包括canIUse判断需要使用的API。
联想能力集:DevEco Studio中工程的属性之一,用于描述应用在开
发态时,DevEco Studio可以为开发者联想的全部API所在的SysCap
的集合。



SysCap整体设计步骤如图3-12所示。


SysCap整体设计步骤说明如下。
① HarmonyOS源码由可选部件集和必选部件集组成,将部件提供的
系统能力定义为SysCap。
② 基于一套源码发布归一化的SDK,其中每个API都拥有SysCap属
性,以及定义常见设备类型的SysCap集。
③ 设备厂商可按需拼装形成OS部件集,也可根据常见设备类型的需
求进行OS拼装。
④ 设备厂商可定义私有部件集,将它与OS部件集组成完整的设备
SysCap集。
⑤ 将设备SysCap集转换为PCID(Product Compatibility ID,产品兼
容性标识),认证后存储在云侧,并提供查询/下载功能。
⑥ 应用开发者基于SDK进行跨设备的应用开发,IDE可按设备类型
提示可用的API。
⑦ 应 用 开 发 时 定 义 应 用 的
RPCID(Required Product Compatibility ID,要求的产品兼容性标
识),即应用运行所需的系统能力集,在应用上架时提供。
⑧ 应用市场/商店在分发应用时,将应用的RPCID与设备的PCID进
行匹配,若RPCID的值小于等于PCID即符合分发条件。对于同一个
部件在不同设备上的差异,通过应用配置中的distributefilter字段进行
分发。
⑨ 应用安装时,BMS(Bundle Manager Service,包管理服务)解析
应用的RPCID,与PCID进行匹配,确保应用可在设备上正常运行。
 

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

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

相关文章

腾讯百度阿里华为常见算法面试题TOP100(3):链表、栈、特殊技巧

之前总结过字节跳动TOP50算法面试题: 字节跳动常见算法面试题top50整理_沉迷单车的追风少年-CSDN博客_字节算法面试题 链表 160.相交链表 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) …

29 线性表 · 队列

目录 一、概念与结构 (一)概念 1、队列 2、入队列 3、出队列 (二)底层结构 二、队列的实现 三、队列的算法题 (一)用队列实现栈 (二)用栈实现队列 (三&#xf…

基于AG32 的USB转以太网方案

如何通过USB转以太网标准模块? AG32支持USB FSOTG和以太网MAC,并且提供了标准例程,包括网络Lwip和USB的开发例程,上层应用调tinyUSB的接口即可。 以下是AG32VF407VG的引脚定义,支持USB外设。 LQFP-100Pin nameAG32VFx…

简单了解Maven与安装

Maven 1.Maven 简介 Maven 是 Apache 软件基金会(国外组织,专门维护开源项目)的一个开源项目, 是一个优秀的项目构建工具, 它用来帮助开发者管理项目中的 jar, 以及 jar 之间的依赖关系(在A.jar文件中用到了B.jar)、 完成项目的编译&am…

圆环加载效果

效果预览 代码实现 from PyQt5.QtCore import QSize, pyqtProperty, QTimer, Qt, QThread, pyqtSignal from PyQt5.QtGui import QColor, QPainter from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QVBoxLayout, QLabel, QGridLayoutclass Cir…

Rust使用Actix-web和SeaORM库开发WebAPI通过Swagger UI查看接口文档

本文将介绍Rust语言使用Actix-web和SeaORM库,数据库使用PostgreSQL,开发增删改查项目,同时可以通过Swagger UI查看接口文档和查看标准Rust文档 开始项目 首先创建新项目,名称为rusty_crab_api cargo new rusty_crab_apiCargo.t…

Nuxt Kit 中的页面和路由管理

title: Nuxt Kit 中的页面和路由管理 date: 2024/9/17 updated: 2024/9/17 author: cmdragon excerpt: 摘要:本文介绍了Nuxt Kit中页面和路由管理的高级功能,包括extendPages自定义页面路由、extendRouteRules定义复杂路由逻辑及addRouteMiddleware注册路由中间件。通过这…

Html css样式总结

1.Html css样式总结 1.1. 定位position 布局是html中非常重要的一部分,而定位在页面布局中也是使用频率很高的方法,本章节为定位在布局中的使用技巧和注意事项。   position定位有4个属性,分别是static(默认),absol…

第四天旅游线路预览——从换乘中心到白哈巴村

第四天:从贾登峪到喀纳斯风景区入口,晚上住宿贾登峪; 换乘中心有4 路车,喀纳斯③号车,去白哈巴村,路程时长约40分钟; 将上面的的行程安排进行动态展示,具体步骤见”Google earth st…

用Spring Boot搭建的读书笔记分享平台

第1章 绪论 1.1课题背景 计算机的普及和互联网时代的到来使信息的发布和传播更加方便快捷。用户可以通过计算机上的浏览器访问多个应用系统,从中获取一些可以满足用户需求的管理系统。网站系统有时更像是一个大型“展示平台”,用户可以选择所需的信息进入…

【Spring Security系列】如何用Spring Security集成手机验证码登录?五分钟搞定!

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 【Spring Security系列…

拖拽排序的实现示例demo

拖拽排序的实现示例demo 文章说明核心代码示例效果展示 文章说明 文章主要为了学习拖拽排序的实现思路,并且采用此示例效果来进一步理解Flip动画的使用 参考渡一前端袁老师的讲解视频 核心代码 页面源码,拖拽排序的实现代码并不复杂,但是可以…

我的标志:奇特的头像

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>与妖为邻</title><style>figure.log…

C++11(4)

万众瞩目的C11特辑来了&#xff0c;本章将继续讲解C11更新的内容&#xff0c;不过C11的内容也快接近尾声了。 目录 10。lambda表达式 11。lambda捕捉列表[] 捕捉列表说明 lambda捕捉列表实际应用 10。lambda表达式 #include<iostream> using namespace std; #inclu…

手把手教你:在微信小程序中加载map并实现拖拽添加标记定位

本文将为大家详细介绍如何在微信小程序中加载map组件&#xff0c;并实现拖拽标记定位功能。 实现步骤 1、首先&#xff0c;我们需要在项目的app.json文件中添加map组件的相关配置。如下所示&#xff1a; {"pages": ["pages/index/index"],"permiss…

robomimic基础教程(三)——自带算法

robomimic自带几个高质量的离线学习算法的实现&#xff0c;包括模仿学习和强化学习&#xff0c;并提供相关工具来辅助你轻松构建自己的学习算法。 一、模仿学习&#xff08;Imitation Learning&#xff09; 1. BC (Behavioral Cloning) Vanilla Behavioral Cloning, 旨在通过…

使用knn算法对iris数据集进行分类

程序功能 使用 scikit-learn 库中的鸢尾花数据集&#xff08;Iris dataset&#xff09;&#xff0c;并基于 KNN&#xff08;K-Nearest Neighbors&#xff0c;K近邻&#xff09;算法进行分类&#xff0c;最后评估模型的准确率。 代码 from sklearn import datasets# 加载鸢尾…

链表在开空间时候出现的问题

题目&#xff1a; 第一种写法完整答案&#xff1a; 第二种写法完整答案&#xff1a;

【机器学习】--- 自监督学习

1. 引言 机器学习近年来的发展迅猛&#xff0c;许多领域都在不断产生新的突破。在监督学习和无监督学习之外&#xff0c;自监督学习&#xff08;Self-Supervised Learning, SSL&#xff09;作为一种新兴的学习范式&#xff0c;逐渐成为机器学习研究的热门话题之一。自监督学习…

【C++题解】1996. 每个小组的最大年龄

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1996. 每个小组的最大年龄 类型&#xff1a;二维数组 题目描述&#xff1a; 同学们在操场上排成了一个 n 行 m 列的队形&#xff0c;每行的同学属于一个小组&#xff0c;请问每个小…