CN116954892A - 内存划分的方法、装置、电子设备、介质及车辆 - Google Patents
内存划分的方法、装置、电子设备、介质及车辆 Download PDFInfo
- Publication number
- CN116954892A CN116954892A CN202310780081.0A CN202310780081A CN116954892A CN 116954892 A CN116954892 A CN 116954892A CN 202310780081 A CN202310780081 A CN 202310780081A CN 116954892 A CN116954892 A CN 116954892A
- Authority
- CN
- China
- Prior art keywords
- memory
- kernel
- address space
- different
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 140
- 238000000638 solvent extraction Methods 0.000 title claims abstract description 27
- 230000003068 static effect Effects 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 claims description 89
- 230000006870 function Effects 0.000 claims description 40
- 238000012545 processing Methods 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 7
- 238000002955 isolation Methods 0.000 abstract description 17
- 238000012423 maintenance Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 14
- 238000013475 authorization Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000004069 differentiation Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008447 perception Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及一种内存划分的方法、装置、电子设备、介质及车辆,上述方法包括:获取多个可执行代码文件;上述多个可执行代码文件包括以下至少一种:不同应用的相同功能单元编译后的中间文件、相同应用的不同功能单元编译后的中间文件、不同应用的不同功能单元编译后的中间文件;对上述多个可执行代码文件中的目标代码配置差异化的标识,上述标识用于指向不同的内存空间。该方法能够实现不同应用之间的内存隔离,确保其他应用不能访问当前应用所对应的地址空间,或者同一个应用的不同功能单元之间的静态内存隔离;标识差异化配置可以通过编写程序自动化执行,有效简化了地址划分的工作量,便于维护。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种内存划分的方法、装置、电子设备、介质及车辆。
背景技术
静态内存,是指在程序开始运行时由编译器分配的内存,它的分配是在程序的编译阶段完成的,不占用CPU资源。程序中的各种变量或函数,在编译时系统已经为其分配了所需的内存空间,当该变量在作用域内使用完毕,系统会自动释放其所占用空间。
针对不同应用具有相同函数的情况,希望不同应用之间能够访问不同的内存空间,实现内存安全隔离。比如在一些应用场景中,针对车辆的微控制器(MCU)进行的内存管理,由于车辆MCU的硬件及系统与计算机存在差异,MCU访问的直接是物理地址,而在MCU上欠缺相关的隔离机制,因此需要有实现内存安全隔离的方案。
发明内容
为克服相关技术中存在的问题,本公开实施例提供一种内存划分的方法、装置、电子设备、介质及车辆。
根据本公开实施例的第一方面,提供一种内存划分的方法。上述方法包括:获取多个可执行代码文件;上述多个可执行代码文件包括以下至少一种:不同应用的相同功能单元编译后的中间文件、相同应用的不同功能单元编译后的中间文件、不同应用的不同功能单元编译后的中间文件;对上述多个可执行代码文件中的目标代码配置差异化的标识,上述标识用于指向不同的内存空间。
在一些实施例中,上述内存空间为静态内存地址空间,上述中间文件为可执行对象文件,上述可执行对象文件以显性形式呈现上述标识和上述静态内存地址空间之间的对应关系。
在一些实施例中,对上述多个可执行代码文件中的目标代码配置差异化的标识,包括:对上述多个可执行对象文件的字符串表进行差异化配置,以配置得到不同的段名,上述段名作为上述标识。
在一些实施例中,在第一访问状态下,上述方法还包括:响应于第一功能单元对应的第一进程对第一内核接口的调用,将上述第一进程针对第一内核地址空间的第一访问权限写入至内存保护单元中;上述第一内核地址空间为上述第一进程进行第一内核接口调用后待访问的内核地址空间;基于上述第一访问权限,上述内存保护单元授权上述第一进程访问上述第一内核地址空间;响应于上述第一进程结束对上述第一内核接口的调用,在上述内存保护单元中切换回上述第一进程对第一初始内存空间的初始访问权限,上述第一初始内存空间为上述第一进程进行第一内核接口调用前所能访问的内存空间。
在一些实施例中,在第二访问状态下,上述方法还包括:响应于第二功能单元对应的第二进程对第二内核接口的调用,触发系统调用处理函数的执行;基于上述系统调用处理函数,将上述第二进程针对第二内核地址空间的第二访问权限写入至内存保护单元中;上述第二内核地址空间为上述第二进程进行第二内核接口调用后待访问的内核地址空间;基于上述第二访问权限,上述内存保护单元授权上述第二进程访问上述第二内核地址空间;响应于上述第二进程结束对上述第二内核接口的调用,在上述内存保护单元中切换回上述第二进程对第二初始内存空间的初始访问权限,上述第二初始内存空间为上述第二进程进行第二内核接口调用前所能访问的内存空间。
在一些实施例中,上述功能单元可以包括以下至少一种:函数、变量、代码段、数据段。
根据本公开实施例的第二方面,提供一种内存划分的装置。上述装置包括:获取模块和配置模块。上述获取模块用于获取多个可执行代码文件;上述多个可执行代码文件包括以下至少一种:不同应用的相同功能单元编译后的中间文件、相同应用的不同功能单元编译后的中间文件、不同应用的不同功能单元编译后的中间文件。上述配置模块用于对上述多个可执行代码文件中的目标代码配置差异化的标识,上述标识用于指向不同的内存空间。
根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;上述处理器,用于从上述存储器中读取上述可执行指令,并执行上述可执行指令以实现本公开第一方面所提供的内存划分的方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现本公开第一方面所提供的内存划分的方法。
根据本公开实施例的第五方面,提供一种车辆,存储有一组指令集,上述指令集被上述车辆的操作系统执行,以实现本公开第一方面所提供的内存划分的方法。
本公开的实施例提供的技术方案可以包括以下有益效果:
通过获取不同应用中相同功能单元、相同应用的不同功能单元或者不同应用的不同功能单元对应的多个可执行代码文件,对多个可执行代码文件里面的目标代码进行差异化的标识配置,使得不同应用中相同功能单元、相同应用的不同功能单元或者不同应用的不同功能单元所对应的相同目标代码对应于不同的内存空间,能够实现不同应用之间的内存隔离,确保其他应用不能访问当前应用所对应的地址空间,或者同一个应用的不同功能单元之间做到静态内存隔离;基于标识差异化配置的方式实现目标代码对应内存的差异化区分,这一配置方式可以通过编写程序自动化执行,有效简化了地址划分的工作量,便于维护。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的内存划分的方法的流程图。
图2是根据一示例性实施例示出的内存划分的方法的实施过程示意图。
图3是根据一示例性实施例示出的配置差异化标识的示意图。
图4是根据另一示例性实施例示出的内存划分的方法的实施过程示意图。
图5是根据又一示例性实施例示出的内存划分的方法的实施过程示意图。
图6是根据一示例性实施例示出的内存划分的装置的框图。
图7是根据一示例性实施例示出的车辆的框图。
图8是根据一示例性实施例示出的电子设备的框图。
具体实施方式
下面将结合附图详细地对示例性实施例进行描述说明。
应当指出,相关实施例及附图仅为描述说明本公开所提供的示例性实施例,而非本公开的全部实施例,也不应理解本公开受相关示例性实施例的限制。
应当指出,本公开中所用术语“第一”、“第二”等仅用于区别不同步骤、设备或模块等。相关术语既不代表任何特定技术含义,也不表示它们之间的顺序或者相互依存关系。
应当指出,本公开中所用术语“一个”、“多个”、“至少一个”的修饰是示意性而非限制性的。除非在上下文另有明确指出,否则应该理解为“一个或多个”。
应当指出,本公开中所用术语“和/或”,用于描述关联对象之间的关联关系,一般表示至少存在三种关联关系。例如,A和/或B,至少可以表示:单独存在A,同时存在A和B,单独存在B这三种关联关系。
应当指出,本公开的方法实施例中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。除非特别说明,本公开的范围不受相关实施例中步骤的描述顺序限制。
需要说明的是,本公开中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
示例性方法
图1是根据一示例性实施例示出的内存划分的方法的流程图。
参照图1所示,本公开实施例提供的内存划分的方法,包括以下步骤:S110和S120。上述方法可以由安装有应用的电子设备执行,例如为车辆、车载终端、计算机、智能手机、智能手表、智能手环等。
在步骤S110,获取多个可执行代码文件;上述多个可执行代码文件包括以下至少一种:不同应用的相同功能单元编译后的中间文件、相同应用的不同功能单元编译后的中间文件、不同应用的不同功能单元编译后的中间文件。
上述可执行代码文件包含功能单元编译后的中间文件,例如中间文件为可执行对象文件(.o文件)。多个可执行代码文件的编写语言可以相同,也可以不同。
可执行对象文件中包含标识与内存空间之间的对应关系,上述标识可以是段名称(section name),功能单元可以包括但不限于是:函数、变量、代码段、数据段等,诸如字符串常量、全局常量、已初始化的全局变量、静态变量等。
图2是根据一示例性实施例示出的内存划分的方法的实施过程示意图。
例如参照图2所示,示意了两个不同应用分别为应用1和应用2,应用1包含功能单元1和功能单元2,应用2包含功能单元1和功能单元3,功能单元1编译后的中间文件表示为A.o文件,功能单元2编译后的中间文件表示为B.o文件,功能单元3编译后的中间文件表示为D.o文件。
在一些实施例中,多个可执行代码文件可以包含不同应用的相同功能单元编译后的中间文件,例如为上述应用1对应的A.o文件和应用2对应的A.o文件。
在另一些实施例中,多个可执行代码文件可以包含相同应用的不同功能单元编译后的中间文件,例如为上述应用1对应的A.o文件和B.o文件;或者为上述应用2对应的A.o文件和D.o文件。
在又一些实施例中,多个可执行代码文件可以包含不同应用的不同功能单元编译后的中间文件,例如为上述应用1对应的A.o文件和应用2对应的D.o文件。
以上各个场景中,需要实现不同应用之间的内存隔离,确保其他应用不能访问当前应用所对应的地址空间,或者同一个应用的不同功能单元之间需要做到静态内存隔离。
还需要说明的是,一些场景下,同一个应用(APP)里的不同功能单元(或者也可以描述为任务)可以共享该应用里的私有数据(private data),但是每个功能单元自己的代码code和数据data是分开的;这部分共享的私有数据不作为目标代码。同一个APP里,任务间的内存隔离,现有的常规做法是动态内存分配。在计算机的同一个应用里,任务间的内存不需要去考虑隔离问题,是因为在用户态下有内存管理单元(mmu)支持虚拟地址,能够用于实现虚拟内存到物理内存的映射和内存管理。本公开实施例的一种应用场景可以是针对车辆的微控制器(mcu)进行的内存管理,由于车辆mcu的硬件及系统与计算机存在差异,mcu访问的直接是物理地址,在mcu上欠缺相关的隔离机制,因此通过对多个可执行代码文件中的目标代码进行差异化标识的配置,使得不同标识指向不同的内存空间,有助于实现不同车载应用的静态内存访问隔离或者同一个应用的不同功能单元之间的静态内存隔离。
在步骤S120,对上述多个可执行代码文件中的目标代码配置差异化的标识,上述标识用于指向不同的内存空间。
例如,针对应用1对应的A.o文件和应用2对应的A.o文件,通过对应用1和应用2中各自的A.o文件的目标代码配置差异化标识,例如针对应用1的A.o文件中的累加功能函数sumfun(作为目标代码的示例)添加差异化标识1,则应用1的A.o文件中累加功能函数变为:sumfun_1,针对应用2的A.o文件中的累加功能函数sumfun添加差异化标识2,则应用2的A.o文件中累加功能函数变为sumfun_2;其中,sumfun_1和sumfun_2指向不同的内存空间。为了区别描述进行差异化配置前的中间文件和配置后的文件,这里将应用1的A.o文件完成差异化标识配置后对应的文件描述为A-1.o文件,将应用2的A.o文件完成差异化标识配置后对应的文件描述为A-2.o文件。
可以理解的是,其他场景下的多个可执行代码文件的情况可以参照前面的示例,相同应用的不同功能单元编译后的多个中间文件的目标代码可以是某个功能函数或者某个代码段等;不同应用的不同功能单元编译后的多个中间文件的目标代码可以是某个功能函数或者某个代码段等。
针对同一个应用的不同功能单元的情况,还需要对差异化配置后的多个可执行代码文件进行链接,得到可执行程序文件,例如参照图2所示,将进行标识差异化配置后的A-1.o文件和B-1.o文件进行链接,得到应用1对应的可执行程序文件;将进行标识差异化配置后的A-2.o文件和D-1.o文件进行链接,得到应用2对应的可执行程序文件。
通过对多个可执行代码文件里面的目标代码进行差异化的标识配置,使得不同应用中相同功能单元、相同应用的不同功能单元或者不同应用的不同功能单元所对应的相同目标代码对应于不同的内存空间,能够实现不同应用之间的内存隔离,确保其他应用不能访问当前应用所对应的地址空间,或者同一个应用的不同功能单元之间做到静态内存隔离。
在一些实施例中,上述内存空间为静态内存地址空间,上述中间文件为可执行对象文件(.o文件),上述可执行对象文件以显性形式呈现上述标识和上述静态内存地址空间之间的对应关系。
中间文件为.o文件,由于该.o文件包含有物理地址和目标代码(例如为某个函数名称、某个变量名称、某个代码段等)的个性化标识之间的对应关系,而且是显性表达,能够便于查看哪个代码行需要进行修改并且结合内存保护单元(MPU)确定各个添加个性化标识后的目标代码和对应的物理地址也非常方便。通过对不同应用的相同变量、函数等进行差异化标记,实现不同地址空间的对应映射变化。在一些实施例中,不同应用所对应的地址空间是不同的,例如可以在MPU中通过增加白名单的方式实现对不同应用对应的地址空间的配置。
相较于采用其他文件例如c语言编写的其他文件进行代码修改而言,由于c语言编写的文件无法显性展示哪个代码对应于哪部分内存,去识别要做标记的向量或函数比较困难。基于可执行对象文件(例如为.o文件)进行识别时,通过显性呈现的标识和上述静态内存地址空间之间的对应关系,便于查找并进行差异化配置,同时也能进行直观展示。
图3是根据一示例性实施例示出的配置差异化标识的示意图。
对非动态分配的内存地址空间(例如为全局变量、函数等对应的静态内存地址空间)进行划分时,规定每一个符号存放的具体段(section),从而达到地址划分的目的。
在一些实施例中,参照图3中矩形框圈出的部分所示,对上述多个可执行代码文件中的目标代码配置差异化的标识,包括:对上述多个可执行对象文件的字符串表(例如为图3示意的.strtab)进行差异化配置,以配置得到不同的段名(section name),上述段名作为上述标识。
通过修改.o中间文件的字符串表.strtab,省去了针对每个符号存放的具体段进行查找和进行attribute(section)的操作步骤,减少开发者的工作量,同时也便于维护。
例如,可以通过编写一个查找和配置的elf功能程序,该功能程序能够实现以下功能:通过查找指定的目标代码,对.o文件的.strtab中字符串中的指定的目标代码的section name(段名)配置差异化标识(例如前面示意的sumfun_1和sumfun_2),这样在中间文件.o文件链接成可执行文件的时候,就可以根据不同的sectionname标识属性,将各个中间文件的各个section(section是指段,变量或代码所存放的段,编译时为变量或代码指定段名)放到对应的地址空间上。
在一些实施例中,上述电子设备处于第一访问状态,例如在有些车辆的mcu中,第一访问状态具体为:不存在资源访问差异、或者不具有资源访问特权级的情况。
图4是根据另一示例性实施例示出的内存划分的方法的实施过程示意图。
在第一访问状态下,上述内存划分的方法除了包括上述步骤S110和S120之外,还包括以下步骤:S410、S420和S430,为了简化示意,仅在图4中示意了步骤S410~S430。
在步骤S410,响应于第一功能单元对应的第一进程对第一内核接口的调用,将上述第一进程针对第一内核地址空间的第一访问权限写入至内存保护单元中。上述第一内核地址空间为上述第一进程进行第一内核接口调用后待访问的内核地址空间。
本实施例中,在图4中,用户任务接口中,多个第一功能单元对应的第一进程分别为:user_fun1、user_fun2或user_fun3,对应的第一内核接口(示意为操作系统(os)内核接口)分别为:kernel_fun1、kernel_fun2或kernel_fun3。
由于本实施例中不存在资源访问差异、不具有资源访问特权级,即对于不同资源的访问权限是不存在特权级分类的。在不存在特权级的第一访问状态下,通过对MPU保护空间的切换来实现内存访问的切换和保护。
例如参照图4中单点划线所示,在第一进程(例如为user_fun1、user_fun2或user_fun3)对第一内核接口(例如对应为kernel_fun1、kernel_fun2或kernel_fun3)调用的情况下,该电子设备会将第一进程针对待访问的内核地址空间(描述为第一内核地址空间)的第一访问权限写入至MPU中。例如,将user_fun1能够访问的内核地址空间00000001~00000010写入至MPU。
在步骤S420,基于上述第一访问权限,上述内存保护单元授权上述第一进程访问上述第一内核地址空间。
由于MPU中写入了第一访问权限,则MPU会对第一进程对第一内核地址空间的访问进行放行,即MPU会授权第一进程访问第一内核地址空间。这样一来,在用户进程每次进行内核接口调用的时候会执行MPU切换操作(对应步骤S410和S420):将第一访问权限写入至MPU中,从而授权第一进程对第一内核地址空间的访问,实现用户态进程对内核地址空间的访问。
例如,在对第一进程user_fun1进行第一访问权限的授权后,第一进程user_fun1能够在内核地址空间00000001~00000010里面进行授权的读或写操作,如果访问其他范围的内核地址空间,比如00000012,则会被MPU阻拦并报错。
在步骤S430,响应于上述第一进程结束对上述第一内核接口的调用,在上述内存保护单元中切换回上述第一进程对第一初始内存空间的初始访问权限。上述第一初始内存空间为上述第一进程进行第一内核接口调用前所能访问的内存空间。
在第一进程访问完对应的第一内核地址空间并执行完既定操作,结束对第一内核接口的调用;之后MPU会恢复至原先状态:MPU切换回上述第一进程对第一初始内存空间的初始访问权限,如图4中双点划线所示。
本实施例中,包含步骤S410~S430的实施例中,通过设置响应于内核调用而进行MPU切换操作、响应于结束内核调用而恢复MPU原先权限的切换逻辑,在不存在特权级的系统中能够实现对操作系统的内核地址空间的有效保护;该方案可以应用于车辆的mcu中,有助于提升mcu的内存访问安全性。
图5是根据又一示例性实施例示出的内存划分的方法的实施过程示意图。
在一些实施例中,上述电子设备处于第二访问状态,第二访问状态为存在资源访问差异或者具有资源访问特权级的情况。例如在一些支持特权级概念的mcu中,对于处于不同特权级下的访问权限是有差异的,较高特权级下才能访问一些关键数据,例如访问寄存器里面的数据或者内核内存里面的数据等,并且有些情况下为了保证安全性,这些关键数据的权限设置为只读;在较低特权级下(例如描述为用户级)不能访问这些关键数据。
在第二访问状态下,上述内存划分的方法除了包括上述步骤S110和S120之外,还包括以下步骤:S510、S520、S530和S540,为了简化示意,仅在图5中示意了步骤S510~S540。
在步骤S510,响应于第二功能单元对应的第二进程对第二内核接口的调用,触发系统调用处理函数的执行。
在一些实施例中,参照图5所示,系统调用处理函数为syscall_handle函数;上述系统调用处理函数用于使得用户级进程陷入至特权级。
在步骤S520,基于上述系统调用处理函数,将上述第二进程针对第二内核地址空间的第二访问权限写入至内存保护单元中。上述第二内核地址空间为上述第二进程进行第二内核接口调用后待访问的内核地址空间。
本实施例中,在图5中,多个第二功能单元对应的第二进程分别为:user_fun4、user_fun5或user_fun6,第二进程陷入至特权级后分别对应调用的内核接口为:kernel_fun4、kernel_fun5或kernel_fun6。
参照图5中单点划线所示,基于上述系统调用处理函数syscall_handle,将第二进程(例如为user_fun4、user_fun5或user_fun6)针对待访问的内核地址空间(描述为第二内核地址空间)的第二访问权限写入至MPU中;同时该第二进程从用户态陷入至内核态,内核态下的第二进程对应的操作系统(os)内核接口例如分别对应为kernel_fun4、kernel_fun5或kernel_fun6。
在步骤S530,基于上述第二访问权限,上述内存保护单元授权上述第二进程访问上述第二内核地址空间。
由于MPU中写入了第二访问权限,则MPU会对内核态下的第二进程对第二内核地址空间的访问进行放行,即MPU会授权第二进程(已经陷入内核态)访问第二内核地址空间。这样一来,在每个用户进程进行内核接口调用的时候会触发系统调用处理函数的执行,基于系统调用处理函数来执行MPU切换操作(对应步骤S520和S530):将第二访问权限写入至MPU中,从而授权第二进程对第二内核地址空间的访问,实现用户态进程陷入内核态并对内核地址空间的访问。
在步骤S540,响应于上述第二进程结束对上述第二内核接口的调用,在上述内存保护单元中切换回上述第二进程对第二初始内存空间的初始访问权限。上述第二初始内存空间为上述第二进程进行第二内核接口调用前所能访问的内存空间。
在第二进程访问完对应的第二内核地址空间并执行完既定操作,结束对第二内核接口的调用;该电子设备会控制MPU恢复至原先状态:MPU切换回上述第二进程对第二初始内存空间的初始访问权限,如图5中双点划线所示。
本实施例中,包含步骤S510~S540的实施例中,在存在特权级的系统中,通过系统调用处理函数进入到特权级,然后把内核的地址空间添加到MPU中,执行对应的操作系统(os)内核接口,执行完后,返回用户级,并将MPU恢复至原先的地址空间,实现对支持特权级系统的内核空间的保护。
示例性装置
图6是根据一示例性实施例示出的内存划分的装置的框图。
参照图6所示,本实施例提供的内存划分的装置600包括:获取模块610和配置模块620。
上述获取模块610用于获取多个可执行代码文件;上述多个可执行代码文件包括以下至少一种:不同应用的相同功能单元编译后的中间文件、相同应用的不同功能单元编译后的中间文件、不同应用的不同功能单元编译后的中间文件。
在一些实施例中,上述功能单元可以包括以下至少一种:函数、变量、代码段、数据段。
上述配置模块620用于对上述多个可执行代码文件中的目标代码配置差异化的标识,上述标识用于指向不同的内存空间。
在一些实施例中,上述内存空间为静态内存地址空间,上述中间文件为可执行对象文件,上述可执行对象文件以显性形式呈现上述标识和上述静态内存地址空间之间的对应关系。
在一些实施例中,对上述多个可执行代码文件中的目标代码配置差异化的标识,包括:对上述多个可执行对象文件的字符串表进行差异化配置,以配置得到不同的段名,上述段名作为上述标识。
在一些实施例中,在第一访问状态下,上述装置600还包括:权限写入模块、授权模块。
上述权限写入模块,用于响应于第一功能单元对应的第一进程对第一内核接口的调用,将上述第一进程针对第一内核地址空间的第一访问权限写入至内存保护单元中;上述第一内核地址空间为上述第一进程进行第一内核接口调用后待访问的内核地址空间。
上述授权模块,用于基于上述第一访问权限,上述内存保护单元授权上述第一进程访问上述第一内核地址空间。
上述权限写入模块,还用于响应于上述第一进程结束对上述第一内核接口的调用,在上述内存保护单元中切换回上述第一进程对第一初始内存空间的初始访问权限,上述第一初始内存空间为上述第一进程进行第一内核接口调用前所能访问的内存空间。
在一些实施例中,在第二访问状态下,上述装置还包括:系统调用模块。
上述系统调用模块,用于响应于第二功能单元对应的第二进程对第二内核接口的调用,触发系统调用处理函数的执行。
上述权限写入模块,用于基于上述系统调用处理函数,将上述第二进程针对第二内核地址空间的第二访问权限写入至内存保护单元中;上述第二内核地址空间为上述第二进程进行第二内核接口调用后待访问的内核地址空间。
上述授权模块,用于基于上述第二访问权限,上述内存保护单元授权上述第二进程访问上述第二内核地址空间。
上述权限写入模块,还用于响应于上述第二进程结束对上述第二内核接口的调用,在上述内存保护单元中切换回上述第二进程对第二初始内存空间的初始访问权限,上述第二初始内存空间为上述第二进程进行第二内核接口调用前所能访问的内存空间。
第一个实施例中的具体细节、有益效果以及更多的实施例等内容可以全部并入至本实施例,这里不再赘述。
示例性车辆
图7是根据一示例性实施例示出的车辆的框图。
参照图7所示,该车辆700可以是燃油车辆、混合动力车辆、电动车辆、燃料电池车辆或者其他类型的车辆。车辆700可包括多个子系统,例如,驱动系统710、控制系统720、感知系统730、通信系统740、信息显示系统750以及计算处理系统760。车辆700还可以包括更多或更少的子系统,且各个子系统还可以包括多个部件,在此不一一赘述。
该驱动系统710,包括为车辆700提供动力运动的组件。例如,发动机、能量源、传动装置等。
该控制系统720,包括为车辆700提供控制的组件。例如,车辆控制、座舱设备控制、驾驶辅助控制等。
该感知系统730,包括为车辆700提供周边环境感知的组件。例如,车辆定位系统、激光传感器、语音传感器、超声波传感器、摄像设备等。
该通信系统740,包括为车辆700提供通信连接的组件。例如,移动通信网络(如,3G、4G、5G网络等)、WiFi、蓝牙、车联网等。
该信息显示系统750,包括为车辆700提供各种信息显示的组件。例如,车辆信息显示、导航信息显示、娱乐信息显示等。
该计算处理系统760,包括为车辆700提供数据计算和处理能力的组件。计算处理系统760可包括至少一个处理器761和存储器762。处理器761可以执行存储在存储器762中的指令。
处理器761可以是任何常规的处理器,诸如商业可获得的CPU。处理器还可以包括诸如图像处理器(Graphic Process Unit,GPU),现场可编程门阵列(Field ProgrammableGate Array,FPGA)、片上系统(System on Chip,SOC)、专用集成芯片(ApplicationSpecific Integrated Circuit,ASIC)或它们的组合。
存储器762可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本公开实施例中,车载实时操作系统运行在MCU上,MCU包含处理器761和存储器762,车载实时操作系统的指令存储在存储器762中,处理器761可以执行存储在存储器762中的指令,在涉及内存隔离管理时,采用上述示例性实施例中任一所述的内存划分的方法的全部或部分步骤,能够避免内存访问异常,提高车载实时操作系统的稳定性、安全性、可靠性。
示例性电子设备
图8是根据一示例性实施例示出的电子设备的框图。
参照图8所示,该电子设备800可以是车辆控制器、车载终端、车载计算机或者其他类型的电子设备。电子设备800,可包括至少一个处理器810和存储器820。处理器810可以执行存储在存储器820中的指令。处理器810通过数据总线与存储器820通信连接。除存储器820外,处理器810还可通过数据总线与输入设备830、输出设备840、通信设备850通信连接。
处理器810可以是任何常规的处理器,诸如商业可获得的CPU。处理器还可以包括诸如图像处理器(Graphic Process Unit,GPU),现场可编程门阵列(Field ProgrammableGate Array,FPGA)、片上系统(System on Chip,SOC)、专用集成芯片(ApplicationSpecific Integrated Circuit,ASIC)或它们的组合。
存储器820可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本公开实施例中,存储器820中存储有可执行指令,处理器810可以从所述存储器820中读取所述可执行指令,并执行所述指令以实现上述示例性实施例中任一所述的内存划分的方法的全部或部分步骤。
示例性计算机可读存储介质
除了上述方法和装置以外,本公开的示例性实施例还可以是计算机程序产品或存储有该计算机程序产品的计算机可读存储介质。该计算机产品中包括计算机程序指令,该计算机程序指令可被处理器执行,以实现上述示例性实施例中任一方法中描述的的全部或部分步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言以及脚本语言(例如Python)。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子包括:具有一个或多个导线电连接的静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘,或者上述的任意合适的组合。
本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种内存划分的方法,其特征在于,包括:
获取多个可执行代码文件;所述多个可执行代码文件包括以下至少一种:不同应用的相同功能单元编译后的中间文件、相同应用的不同功能单元编译后的中间文件、不同应用的不同功能单元编译后的中间文件;
对所述多个可执行代码文件中的目标代码配置差异化的标识,所述标识用于指向不同的内存空间。
2.根据权利要求1所述的方法,其特征在于,所述内存空间为静态内存地址空间,所述中间文件为可执行对象文件,所述可执行对象文件以显性形式呈现所述标识和所述静态内存地址空间之间的对应关系。
3.根据权利要求2所述的方法,其特征在于,对所述多个可执行代码文件中的目标代码配置差异化的标识,包括:
对所述多个可执行对象文件的字符串表进行差异化配置,以配置得到不同的段名,所述段名作为所述标识。
4.根据权利要求1-3中任一项所述的方法,其特征在于,在第一访问状态下,所述方法还包括:
响应于第一功能单元对应的第一进程对第一内核接口的调用,将所述第一进程针对第一内核地址空间的第一访问权限写入至内存保护单元中;所述第一内核地址空间为所述第一进程进行第一内核接口调用后待访问的内核地址空间;
基于所述第一访问权限,所述内存保护单元授权所述第一进程访问所述第一内核地址空间;
响应于所述第一进程结束对所述第一内核接口的调用,在所述内存保护单元中切换回所述第一进程对第一初始内存空间的初始访问权限,所述第一初始内存空间为所述第一进程进行第一内核接口调用前所能访问的内存空间。
5.根据权利要求1-3中任一项所述的方法,其特征在于,在第二访问状态下,所述方法还包括:
响应于第二功能单元对应的第二进程对第二内核接口的调用,触发系统调用处理函数的执行;
基于所述系统调用处理函数,将所述第二进程针对第二内核地址空间的第二访问权限写入至内存保护单元中;所述第二内核地址空间为所述第二进程进行第二内核接口调用后待访问的内核地址空间;
基于所述第二访问权限,所述内存保护单元授权所述第二进程访问所述第二内核地址空间;
响应于所述第二进程结束对所述第二内核接口的调用,在所述内存保护单元中切换回所述第二进程对第二初始内存空间的初始访问权限,所述第二初始内存空间为所述第二进程进行第二内核接口调用前所能访问的内存空间。
6.根据权利要求1所述的方法,其特征在于,所述功能单元可以包括以下至少一种:函数、变量、代码段、数据段。
7.一种内存划分的装置,其特征在于,包括:
获取模块,用于获取多个可执行代码文件;所述多个可执行代码文件包括以下至少一种:不同应用的相同功能单元编译后的中间文件、相同应用的不同功能单元编译后的中间文件、不同应用的不同功能单元编译后的中间文件;
配置模块,用于对所述多个可执行代码文件中的目标代码配置差异化的标识,所述标识用于指向不同的内存空间。
8.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现所述权利要求1-6中任一所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该程序指令被处理器执行时,以实现所述权利要求1-6中任一所述的方法。
10.一种车辆,其特征在于,所述车辆存储有一组指令集,所述指令集被所述车辆的微控制单元执行,以实现所述权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310780081.0A CN116954892A (zh) | 2023-06-28 | 2023-06-28 | 内存划分的方法、装置、电子设备、介质及车辆 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310780081.0A CN116954892A (zh) | 2023-06-28 | 2023-06-28 | 内存划分的方法、装置、电子设备、介质及车辆 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116954892A true CN116954892A (zh) | 2023-10-27 |
Family
ID=88461172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310780081.0A Pending CN116954892A (zh) | 2023-06-28 | 2023-06-28 | 内存划分的方法、装置、电子设备、介质及车辆 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116954892A (zh) |
-
2023
- 2023-06-28 CN CN202310780081.0A patent/CN116954892A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200250302A1 (en) | Security control method and computer system | |
CN109271258A (zh) | 读写锁重入的实现方法、装置、终端及存储介质 | |
WO2020113700A1 (en) | Systems and methods for controlling a user's access to an object | |
CN108776609A (zh) | 一种管理导航菜单的方法、装置、计算机存储介质及终端 | |
CN115086438A (zh) | 任务处理方法、视频处理单元、部件及交通设备 | |
CN111709016B (zh) | 一种基层医保结算数据防护方法及系统 | |
EP4044058A1 (en) | Capability management method and computer device | |
CN110674050B (zh) | 内存越界检测方法、装置、电子设备及计算机存储介质 | |
CN116954892A (zh) | 内存划分的方法、装置、电子设备、介质及车辆 | |
CN110908882A (zh) | 一种应用程序的性能分析方法、装置、终端设备及介质 | |
CN115422521A (zh) | 一种车机系统应用权限管理方法、装置、设备及存储介质 | |
CN116049000A (zh) | 环境参数配置方法、装置、设备、存储介质及产品 | |
CN115718666A (zh) | 用于web服务的细粒度动态权限控制方法和系统 | |
CN114764354A (zh) | 基于paas的依赖管理方法、装置、电子设备及介质 | |
CN116569139A (zh) | 车载计算机、计算机执行方法及计算机程序 | |
CN113888028A (zh) | 巡视任务分配方法、装置、电子设备以及存储介质 | |
CN109597662B (zh) | 移动终端中非公开库的调用方法、装置及电子设备 | |
CN112506774A (zh) | 一种可测性优化方法、装置、电子设备及存储介质 | |
WO2020028509A1 (en) | Method and apparatus for software isolation and security utilizing multi-soc orchestration | |
CN117667297B (zh) | 安全岛中的内存管理方法、装置、芯片、车辆以及介质 | |
CN114638004B (zh) | 一种数据保护方法、装置及存储介质 | |
CN113239347B (zh) | 一种适用于tee安全应用实例的启动方法及装置 | |
CN117009100A (zh) | 基于套接字多路复用的数据处理方法、装置、车辆及设备 | |
US20180181578A1 (en) | System and method for parallel storage transformation | |
CN115718617A (zh) | 车机ecu代码升级方法、装置、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |