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

在这里插入图片描述

一、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 库及其他共享库,只能依赖内核提供的对外接口(由导出的符号表提供)。
  • 依赖交叉编译器及文件系统。

坚持就有收获

在这里插入图片描述

  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
HCIA-HarmonyOS应用开发工程师V2.0模拟考试是为了评估考生对HarmonyOS应用开发的理解和掌握程度的考试。该考试主要包含以下几个方面: 1. 应用开发基础知识:考生需要了解HarmonyOS架构和组件,掌握应用开发的基本概念和原理,包括应用开发流程、应用打包、应用部署等内容。 2. Java基础知识:考生需要熟悉Java编程语言,理解Java类、对象、继承、多态等概念,掌握Java的常用语法和编程技巧。 3. HarmonyOS应用界面设计:考生需要了解应用界面设计的基本原则和方法,熟悉HarmonyOS的布局控件和界面元素,能够实现复杂的界面布局和交互效果。 4. 应用数据管理:考生需要了解应用数据的存储和管理方法,掌握HarmonyOS提供的数据库和文件系统API,能够实现数据的增删改查等操作。 5. 应用开发调试与测试:考生需要具备良好的调试和测试能力,能够利用调试工具分析和解决应用开发中遇到的问题,实现应用的调试和测试。 模拟考试通过对上述内容的考察来评估考生的综合能力和应用开发水平。考生可以通过模拟考试了解自己对HarmonyOS应用开发的熟悉程度,发现自己的不足之处,并在实际考试前有针对性地进行备考和提升。同时,模拟考试还可以让考生熟悉考试的题型和要求,提高应对考试的能力。 综上所述,HCIA-HarmonyOS应用开发工程师V2.0模拟考试是为了评估考生对HarmonyOS应用开发的掌握程度和能力的考试,通过对应用开发基础知识、Java基础知识、应用界面设计、应用数据管理等方面的考察来评估考生的综合能力。考生可以通过模拟考试了解自己的不足,并在备考中有针对性地提升自己的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻下一城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值