虚拟线性内存的硬件、软件协同扩展方法及电子设备技术

技术编号:36169672 阅读:21 留言:0更新日期:2022-12-31 20:20
本申请提供虚拟线性内存的硬件、软件协同扩展方法及电子设备。本申请提供的虚拟线性内存的硬件、软件协同扩展方法包括:本申请提供了虚拟线性内存单元这一硬件单元,用于实现地址转换和映射的硬件,以及与该硬件单元适配的一套内存操作相关的指令。具体的,在提前编译时,将程序中的指令转换为虚拟线性内存的指令,如读、写、内存大小、内存增加等指令。在运行时,通过本申请提供的指令直接访问内存,并基于该硬件直接完成边界检查,极大的降低了电子设备的计算开销。设备的计算开销。设备的计算开销。

【技术实现步骤摘要】
虚拟线性内存的硬件、软件协同扩展方法及电子设备


[0001]本申请涉及电子
,尤其涉及虚拟线性内存的硬件、软件协同扩展方法及电子设备。

技术介绍

[0002]嵌入式微控制单元(microcontroller unit,MCU)因其硬件功耗低、成本低、体积小等优点,被广泛的应用在物联网(internet of things,IOT)领域的终端设备上。例如,智能穿戴设备、智能家居设备等智能设备中都配置有嵌入式MCU。受限于MCU的成本,低端电子设备上往往不具备内存管理单元(memory management unit,MMU)和内存保护单元(memoryprotectionunit,MPU),第三方应用程序可以访问所有的物理地址,与操作系统具有相同的权限。
[0003]当电子设备上不具有MMU和MPU时,所有的第三方应用程序与操作系统有相同的权限,均可以访问、执行系统级别的指令。很显然的,第三应用程序可能恶意执行某些系统级别的指令,或者第三方程序访问时发生了某些访存相关的错误都会影响电子设备的正常工作。
[0004]为了保证电子设备上操作系统与第三方应用程序的安全隔离,使得第三方应用程序不能随意访问、执行系统级别的指令,开源的WebAssembly(WASM)提供了一种实现第三方应用程序和操作系统安全隔离的方法:WebAssembly为第三方应用程序提供一个线性内存,该线性内存指定该第三方应用程序可以访问的逻辑地址限定在一个连续的范围内;该第三方应用程序在执行涉及到内存的操作时,操作系统会进行边界检查,该边界检查使得第三应用程序程序只能访问、执行线性内存内部对应的指令。对应的,第三应用程序在执行访存相关操作时发生错误,也只会限定程序内部,不会扩散到外部环境。
[0005]虽然WebAssembly提供的线性内存能够实现第三方应用程序与操作系统的安全隔离,但是,首先,第三方应用程序在访问线性内存时需要通过指针进行间接访问,增加了系统的计算开销和寄存器的负载;其次,为了避免第三应用程序在访问线性内存溢出,需要在访问线性内存中的内容时进行边界检查,而边界检查会导致代码量急剧上升,增加了第三方应用程序对存储介质的占用大小,并且边界检查本身也会增加设备的计算开销。

技术实现思路

[0006]本申请实施例提供了线性内存的硬件、软件协同扩展方法及电子设备。该方法包括:在提前编译时,将程序中的指令转换为虚拟线性内存的指令,如读、写、内存大小、内存增加等指令。在运行时,通过本申请提供的指令直接访问内存,并基于该硬件直接完成边界检查,极大的降低了电子设备的计算开销。并且该方法还支持WebAssembly的Multiple Per

Module Memory等特性。
[0007]第一方面,一种虚拟线性内存的硬件、软件协同扩展方法,电子设备的处理器包括虚拟线性内存单元,该虚拟线性内存单元用于管理电子设备上的部分或全部物理内存,该
方法包括:电子设备获取第一文件,该第一文件包括第一应用程序的WASM字节码文件;该电子设备提前编译该第一文件时,该电子设备将该第一文件中的第一指令转换为对应的第二指令;该第一指令为普通内存访问指令,该第二指令是通过虚拟线性内存单元访问虚拟线性内存单元所管理的内存的指令。
[0008]在上述实施例中,电子设备在提前编译应用程序时,将读/写指令转换为基于虚拟线性内存单元的读/写指令,进而可以基于虚拟线性内存单元直接访问线性虚拟内存。该方法初步实现了应用程序和操作系统之间的安全隔离。
[0009]结合第一方面的一些实施例,在一些实施例中,该电子设备在提前编译该第一程序时,该电子设备将第三指令转换为对应的第四指令;该第三指令包括内存增加指令、内存大小指令,该第四指令用于调用运行时提供的接口,以使得电子设备在运行该第一文件时,该电子设备基于该第四指令调用该运行时提供的接口实现内存增加或确定内存大小。
[0010]在上述实施例中,电子设备将内存增加、内存大小指令转换为对运行时接口的调用,使得电子设备可以确定为应用程序分配的内存大小,以及改变应用程序的内存大小。并且,在改变应用程序的内存大小是,保持该应用程序的基址不变,避免了内存碎片带来的应用程序从内存中整体换入换出导致的开销。
[0011]结合第一方面的一些实施例,在一些实施例中,该电子设备执行该第二指令时,基于虚拟线性内存单元完成边界检查。
[0012]在上述实施例中,由于电子设备将第一指令转变为第二指令,电子设备在提前编译时,不需要为第一指令生成边界检查代码;其次,第二指令在执行时由虚拟线性内存单元这一硬件完成边间检查,降低了提前编译后文件体积的大小。
[0013]结合第一方面的一些实施例,在一些实施例中,该电子设备提前编译该第一文件后得到第一可执行文件;在该电子设备运行该第一可执行文件时,该电子设备基于该虚拟线性内存单元为该第一可执行文件分配虚拟线性内存;该虚拟线性内存在物理内存中为连续的,或者该虚拟线性内存在物理内存中为不连续的。
[0014]在上述实施例中,电子设备运行提前编译后的应用程序时,会基于线性内存单元为应用程序分配虚拟线性虚拟内存。
[0015]结合第一方面的一些实施例,在一些实施例中,该电子设备切换该第一可执行文件为后台时,该电子设备保存该第一可执行文件对应的配置信息。
[0016]在上述实施例中,电子设备切换任务时,需要保存被切换到后台的应用程序的有关虚拟线性内存单元的配置信息。
[0017]结合第一方面的一些实施例,在一些实施例中,该电子设备切换该第一可执行文件为前台时,该电子设备恢复该第一可执行文件对应的配置信息。
[0018]在上述实施例中,电子设备切换任务时,需要恢复被切换到前台的应用程序的有关虚拟线性内存单元的配置信息,使得应用程序可以正常运行。
[0019]结合第一方面的一些实施例,在一些实施例中,该一个或多个虚拟线性内存块被配置有独立的基址、读/写权限、大小。
[0020]在上述实施例中,电子设备切换任务时,需要恢复被切换到前台的应用程序的有关虚拟线性内存单元的配置信息,使得应用程序可以正常运行。
[0021]结合第一方面的一些实施例,在一些实施例中,电子设备获取第二文件,该第二文
件包括第二应用程序的WASM字节码文件;该电子设备提前编译该第二文件时,该电子设备将该第二文件中的该第一指令转换为对应的该第二指令;该第一程序在第一内存上的读/写权限与该第二程序在第一内存上的读/写权限不同,该第一内存对应于电子设备物理内存中的一段连续的物理地址。
[0022]在上述实施例中,电子设备上运行的不同程序对于同一段物理地址上的访问权限不同,保证了不同应用程序之间的安全隔离。
[0023]结合第一方面的一些实施例,在一些实施例中,该第一程序与该第二程序的执行级别/特权级别相同。
[0024]在上述实施例中,该第一应用程序与第二应用程序不配置特权态或者特权态相同,进本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种虚拟线性内存的硬件、软件协同扩展方法,其特征在于,电子设备的处理器包括虚拟线性内存单元,所述虚拟线性内存单元用于管理电子设备上的部分或全部物理内存,所述方法包括:电子设备获取第一文件,所述第一文件包括第一应用程序的WASM字节码文件;所述电子设备提前编译所述第一文件时,所述电子设备将所述第一文件中的第一指令转换为对应的第二指令;所述第一指令为普通内存访问指令,所述第二指令是通过虚拟线性内存单元访问虚拟线性内存单元所管理的内存的指令。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述电子设备在提前编译所述第一程序时,所述电子设备将第三指令转换为对应的第四指令;所述第三指令包括内存增加指令、内存大小指令,所述第四指令用于调用运行时提供的接口,以使得电子设备在运行所述第一文件时,所述电子设备基于所述第四指令调用所述运行时提供的接口实现内存增加或确定内存大小。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:所述电子设备执行所述第二指令时,基于虚拟线性内存单元完成边界检查。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:所述电子设备提前编译所述第一文件后得到第一可执行文件;在所述电子设备运行所述第一可执行文件时,所述电子设备基于所述虚拟线性内存单元为所述第一可执行文件分配虚拟线性内存;所述虚拟线性内存在物理内存中为连续的,或者所述虚拟线性内存在物理内存中为不连续的。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:所述电子设备切换所述第一可执行文件为后台时,所述电子设备保存所述第一可执行文件对应的配置信息。6.根据权利要求1至4中任一项所述的方法,其特征在...

【专利技术属性】
技术研发人员:喻钢曹玮王宇冬种洋金龙飞
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1