HarmonyOS设备开发工程师课程二(HarmonyOS 内核)

本文源于HarmonyOS官方教程https://developer.huawei.com/consumer/cn/training/course/introduction/C101635908637340943

如有侵权,联系helloc2333@163.com删除。

HarmonyOS 内核

linux、UNIX内核不适合于小型化设备,需要资源多,启动时间长,非实时操作系统。

HarmonyOS有三种内核,LiteOS-A,LiteOS-M,Linux 内核。

进程

HarmonyOS 内核中的进程采用抢占式调度机制,支持时间片轮转调度方式。

HarmonyOS内核进程有0-31的进程优先级,用户进程可配置的优先级为10-31

用户态根进程init由内核态创建,其他用户进程均由init进程fork而来。

Zombies :保留PID,但是不占用任何资源。

image-20211124221357901

对于多核 CPU 而言, HarmonyOS 通过自旋锁实现进程间防冲突,任务的重新分配实现多核处理器之间的负载均衡

image-20211124222138124

自旋锁:进程二持续的等待进程一释放资源,进程二不断的循环等待进程一释放资源。

负载均衡:多核心之间使用负载均衡来重新分配任务。

线程

对于多线程的场景, HarmonyOS 内核管理线程任务池就绪队列执行靠调度算法

image-20211124223351939

线程使用的并不是自旋锁。

HarmonyOS 线程常用的两种锁:

  • 互斥锁:未得到资源的线程将不会占用 CPU 资源。

    image-20211124223911529

  • 读写锁: 也称“共享 - 独占锁”适用于读比写多的场景。

    image-20211124223930217


内存、网络、文件系统

内存管理

  • Hi3861 芯片使用 LiteOS-M 内核,LiteOS-M不支持多进程,无 MMU ( Memory Management Unit ,内存管理单元),内存管理依赖应用程序的 malloc 方法与 free 方法

  • Hi3516 , Hi3518 芯片使用 LiteOS-A 内核,有 MMU 。

    image-20211125213309222

  • HarmonyOS 的内存分为四个区域:代码区,静态区,栈区,堆区

  • HarmonyOS 将内存分为用户空间内核虚拟空间,通过 MMU 对虚拟内存进行管理调度


网络机制

网络模块实现了 TCP/IP 协议栈基本功能,提供标准的 POSIX socket 接口。

当前系统使用 LwIP 提供网络能力。


文件系统(LiteOS-A)

image-20211125215020507


VFS

Virtual File System (虚拟文件系统),它不是一个实际的文件系统,而是一个异构文件系统之上的软件粘合层,为用户提供统一的类 Unix 文件操作接口

image-20211125215259447

HarmonyOS NFS

在 HarmonyOS 中,创建 NFS 目录与文件默认使用 777 权限,当前 NFS 可支持 TCP 与 UDP 两种传输层协议,默认使用 TCP

image-20211125215500622

  • 补充: 777 权限,三个数字分别对应三种用户:文件所有者,群组用户,其他用户。每一个数字可以表示执行 =1 ,写 =2 ,读 =4 权限的情况。

FAT

  • 在 HarmonyOS 中,文件配置表有 FAT12 , FAT16 , FAT32 这三种,它将硬盘分为 MBR( Master Boot Record ,主引导分区), DBR ( Dos Boot Record ,操作系统引导记录区), FAT , DIR ( Directory ,根目录区), DATA (数据区)五个区。
  • FAT 特性:支持多种介质,尤其在可移动存储设备上使用广泛。 FAT 具有代码量和资源占用小、可裁切、支持多种物理设备、读写指针不分离的特性。

软件定时器

软件定时器的功能:制定任务循环执行的周期,用作任务的延迟执行。
在 HarmonyOS 内, swtmrTask.usTaskPrio = 0 ,软件定时器拥有最高的线程优先级。


信号量

信号量:一个资源最多可以支持多少个任务同时进行访问。

  • 信号量可以实现任务间通信,它可以实现任务间同步或共享资源的互斥访问。
  • HarmonyOS 的信号量最大个数 1024 ,使用信号量的任务队列是一个双向链表。

image-20211125220757351


事件运行机制

  • 事件 Event 是一种任务间通信机制,常用于任务之间的同步。任务执行前需要满足一些前提条件。
  • 事件模型:一对多模型与多对多模型。

image-20211125221400955


锁的优先级翻转

假设有三个任务,任务 1 高优先级,任务 2 中优先级,任务 3 低优先级。

image-20211125221520517


消息队列

  • 消息队列常用于消息的异步处理消息的缓冲。对于任务间通信的场景,消息发送方与消息接受方实现解耦。
  • HarmonyOS 消息队列最大消息内容 1KB , POSIX 最大消息内容 64 字节;HarmonyOS 消息队列最大消息数量256 个, POSIX 最大消息数量 16 个。

image-20211125222106658


  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2024 lk
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信