鸿蒙OpenHarmony【小型系统基础内核(虚实映射)】子系统开发

虚实映射

基本概念

虚实映射是指系统通过内存管理单元(MMU,Memory Management Unit)将进程空间的虚拟地址与实际的物理地址做映射,并指定相应的访问权限、缓存属性等。程序执行时,CPU访问的是虚拟内存,通过MMU页表条目找到对应的物理内存,并做相应的代码执行或数据读写操作。MMU的映射由页表(Page Table)来描述,其中保存虚拟地址和物理地址的映射关系以及访问权限等。每个进程在创建的时候都会创建一个页表,页表由一个个页表条目(Page Table Entry, PTE)构成,每个页表条目描述虚拟地址区间与物理地址区间的映射关系。MMU中有一块页表缓存,称为快表(TLB, Translation Lookaside Buffers),做地址转换时,MMU首先在TLB中查找,如果找到对应的页表条目可直接进行转换,提高了查询效率。CPU访问内存或外设的示意图如下:

图1 CPU访问内存或外设的示意图

运行机制

虚实映射其实就是一个建立页表的过程。MMU支持多级页表,LiteOS-A内核采用二级页表描述进程空间。每个一级页表条目描述符占用4个字节,可表示1MiB的内存空间的映射关系,即1GiB用户空间(LiteOS-A内核中用户空间占用1GiB)的虚拟内存空间需要1024个。系统创建用户进程时,在内存中申请一块4KiB大小的内存块作为一级页表的存储区域,系统根据当前进程的需要会动态申请内存作为二级页表的存储区域。

  • 用户程序加载启动时,会将代码段、数据段映射进虚拟内存空间,此时并没有物理页做实际的映射;

  • 程序执行时,如下图粗箭头所示,CPU访问虚拟地址,通过MMU查找是否有对应的物理内存,若该虚拟地址无对应的物理地址则触发缺页异常,内核申请物理内存并将虚实映射关系及对应的属性配置信息写进页表,并把页表条目缓存至TLB,接着CPU可直接通过转换关系访问实际的物理内存;

  • 若CPU访问已缓存至TLB的页表条目,无需再访问保存在内存中的页表,可加快查找速度。

    图2 CPU访问内存示意图

开发指导

接口说明

表1 MMU相关操作

接口名称 描述
LOS_ArchMmuQuery 获取进程空间虚拟地址对应的物理地址以及映射属性。
LOS_ArchMmuMap 映射进程空间虚拟地址区间与物理地址区间。
LOS_ArchMmuUnmap 解除进程空间虚拟地址区间与物理地址区间的映射关系。
LOS_ArchMmuChangeProt 修改进程空间虚拟地址区间的映射属性。
LOS_ArchMmuMove 将进程空间一个虚拟地址区间的映射关系转移至另一块未使用的虚拟地址区间重新做映射。

开发流程

虚实映射相关接口的使用:

  1. 通过LOS_ArchMmuMap映射一块物理内存。

  2. 对映射的地址区间做相关操作:

    • 通过LOS_ArchMmuQuery可以查询相应虚拟地址区间映射的物理地址区间及映射属性;
    • 通过LOS_ArchMmuChangeProt修改映射属性;
    • 通过LOS_ArchMmuMove做虚拟地址区间的重映射。
  3. 通过LOS_ArchMmuUnmap解除映射关系。

说明: 上述接口的使用都是基于MMU初始化完成以及相关进程页表的建立,MMU在系统启动阶段已完成初始化,进程创建的时候会建立页表,开发者无需介入操作。

以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!

下面是鸿蒙的完整学习路线 ,展示如下:

除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下

内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!

鸿蒙【北向应用开发+南向系统层开发】文档

鸿蒙【基础+实战项目】视频

鸿蒙面经

为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!

相关推荐
枯无穷肉1 小时前
stm32制作CAN适配器4--WinUsb的使用
stm32·单片机·嵌入式硬件
不过四级不改名6771 小时前
基于HAL库的stm32的can收发实验
stm32·单片机·嵌入式硬件
嵌入式大圣2 小时前
单片机UDP数据透传
单片机·嵌入式硬件·udp
云山工作室2 小时前
基于单片机的视力保护及身姿矫正器设计(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·毕设
嵌入式-老费2 小时前
基于海思soc的智能产品开发(mcu读保护的设置)
单片机·嵌入式硬件
liyinuo20174 小时前
嵌入式(单片机方向)面试题总结
嵌入式硬件·设计模式·面试·设计规范
艺术家天选5 小时前
STM32点亮LED灯
stm32·单片机·嵌入式硬件
小猪写代码6 小时前
STM32 水质水位检测项目 (调试模块)和(延时模块)
stm32·单片机·嵌入式硬件
御风_216 小时前
STM32单片机使用CAN协议进行通信
stm32·单片机·嵌入式硬件
Damon小智7 小时前
HarmonyOS NEXT 技术实践-基于基础视觉服务的多目标识别
华为·harmonyos