HCIA-HarmonyOS设备开发认证V2.0-内核扩展组件

在这里插入图片描述

目录

  • 一、CPU 占用率
    • 1.1、CPU 占用率基本概念
    • 1.2、CPU 占用率运行机制
    • 1.3、CPU 占用率开发流程
  • 二、动态加载
    • 2.1、 动态加载基本概念
    • 2.2、动态加载运行机制
  • 坚持就有收获

一、CPU 占用率

1.1、CPU 占用率基本概念

CPU(中央处理器,Central Processing Unit)占用率分为系统 CPU 占用率和任务 CPU 占用率。

系统 CPU 占用率(CPU Percent)是指周期时间内系统的 CPU 占用率,用于表示系统一段时间内的闲忙程度,也表示 CPU 的负载情况。系统 CPU 占用率的有效表示范围为 0~100,其精度(可通过配置调整)为百分比。100 表示系统满负荷运转。

任务 CPU 占用率指单个任务的 CPU 占用率,用于表示单个任务在一段时间内的闲忙程度。任务 CPU 占用率的有效表示范围为 0~100,其精度(可通过配置调整)为百分比。100 表示在一段时间内系统一直在运行该任务。

用户通过系统级的 CPU 占用率,判断当前系统负载是否超出设计规格。通过系统中各个任务的 CPU 占用情况,判断各个任务的 CPU 占用率是否符合设计的预期。

1.2、CPU 占用率运行机制

OpenHarmony LiteOS-M 的 CPUP(CPU Percent,系统 CPU 占用率)采用任务级记录的方式,在任务切换时,记录任务启动时间,任务切出或者退出时间,每次当任务退出时,系统会累加整个任务的占用时间。

可以在 target_config.h 的中对该功能进行选配。

OpenHarmony LiteOS-M 提供以下两种 CPU 占用率的信息查询:

  • 系统 CPU 占用率。
  • 任务 CPU 占用率。

CPU 占用率的计算方法:

  • 系统 CPU 占用率=系统中除 idle 任务外其他任务运行总时间/系统运行总时间
  • 任务 CPU 占用率=任务运行总时间/系统运行总时间

1.3、CPU 占用率开发流程

  • 调用获取系统 CPU 使用率函数 LOS_SysCpuUsage。
  • 调用获取系统历史 CPU 使用率函数 LOS_HistorySysCpuUsage。
  • 调用获取指定任务 CPU 使用率函数 LOS_TaskCpuUsage。
    • 若任务已创建,则关中断,正常获取,恢复中断;
    • 若任务未创建,则返回错误码;
  • 调用获取指定任务历史 CPU 使用率函数 LOS_HistoryTaskCpuUsage。
    • 若任务已创建,则关中断,根据不同模式正常获取,恢复中断;
    • 若任务未创建,则返回错误码;
  • 调用获取所有任务 CPU 使用率函数 LOS_AllCpuUsage。
    • 若 CPUP 已初始化,则关中断,根据不同模式正常获取,恢复中断;
    • 若 CPUP 未初始化或有非法入参,则返回错误码;

二、动态加载

2.1、 动态加载基本概念

在硬件资源有限的小设备中,需要通过算法的动态部署能力来解决无法同时部署多种算法的问题。以开发者易用为主要考虑因素,同时考虑到多平台的通用性,LiteOS-M 选择业界标准的ELF 加载方案,方便拓展算法生态。LiteOS-M 提供类似于 dlopen、dlsym 等接口,APP 通过动态加载模块提供的接口可以加载、卸载相应算法库。如图 1 所示,APP 需要通过三方算法库所需接口获取对应信息输出,三方算法库又依赖内核提供的基本接口,如 malloc 等。APP加载所需接口,并对相关的未定义符号完成重定位后,APP 即可调用该接口完成功能调用。目前动态加载组件只支持 arm 架构。此外,待加载的共享库需要验签或者限制来源,确保系统的安全性。

请添加图片描述

2.2、动态加载运行机制

共享库调用内核接口需要内核主动暴露动态库所需的接口,如图 2 所示,该机制将符号信息编译到指定段中,调用 SYM_EXPORT 宏即可完成对指定符号的信息导出。符号信息通过结构体 SymInfo 描述,成员包括符号名和符号地址信息,宏 SYM_EXPORT 通过__attribute__编译属性将符号信息导入.sym.*段中。

请添加图片描述

加载过程中,根据 ELF 文件的句柄以及程序头表的段偏移可以得到需要加载到内存的 LOAD段,一般有两个段,只读段及读写段,如下所示,可以用 readelf -l 查看 ELF 文件的 LOAD 段信息。根据相应的对齐属性申请物理内存,通过每个段的加载基址及偏移将代码段或数据段写入内存中。

请添加图片描述

通过 ELF 文件的.dynamic 段获取重定位表,遍历表中每一个需要重定位的条目,再根据需要重定位的符号名在共享库和内核提供的导出符号表中查找相应符号并更新相应的重定位信息。
请添加图片描述

ELF 支持类型:
编译共享库时,添加-fPIC 可以编译出位置无关代码(-fPIC 为编译选项),此时共享库文件类型为 ET_DYN,其可以加载至任意有效的地址区间。
例:arm-none-eabi-gcc -fPIC –shared –o lib.so lib.c。

ELF 共享库编译链接选项:

  • “-nostdlib”编译链接选项:不依赖编译器中 lib 库。
  • “-nostartfiles”编译链接选项:不依赖编译器中启动相关的文件。
  • “-fPIC”编译选项:可编译位置无关的共享库。
  • “-z max-page-size=4”链接选项:二进制文件中可加载段的对齐字节数为 4,可节约内存,可用于动态库。
  • “-mcpu=”需要指定对应的 cpu 架构。

约束:

  • 不支持应用程序加载,只支持共享库加载。
  • 待加载的共享库不能依赖编译器中的 libc 库及其他共享库,只能依赖内核提供的对外接口(由导出的符号表提供)。
  • 依赖交叉编译器及文件系统。

坚持就有收获

在这里插入图片描述

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

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

相关文章

第三节作业:基于 InternLM 和 LangChain 搭建你的知识库

参考文档:https://github.com/InternLM/tutorial/tree/main/langchain 基础作业:复现课程知识库助手搭建过程 (截图) 1.环境配置 2.知识库搭建 (1)数据收集 收集由上海人工智能实验室开源的一系列大模型工具开源仓库作为语料库来…

单html页面使用Vue3和Element-Plus

快速入门&#xff08;直接整案例&#xff0c;看显示效果&#xff09; 使用CDN方式引入Vue3使用CDN方式引入Element-Plus的样式文件和组件库 案例1&#xff08;按钮&#xff0c;表格&#xff09; <!DOCTYPE html> <html lang"en"> <head><meta …

人工智能时代

一、人工智能发展历史:从概念到现实 人工智能(Artificial Intelligence,简称AI)是计算机科学领域中一门旨在构建能够执行人类智能任务的系统的分支。其发展历程充满曲折,从概念的提出到如今的广泛应用,是技术、理论和实践相互交织的产物。 1. 起源(20世纪中期) 人工智…

对称密钥密码体制、公钥密码体制

1 对称密钥密码体制 加密密钥与解密密钥都使用相同密钥的密码体制。 数据加密标准 DES DES 属于对称密钥密码体制&#xff0c;是一种分组密码。 在加密前&#xff0c;先对整个明文进行分组。每一个组长为 64 位。 然后对每一个 64 位 二进制数据进行加密处理&#xff0c;…

云计算基础-华为存储实验

存储配置流程 创建硬盘域&#xff08;CK&#xff0c;包括热备CK&#xff09;创建存储池&#xff08;CKG、Extent&#xff09;创建LUN、LUN组、将LUN加入LUN组创建主机、主机组、将主机加入主机组创建映射视图&#xff08;LUN组和主机组的映射&#xff09; 1. 创建CK 创建硬盘…

【数据结构】二叉查找树和平衡二叉树,以及二者的区别

目录 1、二叉查找树 1.1、定义 1.2、查找二叉树的优点 1.2、查找二叉树的弊端 2、平衡二叉树 2.1、定义 2.2、 实现树结构平衡的方法&#xff08;旋转机制&#xff09; 2.2.1、左旋 2.2.2、右旋 3、总结 1、二叉查找树 二叉查找树又名二叉排序树&#xff0c;亦称二叉搜…

究极小白如何自己搭建一个自动发卡网站-独角数卡

本人从来没接触过建站&#xff0c;我之前都是在TB上花90叫别人给我搭建的网站&#xff0c;前几天这个TB店倒闭跑路了&#xff0c;而我的发卡网也打不开了&#xff0c;没办法&#xff0c;逼上梁山&#xff0c;自己捣鼓出来了&#xff01;下面是2023/4/2自己建好的&#xff01; …

租用一个服务器需要多少钱?2024阿里云新版报价

2024年最新阿里云服务器租用费用优惠价格表&#xff0c;轻量2核2G3M带宽轻量服务器一年61元&#xff0c;折合5元1个月&#xff0c;新老用户同享99元一年服务器&#xff0c;2核4G5M服务器ECS优惠价199元一年&#xff0c;2核4G4M轻量服务器165元一年&#xff0c;2核4G服务器30元3…

网络安全问题概述

1 计算机网络面临的安全性威胁 两大类威胁&#xff1a;被动攻击和主动攻击。 被动攻击 指攻击者从网络上窃听他人的通信内容。 通常把这类攻击称为截获。 攻击者只是观察和分析某一个协议数据单元 PDU&#xff0c;以便了解所交换的数据的某种性质&#xff0c;但不干扰信息…

AI Infra论文阅读之LIGHTSEQ(LLM长文本训练的Infra工作)

感觉这篇paper有几个亮点&#xff0c;首先把Megatron-LM的Self-Attention模块的模型并行方式变成序列并行&#xff0c;优化了通信量&#xff0c;同时通过计算和通信重叠近一步压缩了训练迭代时间。另外&#xff0c;在使用重计算的时候发现当前Huggingface/Megatron-LM的重计算策…

vue3 之 商城项目—支付

支付模版 pay/index.vue <script setup> const payInfo {} </script> <template><div class"xtx-pay-page"><div class"container"><!-- 付款信息 --><div class"pay-info"><span class"ic…

嵌入式Qt Qt中的字符串类

一.Qt中的字符串类 QString vs string&#xff1a; QString在Qt库中几乎是无所不在的 所有的Qt图形用户组件都依赖于QString 实验1 &#xff1a;QString 初体验 #include <QDebug> void Sample_1() {QString s "add";s.append(" "); // &q…

Codeforces Round 926 (Div. 2) B. Sasha and the Drawing (Java)

Codeforces Round 926 (Div. 2) B. Sasha and the Drawing (Java) 比赛链接&#xff1a;Codeforces Round 926 (Div. 2) B题传送门&#xff1a;B. Sasha and the Drawing 题目&#xff1a;B. Sasha and the Drawing Example input 3 4 3 3 3 10 3 9 4 7 7 11 2 3output 2 …

基于结点电压法的配电网状态估计算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 结点电压法的基本原理 4.2 结点电压法在配电网状态估计中的应用 5.完整程序 1.程序功能描述 基于结点电压法的配电网状态估计算法.对配电网实施有效控制和操作的前提是实时数据库中数据…

【JavaEE】_Fiddler抓包HTTP请求与响应

目录 1. Fiddler简介 2. Fiddler安装步骤 3. 抓包结果举例&#xff08;sogou.com&#xff09; 1. Fiddler简介 1. 要查看HTTP的请求和响应&#xff0c;需要使用抓包工具进行抓包&#xff1b; 抓包即获取网卡上经过的数据并显示出来&#xff0c;常用的抓包工具有wireshark和…

BIOS and UEFI

BIOS : Basic Input/Output System UEFI: Unified Extensible Firmware Interface Notes: 1. 两者都是主板上的firmware. 2. 两者的作用都包括开机后检查硬件&#xff0c;从硬盘上寻找bootloader(用于加载操作系统&#xff0c;例如GRUB). # 操作系统的启动过程&#xff1a…

linux中的文件操作

linux的理念 在linux中的一切皆为文件&#xff01;&#xff01;&#xff01; 在上一篇博客中提到过&#xff0c;Linux中的桌面本质上也是一种文件&#xff0c;而现在&#xff0c;在本篇博客中要对这种理念进行进一步的提升&#xff0c;也就是在Linux系统中的一切皆为文件&#…

数据结构对链表的初步认识(一)

已经两天没有更新了&#xff0c;今天就写一篇数据结构的链表吧&#xff0c;巩固自己也传授知识&#xff0c;不知道各位是否感兴趣看看这一篇有关联表的文章。 目录 链表的概念与结构 单向链表的实现 链表各个功能函数 首先我在一周前发布了一篇有关顺序表的文章&#xff0c;…

RCS系统之:基础算法

设计仓库机器人的控制管理系统涉及到路径规划、任务分配、库存管理、通信系统等方面。以下是一个基本的仓库机器人控制管理系统方案的概述&#xff1a; 路径规划&#xff1a;设计一个路径规划系统&#xff0c;用于确定机器人在仓库内的最佳行驶路径&#xff0c;以最大程度地提…

MySQL学习记录——십일 索引

文章目录 1、理解索引2、聚簇、非聚簇索引3、操作1、主键索引2、唯一键索引3、普通索引4、注意事项 4、全文索引 1、理解索引 MySQL服务器是在内存中的&#xff0c;所有数据库的CURD操作都是在内存中进行&#xff0c;索引也是如此。索引是用来提高性能的&#xff0c;它通过组织…