CN112711546A - 内存配置方法、装置及存储介质 - Google Patents

内存配置方法、装置及存储介质 Download PDF

Info

Publication number
CN112711546A
CN112711546A CN201911016113.XA CN201911016113A CN112711546A CN 112711546 A CN112711546 A CN 112711546A CN 201911016113 A CN201911016113 A CN 201911016113A CN 112711546 A CN112711546 A CN 112711546A
Authority
CN
China
Prior art keywords
memory
target
code index
memory area
mode module
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.)
Granted
Application number
CN201911016113.XA
Other languages
English (en)
Other versions
CN112711546B (zh
Inventor
王楠
冯博群
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201911016113.XA priority Critical patent/CN112711546B/zh
Priority to PCT/CN2020/113394 priority patent/WO2021077917A1/zh
Publication of CN112711546A publication Critical patent/CN112711546A/zh
Application granted granted Critical
Publication of CN112711546B publication Critical patent/CN112711546B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供一种内存配置方法、装置及存储介质,该方法包括:用户态模块从应用程序接收内存请求,并基于内存请求所请求的内存区域的大小,为应用程序分配内存区域,确定分配的内存区域的物理内存地址;基于分配的内存区域的大小和物理内存地址,确定分配的内存区域的目标编码索引,并将目标编码索引发送给内核态模块。内核态模块在内存区域和编码索引的对应关系中查找该目标编码索引对应的目标内存区域,若目标内存区域的状态为空闲态,将目标内存区域配置给应用程序。在整个内存配置过程中,用户态模块负责内存的分配,内核态模块负责内存的安全检查,避免在内核中执行内存分配算法,造成内核的代码量大的问题,减小了操作系统的TCB。

Description

内存配置方法、装置及存储介质
技术领域
本申请涉及内存配置技术领域,尤其涉及一种内存配置方法、装置及存储介质。
背景技术
微内核操作系统是一种基于微内核架构的操作系统,它能有效地支持多处理机运行,适用于分布式系统环境,在移动设备和车载设备等上得到广泛应用。在微内核操作系统中,内存资源的管理和安全检查,成为了保证微内核操作系统安全的重要因素。在内存资源管理中,如何防止用户态程序踩踏内核内存,或者防止用户态程序之间相互踩踏内存成为亟待解决的技术问题。
目前采用由内核模块完全管理内存资源,用户态模块向内核请求内存资源的方式来防止内存之间的相互踩踏。其中,内核自己使用的资源可以直接由内核分配,无需用户态模块的参与,这样用户态模块无从访问内核使用的内存,因此不会发生用户态程序踩踏内核内存的情况。同时,内核可以记录用户态模块的内存请求,保证不同用户态模块间的非共享的内存区域不会发生踩踏情况,从而保证内存资源的安全管理。
但是,内核来管理内存资源会导致内核的代码量增加,从而使得微内核操作系统的可信基(Trusted Compute Base,TCB)增大,其中可信基是指软件系统中需通过形式化或者非形式化方法验证的基础模块,一般是运行在特权级别或者具有一定操作特权的软件模块。
发明内容
本申请实施例提供一种内存配置方法、装置及存储介质,可以降低内核的代码量,减小操作系统的TCB。
第一方面,本申请实施例提供了一种内存配置方法,该方法应用于操作系统中的内核态模块,操作系统包括用户态模块和内核态模块,其中,内核态模块是指计算机系统中,运行在特权级别的模块,主要负责操作系统的核心操作,如权限和资源的管理等;用户态模块是指运行在用户态且具有分配内存功能的模块,该用户态模块运行在非特权级别,其工作内容基本上由计算机系统的用户来指派,当用户态模块需要访问系统资源时,必须通过系统调用来完成。该方法包括:内核态模块从用户态模块处接收内存检查请求,该内存检查请求中包括目标编码索引,该目标编码索引为用户态模块基于为应用程序所分配的内存区域的大小和物理内存地址确定的,其中应用程序为运行在用户空间的用户层面的程序;内核态模块在内存区域和编码索引的对应关系中,查找该目标编码索引对应的目标内存区域,若目标内存区域的状态为空闲态,则内核态模块将目标内存区域配置给应用程序。
本申请实施例,在内存配置过程中,由用户态模块负责内存的分配,由内核态模块负责内存的安全检查,并在内核态模块对用户态模块分配的内存检查通过后,再将用户态模块分配的内存配置给应用程序,这样可以避免在内核中执行内存分配算法,造成内核的代码量大的问题,进而减小操作系统的TCB,同时提高内存配置的安全性,有效防止内存踩踏情况的发生。另外,内核态模块通过维护内存区域和编码索引的对应关系,可以及时获知每个内存区域的使用情况,以便对系统调用的内存区域的状态进行检查,进而提高内存配置的效率。
在一些实现方式中,上述方法还包括获取内存区域和编码索引的对应关系的步骤,具体包括:内核态模块从用户态模块处接收第一内存划分请求,该第一内存划分请求包括多个内存区域中每个内存区域的物理内存地址和编码索引,每个内存区域的编码索引为用户态模块根据每个内存区域的大小和物理内存地址确定的;接着,内核态模块根据每个内存区域的物理内存地址和编码索引,对操作系统的内存进行划分,获得内存区域和编码索引的对应关系。这样内核态模块根据用户态模块发送的第一内存划分请求,建立并维护内存区域和编码索引的对应关系,使得内核可以及时掌握内存区域的使用状态,进而提高了内核对内存使用情况检查准确性和检测速度。
在一些实现方式中,若内核态模块在内存区域和编码索引的对应关系中,未查找到目标编码索引对应的目标内存区域,则内核态模块向用户态模块发送响应信息,该响应信息用于指示未查找到目标区域。用户态模块接收到该响应信息后,确定是否继续为该应用程序配置内存。
在一些示例中,若用户态模块确定为该应用程序继续配置内存,则本申请实施例的方法还包括:内核态模块从用户态模块处接收第二内存划分请求,该第二内存划分请求包括目标内存区域的物理内存地址和目标编码索引;内核态模块根据目标内存区域的物理内存地址,从操作系统未配置状态的内存区域中划分出目标内存区域,并将该目标内存区域配置给应用程序。进一步的,内核态模块还将该目标内存区域和目标编码索引的对应关系,添加至内存区域和编码索引的对应关系中,获得新的内存区域和编码索引的对应关系,实现对内存区域和编码索引的对应关系的更新,保证了对内存使用情况的及时把握,提高了内存配置的可靠性。
可选的,内核态模块根据上述步骤获得新的内存区域和编码索引的对应关系后,可以将该新的内存区域和编码索引的对应关系发送给用户态模块,以使用户态模块也及时了解内存的使用情况。
可选的,上述内存区域和编码索引的对应关系为树形结构,树形结构中的每一个节点对应一个内存区域,每个内存区域对应一个编码索引。
可选的,上述树形结构为二叉树,该二叉树的结构清晰,提高了内核态模块在该二叉树中查找目标编码索引对应的目标内存区域的效率。
可选的,上述编码索引为二进制字符串,该二进制字符串的编码过程简单。
可选的,上述内存区域和编码索引的对应关系中还包括每个内存区域的大小以及每个内存区域的状态,这样内核态模块可以直接从该对应关系中获得每个内存区域的状态,便于对系统调用的内存区域状态的检查。
可选的,上述内存区域的状态包括空闲态、用户态和内核态中。
在一些实现方式中,上述用户态模块向内核态模块发送的内存检查请求还包括应用程序所请求的内存区域的目标状态,此时,内核态模块在确定若目标内存区域的状态为空闲态时,则将目标内存区域的状态从空闲态配置为目标状态,例如将目标区域的状态从空闲态转换为用户态,或者将目标区域的状态从空闲态转换为内核态。
第二方面,本申请实施例提供了一种内存配置方法,该方法应用于操作系统中的用户态模块,该操作系统包括用户态模块和内核态模块,该方法包括:用户态模块从应用程序处接收内存请求,该内存请求包括应用程序所请求的内存区域的大小;基于内存请求所请求的内存区域的大小,为应用程序分配内存区域,并确定分配的内存区域的物理内存地址;并基于分配的内存区域的大小和物理内存地址,确定分配的内存区域的目标编码索引;接着,用户态模块向内核态模块发送内存检查请求,该内存检查请求包括目标编码索引。本申请实施例,在内存配置过程中,由用户态模块负责内存的分配,由内核态模块负责对内存的安全检查,这样可以避免在内核中执行内存分配算法,造成内核的代码量大的问题,进行减小操作系统的TCB。
在一些实现方式中,上述方法还包括:创建内存区域和编码索引的对应关系的步骤,具体包括:用户态模块根据预设的内存分配规则将操作系统的内存划分成多个内存区域;并根据多个内存区域中每个内存区域的大小和物理内存地址,确定每个内存区域的编码索引;接着,用户态模块向内核态模块发送第一内存划分请求,该第一内存划分请求包括多个内存区域中每个内存区域的的物理内存地址和编码索引,以使内核态模块根据用户态模块发送的第一内存划分请求,建立并维护内存区域和编码索引的对应关系,使得内核可以及时掌握各内存区域的使用状态,方便内核随时对内存使用情况进行检查。
示例性的,上述用户态模块根据多个内存区域中每个内存区域的物理内存地址和大小,确定每个内存区域对应的编码索引,可以包括:用户态模块针对每个内存区域,根据内存区域的大小和物理内存地址,确定内存区域的内存地址空间;根据内存区域的内存地址空间,确定内存区域对应的编码索引。例如,使用预设的编码规则,将内存区域的内存地址空间转换成编码索引,确定内存区域对应的编码索引,实现对每个内存区域对应的编码索引的准确确定。
在一些实现方式中,若内核态模块在内存区域和编码索引的对应关系中,未查找到目标编码索引对应的目标内存区域,上述方法还包括:用户态模块从内核态模块处接收响应信息,该响应信息用于指示在内存区域和编码索引的对应关系中未查找到目标编码索引对应的目标区域。此时用户态模块可以根据该响应信息确定是否继续为该应用程序配置内存。
在一些示例中,若用户态模块确定为该应用程序继续配置内存,则上述方法还包括:用户态模块向内核态模块发送第二内存划分请求,该第二内存划分请求包括目标内存区域的物理内存地址和目标编码索引,以使内核态模块根据该第二内存划分请求为该应用程序继续配置内存。
可选的,用户态模块还可以从内核态模块处接收新的内存区域与编码索引的对应关系,该新的内存区域与编码索引的对应关系中包括有目标内存区域和目标编码索引的对应关系,使得用户态模块可以及时掌握内存的使用情况。
可选的,上述内存区域和编码索引的对应关系中还包括每个内存区域的大小以及每个内存区域的状态。
可选的,上述内存区域的状态包括空闲态、用户态和内核态。
可选的,上述内存区域和编码索引的对应关系为树形结构,树形结构中的每一个节点对应一个内存区域,每个内存区域对应一个编码索引。
可选的,上述树形结构为二叉树。
可选的,上述编码索引为二进制字符串。
第三方面,本申请实施例提供了一种内存配置装置,该装置应用于操作系统中的内核态模块,操作系统包括用户态模块和内核态模块,该装置包括:
接收单元,用于从用户态模块处接收内存检查请求,内存检查请求中包括目标编码索引,目标编码索引为用户态模块基于为应用程序所分配的内存区域的大小和物理内存地址确定的;
处理单元,用于在内存区域和编码索引的对应关系中,查找目标编码索引对应的目标内存区域;若目标内存区域的状态为空闲态,则将目标内存区域配置给应用程序。
在一些实现方式中,上述接收单元,还用于从用户态模块处接收第一内存划分请求,第一内存划分请求包括多个内存区域中每个内存区域的物理内存地址和编码索引,每个内存区域的编码索引为用户态模块根据每个内存区域的大小和物理内存地址确定的;上述处理单元,还用于根据每个内存区域的物理内存地址和编码索引,对操作系统的内存进行划分,获得内存区域和编码索引的对应关系。
在一些实现方式中,上述装置还包括:发送单元,用于若在内存区域和编码索引的对应关系中,未查找到目标编码索引对应的目标内存区域,向用户态模块发送响应信息,响应信息用于指示未查找到目标区域。
在一些实现方式中,上述接收单元,还用于从用户态模块处接收第二内存划分请求,第二内存划分请求包括目标内存区域的物理内存地址和目标编码索引;上述处理单元,还用于根据目标内存区域的物理内存地址,从操作系统未配置状态的内存区域中划分出目标内存区域,并将目标内存区域配置给应用程序;并将目标内存区域和目标编码索引的对应关系,添加至内存区域和编码索引的对应关系中,获得新的内存区域和编码索引的对应关系。
可选的,上述发送单元,还用于将新的内存区域和编码索引的对应关系发送给用户态模块。
可选的,上述内存区域和编码索引的对应关系为树形结构,树形结构中的每一个节点对应一个内存区域,每个内存区域对应一个编码索引。
可选的,上述树形结构为二叉树。
可选的,上述编码索引为二进制字符串。
可选的,上述内存区域和编码索引的对应关系中还包括每个内存区域的大小以及每个内存区域的状态。
可选的,上述内存区域的状态包括空闲态、用户态和内核态。
在一些实现方式中,内存检查请求还包括应用程序所请求的内存区域的目标状态,此时,上述处理单元,还用于若目标内存区域的状态为空闲态,则将目标内存区域的状态从空闲态配置为目标状态,其中目标状态包括用户态和内核态。
第四方面,本申请实施例提供了一种内存配置装置,该装置应用于操作系统中的用户态模块,操作系统包括用户态模块和内核态模块,该装置包括:
接收单元,用于从应用程序处接收内存请求,内存请求包括应用程序所请求的内存区域的大小;
处理单元,用于基于内存请求所请求的内存区域的大小,为应用程序分配内存区域,并确定分配的内存区域的物理内存地址;并基于分配的内存区域的大小和物理内存地址,确定分配的内存区域的目标编码索引;
发送单元,用于向内核态模块发送内存检查请求,内存检查请求包括目标编码索引。
在一些实现方式中,上述处理单元,还用于根据预设的内存分配规则将操作系统的内存划分成多个内存区域;根据多个内存区域中每个内存区域的大小和物理内存地址,确定每个内存区域的编码索引;上述发送单元,还用于向内核态模块发送第一内存划分请求,第一内存划分请求包括多个内存区域中每个内存区域的的物理内存地址和编码索引。
在一些实现方式中,上述处理单元,具体用于针对每个内存区域,根据内存区域的大小和物理内存地址,确定内存区域的内存地址空间;并使用预设的编码规则,将内存区域的内存地址空间转换成编码索引,获得内存区域对应的编码索引。
在一些实现方式中,上述接收单元,还用于从内核态模块处接收响应信息,响应信息用于指示在内存区域和编码索引的对应关系中未查找到目标编码索引对应的目标区域。
在一些实现方式中,上述发送单元,还用于向内核态模块发送第二内存划分请求,第二内存划分请求包括目标内存区域的物理内存地址和目标编码索引。
在一些实现方式中,上述接收单元,还用于从所述内核态模块处接收新的内存区域与编码索引的对应关系,新的内存区域与编码索引的对应关系中包括有目标内存区域和目标编码索引的对应关系。
可选的,上述内存区域和编码索引的对应关系中还包括每个内存区域的大小以及每个内存区域的状态。
可选的,上述内存区域的状态包括空闲态、用户态和内核态。
可选的,上述内存区域和编码索引的对应关系为树形结构,树形结构中的每一个节点对应一个内存区域,每个内存区域对应一个编码索引。
可选的,上述树形结构为二叉树。
可选的,上述编码索引为二进制字符串。
第五方面,本申请实施例提供了一种内存配置设备,所述内存配置设备包括处理器和存储器,所述内存配置设备上安装有操作系统,所述操作系统包括用户态模块和内核态模块,所述操作系统存储在存储器中,当所述操作系统被所述处理器运行时实现前述任一项所述的内存配置方法。
第六方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括计算机可读指令,当所述计算机可读指令被一个或多个处理器运行时实现前述任意一项所述的方法。
第七方面,本申请实施例提供了一种计算机存储介质,存储介质包括计算机程序,该计算机程序在被一个或多个处理器执行时用于实现上述第一方面或第二各方面所述的内存配置方法。
第八方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行如上述第一方面或第二各方面所述的内存配置方法。
第九方面,本申请实施例提供了一种芯片,包括处理器以及接口电路,处理器用于运行计算机程序以执行如上述第一方面或第二各方面所述的内存配置方法。
本申请实施例提供的内存配置方法、装置及存储介质,用户态模块从应用程序处接收内存请求,该内存请求包括应用程序所请求的内存区域的大小;接着,用户态模块基于内存请求所请求的内存区域的大小,为应用程序分配内存区域,确定分配的内存区域的物理内存地址;然后,用户态模块基于分配的内存区域的大小和物理内存地址,确定分配的内存区域的目标编码索引,并将目标编码索引携带在内存检查请求中发送给内核态模块。内核态模块接收到内存检查请求后,在内存区域和编码索引的对应关系中,查找该目标编码索引对应的目标内存区域,若目标内存区域的状态为空闲态,则内核态模块将目标内存区域配置给应用程序。即本申请实施例,在内存配置过程中,由用户态模块负责内存的分配,由内核态模块负责内存的安全检查,这样可以避免在内核中执行内存分配算法,造成内核的代码量大的问题,进行减小了操作系统的TCB。同时,内核态模块通过维护内存区域和编码索引的对应关系,可以及时获知每个内存区域的使用情况,以便检查每次系统调用的内存区域的状态是否为空闲态,如果系统调用的内存区域的状态是空闲态时将该内存区域配置给应用程序,进而提高了内存配置的安全性,有效防止内存踩踏情况的发生。
附图说明
图1为用户态模块踩踏内核内存的示意图;
图2为本申请实施例涉及的创建内存区域和编码索引的对应关系的流程示意图;
图3为本申请实施例涉及的一种系统架构图;
图4为本申请实施例涉及的PMEM树的一种示意图;
图5为本申请实施例涉及的PMEM树的另一种示意图;
图6为图4所示的PMEM树上的状态记录实例图;
图7为本申请实施例提供的一种内存配置方法的流程示意图;
图8为本申请实施例涉及的另一种系统架构图
图9为本申请实施例涉及的内存区域的状态转换规则示意图;
图10为本申请实施例涉及的内存配置方法的一种实例示意图;
图11为本申请实施例涉及的内存配置方法的另一种实例示意图;
图12为本申请实施例提供的另一种内存配置方法的流程示意图;
图13为本申请实施例涉及的一种内存划分示意图;
图14为本申请实施例涉及的新的内存区域和编码索引的对应关系示意图;
图15是本申请实施例提供的一种内存配置装置的结构示意图;
图16是本申请实施例提供的另一种内存配置装置的结构示意图;
图17是本申请实施例提供的一种内存配置设备的结构示意图;
图18是以内存配置设备为移动设备为例提供的一种实现方式的结构框图;
图19是本申请实施例提供的一种计算机操作系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
为了便于理解本申请的实施例,首先对本申请实施例涉及到的相关概念进行如下简单介绍:
物理内存(Physical Memory,PMEM):是操作系统内核用来表示物理内存的概念,物理内存按区域来划分,每个区域在操作系统内核中有一个对象(object)来表示,这个对象又叫做“内存区域对象”。
可信基(Trusted Compute Base,TCB):指软件系统中需通过形式化或者非形式化方法验证的基础模块,或者是具有一定操作特权的软件模块,一般运行在特权级别。
权能索引(Capability Reference,CREF):微内核系统中用权能(capability)表示对内存区域对象的操作能力,可以通过权能索引查询对应的权能。
内存安全检查(Memory Sanity Check,MSK):跟踪系统中内存的使用情况,保证内存资源的使用情况可控,不会再发生漏洞(bug)或者恶意攻击的情况,导致内存资源出现非法的状态,或者被非法访问。
特权级别:计算机系统中,处理器运行程序时处于特权状态,在特权级别运行时,软件可以不受限制地访问系统中的资源,因此如果运行在特权级别的软件出现漏洞,则会降低系统的可靠性,影响用户的使用。
非特权级别:计算机系统中,处理器运行程序时处于非特权状态,在非特权级别运行时,软件受到特权级别软件的管理,不能直接操作系统中的关键资源。
内核态模块:指计算机系统中,运行在特权级别的模块,主要负责操作系统的核心操作,如权限和资源的管理等。
用户态模块:指运行在用户态且具有分配内存功能的模块,在计算机系统中,运行在非特权级别的模块,其工作内容基本上由计算机系统的用户来指派,当用户态模块需要访问系统资源时,必须通过系统调用来完成。
二进制串:只有0或1组成的序列,可被认为是一个数字的二进制表示,也可以从高到低一位一位地读取。一般用“0bxxxx”的格式表示,“0b”表示后面的串是一个二进制串。
图1为用户态模块踩踏内核内存的示意图,内存资源是系统资源中最为基础和重要的资源之一,因为内存资源是用户态模块完成其功能所不可或缺的资源,同时也是内核提供服务时所必须的资源。因此内存资源的分配、管理和使用是操作系统中重要的要素。如果不对内存资源进行安全管理,会出现如图1所示的用户态模块踩踏内核内存的问题。
在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。
另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
下面结合具体的实施例对本申请提出的内存配置方法进行详细介绍。
内存配置包括两部分,第一部分为内存分配过程,第二部分为内存安全管理过程。本申请实施例,由用户态模块实现内存的分配,即内存划分,由内核态模块实现对用户态模块分配的内存进行安全检查,并在安全检查通过后,将用户态模块分配的内存配置给应用程序。
首先结合图2,对本申请实施例涉及的内存区域和编码索引的对应关系的创建过程进行详细介绍,该内存区域和编码索引的对应关系的创建过程可以理解为操作系统的内存的初始分配过程,内存的初始分配由用户态模块决策。
图2为本申请实施例涉及的创建内存区域和编码索引的对应关系的流程示意图,图3为本申请实施例涉及的一种系统架构图。
如图3所示,该系统架构包括用户侧和内核侧,其中用户侧包括用户态模块,该用户态模块具有内存分配功能,可以理解为用户态分配器,用于分配内存。内核侧包括系统调用接口和内核模块,用户态模块通过调用系统调用接口实现与内核态模块通信,内核态模块用于根据用户态模块分配的内存区域和确定的各内存区域的编码索引,创建内存区域和编码索引的对应关系。
结合图2和图3所示,内存区域和编码索引的对应关系的创建过程包括:
S101、用户态模块根据预设的内存分配规则将操作系统的内存划分成多个内存区域。
可选的,上述预设的内存分配规则可以是用户预先指定的。
上述将内存区域划分成多个内存区域,这多个内存区域的数量可以是用户预设的,也可以是用户态模块随机确定的。
用户态模块根据预设的内存分配规则,将操作系统的内存划分成固定的小块,每一块为一个内存区域,这样可以获得多个内存区域,以及每个内存区域的物理内存地址。
S102、用户态模块根据多个内存区域中每个内存区域的大小和物理内存地址,确定每个内存区域的编码索引。
根据上述步骤,用户态模块将操作系统的内存划分成多个内存区域后,可以获得每个内存区域的物理内存地址和大小。
为了方便后续查找内存区域,则用户态模块根据每个内存区域的物理内存地址和大小,为每个内存区域确定一个编码索引,这样可以通过编码索引快速查找到对应的内存区域。
其中,根据内存区域的大小和物理内存地址,确定内存区域对应的编码索引的方式包括但不限于如下示例:
在一种示例中,以一个内存区域1为例进行说明,根据内存区域1的大小和物理内存地址可以确定出该内存区域1的内存地址空间,例如为[a,b],其中a为大于或等于0的正数,b为大于a的正数。假设操作系统的整个内存的内存地址空间为[0,m],m为大于或等于b的正数。此时,确定内存区域1的编码索引的方式可以为,首先判断内存区域1的内存地址空间[a,b]是否与内存地址空间[0,m]相同,若相同,则结束编码。若内存区域1的内存地址空间[a,b]与内存地址空间[0,m]不相同,则判断内存区域1的内存地址空间[a,b]位于内存地址空间[0,m]的左半部分还是右半部分,若[a,b]位于[0,m]的左半部分则在内存区域1的编码索引的末尾加0,且更新当前内存地址区域为[0,m/2];若[a,b]位于[0,m]的右半部分则在内存区域1的编码索引的末尾加1,且更新当前内存地址区域为[m/2,m]。假设此时[a,b]位于[0,m]的左半部分,则继续判断内存区域1的内存地址空间[a,b]位于内存地址空间[0,m/2]的左半部分还是右半部分,若[a,b]位于[0,m/2]的左半部分则在内存区域1的编码索引的末尾再加0,且更新当前内存地址区域为[0,m/4];若[a,b]位于[0,m/2]的右半部分则在内存区域1的编码索引的末尾再加1,且更新当前内存地址区域为[m/2,m/4]。以此类推,直到当前内存地地址区域与内存区域1的内存地址空间[a,b]相同为止。
在另一种示例中,继续以内存区域1为例进行说明,判断内存区域1的内存地址空间[a,b]位于内存地址空间[0,m]的左半部分还是右半部分,若[a,b]位于[0,m]的左半部分则在内存区域1的编码索引的末尾加1,且更新当前内存地址区域为[0,m/2];若[a,b]位于[0,m]的右半部分则在内存区域1的编码索引的末尾加0,且更新当前内存地址区域为[m/2,m]。假设此时[a,b]位于[0,m]的左半部分,则继续判断内存区域1的内存地址空间[a,b]位于内存地址空间[0,m/2]的左半部分还是右半部分,若[a,b]位于[0,m/2]的左半部分则在内存区域1的编码索引的末尾再加1,且更新当前内存地址区域为[0,m/4];若[a,b]位于[0,m/2]的右半部分则在内存区域1的编码索引的末尾再加0,且更新当前内存地址区域为[m/2,m/4]。以此类推,直到当前内存地地址区域与内存区域1的内存地址空间[a,b]相同为止。
在又一种示例中,针对每一个内存区域,用户态模块根据内存区域的大小和物理内存地址,确定内存区域的内存地址空间,并使用预设的编码规则,将内存区域的内存地址空间转换成编码索引,基于该方法可以获得每个内存区域的编码索引。例如,用户态模块根据内存区域1的大小和物理内存地址,确定内存区域1的内存地址空间为[a,b],接着使用预设的编码规则,将内存区域1的内存地址空间[a,b]转换成编码索引A。
本申请实施例中,不同的内存区域对应的编码索引不同。
可选的,上述编码索引为二进制字符串。
S103、用户态模块向内核态模块发送第一内存划分请求。
该第一内存划分请求包括多个内存区域中每个内存区域的的物理内存地址和编码索引。
具体的,用户态模块根据上述S102的步骤,确定出每个内存区域的物理内存地址和编码索引后,将每个内存区域的物理内存地址和编码索引携带在第一内存划分请求中发送给内核态模块,以使内核态模块根据该第一内存划分请求,创建内存区域和编码索引的对应关系。
在一种示例中,参照上述图3所示,用户态模块通过调用系统调用接口向内核态模块发送第一内存划分请求。
S104、内核态模块根据每个内存区域的物理内存地址和编码索引,对操作系统的内存进行划分,获得内存区域和编码索引的对应关系。
内核态模块根据第一内存请求中携带的每个内存区域的物理内存地址,将操作系统的内存配置成多个内存区域。接着,将每个内存区域与该内存区域对应的编码索引一一对应,建立内存区域和编码索引的对应关系。
可选的,上述内存区域和编码索引的对应关系为树形结构,该树形结构中的每一个节点对应一个内存区域,每个内存区域对应一个编码索引。
在一种示例中,上述内存区域和编码索引的对应关系为二叉树,其中PMEM0可以理解为操作系统的总内存,该PMEM0包括两个内存区域,分别为PMEM1和PMEM2,其中PMEM1被划分为PMEM3和PMEM4两个内存区域,PMEM4被划分为PMEM5和PMEM6两个内存区域,PMEM5被划分为PMEM7和PMEM8两个内存区域。
上述每个内存区域对应一个编码索引,用户态模块为每个内存区域确定编码索引的方式包括但不限于如下几种:
方式一,参照图4所示,在该PMEM二叉树中,树的左节点的编码索引是在父节点的编码索引的末尾加0,树的右节点编码索引是在父节点的编码索引的末尾加1。例如,PMEM1对应的编码索引为0b0,PMEM2对应的编码索引为0b1,PMEM3对应的编码索引为0b00,PMEM4对应的编码索引为0b01,PMEM5对应的编码索引为0b010,PMEM6对应的编码索引为0b011,PMEM7对应的编码索引为0b0100,PMEM8对应的编码索引为0b0101。
方式二,参照图5所示,在该PMEM二叉树中,树的左节点的编码索引是在父节点的编码索引的末尾加1,树的右节点编码索引是在父节点的编码索引的末尾加0。例如,PMEM1对应的编码索引为0b1,PMEM2对应的编码索引为0b0,PMEM3对应的编码索引为0b11,PMEM4对应的编码索引为0b10,PMEM5对应的编码索引为0b101,PMEM6对应的编码索引为0b100,PMEM7对应的编码索引为0b1011,PMEM8对应的编码索引为0b1010。
可选的,内存区域和编码索引的对应关系中还包括每个内存区域的大小以及每个内存区域的状态。内存区域的状态可以理解为内存区域的使用状态。
可选的,内存区域的状态可以包括:空闲态、用户态和内核态。其中,内存区域的状态为用户态则表示该内存区域被分配给用户态程序使用,内存区域的状态为内核态则表示该内存区域被分配给内核使用,内存区域的状态为空闲态则表示该内存区域当前处于空闲状态,可以被用户态程序或内核使用。
上述内存区域的状态可以是用户态模块确定的。例如,上述用户态模块发送的第一内存划分请求中还可以包括内存区域的状态信息,这样内核态模块可以根据第一内存划分请求携带的内存区域的状态信息,在内存区域和编码索引的对应关系中记录内存区域的状态为用户态或内核态。
同时,内核中维护了最小量的系统所有内存的使用信息,因此,内核模块获知那些内存区域为内核内存,进而将这些内存区域的状态确定为内核态。
参照图6所示,图6为图4所示的PMEM树上的状态记录实例图。假设PMEM0的大小为16G,PMEM1和PMEM2的大小分别为8G,PMEM3和PMEM4的大小分别为4G,PMEM5和PMEM6的大小分别为2G,PMEM7和PMEM8的大小分别为1G。其中,PMEM8的状态为内核态,PMEM3的状态为用户态,PMEM4和PMEM5的状态为空闲态,PMEM2、PMEM6和PMEM7表示未配置状态的剩余内存区域,即操作系统中没有被分配状态的内存区域。
可选的,在上述内存区域和编码索引的对应关系中,可以将不同状态的内存区域使用不同的颜色进行着色,以记录内存区域的状态。例如,将某内存区域着色成红色表示该内存区域的状态为用户态,将某内存区域着色成绿色表示该内存区域的状态为内核态,将某内存区域着色成黄色表示该内存区域的状态为空闲态,不对某内存区域进行着色表示该内存区域为未被分配状态的剩余内存区域。
在一些示例中,内核态模块将建立好的内存区域和编码索引的对应关系发送给用户态模块,以使用户态模块及时掌握各内存区域的使用状态。
本申请实施例,通过用户态模块根据预设的内存分配规则将操作系统的内存划分成多个内存区域,并根据多个内存区域中每个内存区域的大小和物理内存地址,确定每个内存区域的编码索引,并将每个内存区域的物理内存地址和编码索引携带在第一内存划分请求中发送给内核态模块,以使内核态模块根据第一内存划分请求创建内存区域和编码索引的对应关系。在上述内存分配过程中,由用户态模块负责内存的分配,从而避免在内核中实现内存分配算法,减少内核的代码量,减小了操作系统的TCB。同时,用户态模块将每个内存区域的物理内存地址和编码索引携带在第一内存划分请求中发送给内核态模块,使得内核态模块建立并维护内存区域和编码索引的对应关系,这样内核可以及时掌握各内存区域的使用状态,方便内核随时检查是否发生不安全的内存使用情况。
图7为本申请实施例提供的一种内存配置方法的流程示意图。在上述图2所述实施例的基础上,本申请实施例对内存安全管理过程进行详细介绍,该过程可以理解为内核态模块检查用户态模块分配的内存是否合法,即内核态模块检查用户态模块分配的内存是否存在如图1所示的内存踩踏问题。
本申请实施例中,内存的实质配置是由内核态模块完成的,用户态模块完成了内存的初始分配,并未将初始分配的内存实际配置给应用程序。
如图7所示,本申请实施例的方法包括:
S201、用户态模块从应用程序处接收内存请求。
其中,内存请求包括应用程序所请求的内存区域的大小。
本申请实施例的应用程序为用户层面的程序,运行在用户空间。
本申请实施例中,S201至S203可以理解为用户态模块为应用程序分配内存的过程。
参照图8所示,图8为本申请实施例涉及的另一种系统架构图,包括用户侧和内核侧,其中用户侧包括:上层应用层和用户态模块,内核侧包括系统调用接口和内核模块。具体的,上层应用层中的应用程序向用户态模块发送内存请求,用户态模块可以从上层应用层处获得该应用程序的内存请求,并根据内存请求为该应用程序分配内存。
S202、用户态模块基于内存请求所请求的内存区域的大小,为应用程序分配内存区域,并确定分配的内存区域的物理内存地址。
具体的,用户态模块根据应用程序所请求的内存区域的大小,从操作系统的内存中为该应用程序分配一段内存区域,并确定出该内存区域的物理内存地址。
需要说明的是,用户态模块为应用程序分配的内存区域的大小可能大于应用程序所请求的内存区域的大小,也可能等于应用程序所请求的内存区域的大小,或者小于应用程序所请求的内存区域的大小。
在一种示例中,用户态模块可以随机从操作系统的内存中为该应用程序分配一段内存区域,而不考虑该分配的该内存区域是否是空闲的。
在另一种示例中,根据上述实施例的描述可知,若用户态模块获知当前时刻操作系统的各内存区域的使用状态,这样,用户态模块可以将空闲的内存区域分配给该应用程序。需要说明的是,在使用过程中,内存区域的使用状态是实时变化的,例如随时有程序申请清退所使用的内存区域,或者随时有程序申请内存区域。这样无法保证用户态模块获知的各内存区域的使用状态是完全正确的。
因此,针对上述两种示例,均需要内核态模块对用户态分配的内存区域进行检查,防止内存踩踏的问题发生。
S203、用户态模块基于分配的内存区域的大小和物理内存地址,确定分配的内存区域的目标编码索引。
该步骤的具体实现过程与上述S102的一致,可以参照上述S102的描述,在此不再赘述。
可选的,该目标编码索引为二进制字符串。
S204、用户态模块向内核态模块发送内存检查请求。
该内存检查请求包括上述目标编码索引,该内存检查请求用于请求内核态模块检查该目标编码索引对应的目标内存区域是否合法。
参照图8所示,用户态模块调用系统调用接口,通过系统调用接口将携带有目标编码索引的内存检查请求发送给内核态模块,以使内核态模块基于该目标编码索引,检查该目标编码索引对应的目标内存区域是否合法。
S205、内核态模块在内存区域和编码索引的对应关系中,查找目标编码索引对应的目标内存区域。
内核态模块接收到用户态模块发送的内存检查请求,从该内存检查请求中解析出目标编码索引。接着,内核态模块在内存区域和编码索引的对应关系中,查找该目标编码索引对应的目标内存区域。
示例性的,假设内存区域和编码索引的对应关系为图4所示的PMEM二叉树,用户态模块确定的目标编码索引为0b011,这样可以在该PMEM二叉树中,查找到目标编码索引0b011对应的目标内存区域为PMEM6。
S205、若目标内存区域的状态为空闲态,则内核态模块将目标内存区域配置给应用程序。
由上述图2所示的实施例可知,内存区域和编码索引的对应关系中包括每个内存区域的状态。这样内核态模块查找到目标编码索引对应的目标内存区域后,检查该目标内存区域的状态。若该目标内存区域的状态为空闲态,则将该目标内存区域配置给上述应用程序。若该目标内存区域的状态为非空闲态,例如为用户态或内核态,为了防止内存踩踏,则不会将该目标内存区域配置给上述应用程序。
可选的,内核态模块在检查到目标内存区域的状态为用户态或内核态时,可以向用户态模块发送内存分配失败的响应信息。可选的,在该响应信息中还可以指示此次内存失败的原因信息,例如指示此次内存配置失败的原因为分配的内存区域的状态为用户态或内核态。
用户态模块在接收到内存分配失败的响应信息后,可以确定是否重新为上述应用程序分配内存,若是,则继续执行上述S201至S205的步骤。
在一些实施例中,上述内存检查请求还包括应用程序所请求的内存区域的目标状态,该目标状态包括用户态和内核态,此时,本申请实施例的方法还包括:
S206、内核态模块将目标内存区域的状态从空闲态配置为目标状态。
图9为本申请实施例涉及的内存区域的状态转换规则示意图,即空闲态可以转换为空闲态,空闲态可以转换为用户态或内核态,但是用户态与内核态之间不能进行转换。
在本申请实施例中,内核态模块将空闲的目标内存区域配置给应用程序后,为了及时掌握各内存区域的状态,则将内存区域和编码索引的对应关系中目标内存区域的状态从空闲态配置为目标状态,进而获得新的内存区域和编码索引的对应关系。这样保证内核态模块维护的内存区域和编码索引的对应关系,实时记录了各内存区域的使用状态,为内核态模块检查用户态模块分配的内存区域是否合法提供了可靠的依据。
下面结合两个常见的场景,对本申请实施例的方法进行详细说明。
场景一,检测用户试图去映射已经被内核使用的内存的情况。
该场景中,操作系统提供了映射内存的系统调用:Map_PMEM(pmem,args),其作用是把物理内存资源映射到用户空间去访问,如果用户态模块在内核不知情的情况下,映射了一块已经被内核访问的内存区域,那么意味着用户态模块可以修改内核使用的内存资源,这样会发生图1所示的用户态模块踩内核资源的情况,从而降低系统的安全性。为了能够检测出这种问题,如图10所示,在系统调用:Map_PMEM(pmem,args)中,增加状态转换语义free->user,其中free表示空闲态,user表示用户态,该状态转换语义表示将内存区域的状态从空闲态转换为用户态。
具体检测过程包括:应用程序向用户态模块发送内存请求,用户态模块根据该内存请求,为应用程序分配内存区域,并基于该分配的内存区域的物理内存地址和大小,确定该分配的内存区域的目标编码索引。接着,用户态模块通过调用内核侧中的Map_PMEM,将携带有目标编码索引的内存检查请求发送给内核态模块。内核侧的Map_PMEM被调用后,内核态模块从内存区域和编码索引的对应关系中查找目标编码索引对应的目标内存区域以及该目标内存区域的状态。接着,基于状态转换语义free->user,判断该目标内存区域的状态是否为空闲态,若为空闲态,则将目标内存区域的状态从空闲态配置为用户态,且更新内存区域和编码索引的对应关系,获得新的内存区域和编码索引的对应关系。若判断目标内存区域的状态不是空闲态,则终止系统调用。
在该示例中,通过上述方法,可以准确检测出用户试图去映射已经被内核使用的内存的情况。
场景二,检测出内核使用用户态模块已经映射的内存的情况。
该场景中,操作系统提供了映射内存的系统调用:New_KOBJ(pmem,args),其作用是在一块物理内存上创建一个新的内核对象,内核会直接读取该对象所在的物理内存,如果用户态分配器把一块已经分给用户态模块做映射的内存,交给内核来创建内核对象,那么同样会发生如图1所示的用户态模块踩踏内核内存的情况。为了能够检测出这样的安全问题,如图11所示,在系统调用:New_KOBJ中,增加状态转换语义free->kern,其中free表示空闲态,kern表示内核态,该状态转换语义表示将内存区域的状态从空闲态转换为内核态。
具体检测过程包括:应用程序向用户态模块发送内存请求,用户态模块根据该内存请求,为应用程序分配内存区域,并基于该分配的内存区域的物理内存地址和大小,确定该分配的内存区域的目标编码索引。接着,用户态模块通过调用内核侧中的New_KOBJ,将携带有目标编码索引的内存检查请求发送给内核态模块。内核侧的New_KOBJ被调用后,内核态模块从内存区域和编码索引的对应关系中查找目标编码索引对应的目标内存区域以及该目标内存区域的状态。接着,基于状态转换语义free->kern,判断该目标内存区域的状态是否为空闲态,若为空闲态,则将目标内存区域的状态从空闲态配置为内核态,且更新内存区域和编码索引的对应关系,获得新的内存区域和编码索引的对应关系。若判断目标内存区域的状态不是空闲态,则终止系统调用。
在该示例中,通过上述方法,可以准确检测出检测出内核使用用户态模块已经映射的内存的情况。
本申请实施例,用户态模块从应用程序处接收内存请求,并基于内存请求所请求的内存大小,为应用程序分配内存区域,并确定分配的内存区域的物理内存地址,接着,基于分配的内存区域的大小和物理内存地址,确定分配的内存区域的目标编码索引,并将该目标编码索引携带在内存检查请求中发送给内核态模块。内核态模块在内存区域和编码索引的对应关系中,查找目标编码索引对应的目标内存区域,若目标内存区域的状态为空闲态,则内核态模块将目标内存区域配置给应用程序,并将目标内存区域的状态从空闲态配置为目标状态。本申请实施例,在内存区域和编码索引的对应关系中记录内存区域的状态,使得内核每时每刻获知每个内存区域的使用情况,并为内存相关的系统调用赋予状态转换语义,内核态模块来检查每次系统调用导致内存状态转换是否安全,如果安全则继续进行内存分配,如果不安全,则终止此次系统调用,进而提高了内存配置的安全性,有效防止内存踩踏情况的发生。进一步的,用户态模块实现对内存的分配,内核态模块实现对内存的安全检查,从而避免在内核中实现内存分配算法,减小了系统的TCB。
图12为本申请实施例提供的另一种内存配置方法的流程示意图。在上述图2和图6所示实施例的基础上,本申请实施例涉及在内存安全管理时,更新内存区域和编码索引的对应关系的过程。如图12所示,本申请实施例的方法包括:
S301、用户态模块从应用程序处接收内存请求。
该内存请求包括所述应用程序所请求的内存区域的大小。
S302、用户态模块基于内存请求所请求的内存区域的大小,为应用程序分配内存请求,并确定分配的内存区域的物理内存地址。
S303、用户态模块基于分配的内存区域的大小和物理内存地址,确定分配的内存区域的目标编码索引。
S304、用户态模块向所述内核态模块发送内存检查请求。
该内存检查请求包括上述目标编码索引。
上述S301至S304的具体执行过程与上述S201至S204的具体执行过程一致,可以参照上述S201至S204的描述,在此不再赘述。
S305、内核态模块在内存区域和编码索引的对应关系中,未查找目标编码索引对应的目标内存区域,向用户态模块发送响应信息。
该响应信息用于指示未查找到目标内存区域。
由上述图6可知,操作系统的内存,一部分分配给用户态程序,使得这部分内存的状态为用户态;一部分分配给内核,使得这部分内存的状态为内核态;还将部分内存分配为空闲态,可以被用户态程序或内核使用。其中,操作系统中的一部分内存没有分配,这部分内存为空闲的剩余内存。
基于此,当用户态模块为应用程序分配的内存区域为上述空闲的剩余内存中的一部分或全部时,例如,用户态模块为应用程序分配的内存区域为图4中PEME2的一部分,例如为PEME9,但是内存区域和编码索引的对应关系中不包括内存区域PEME9以及内存区域PEME9的编码索引。这样,内核态模块在该内存区域和编码索引的对应关系中无法查找到该目标编码索引(例如PEME9的编码索引)所对应的目标内存区域(例如PEME9)。
此时,内核态模块向用户态模块发送响应信息,该响应信息用于指示在内存区域和编码索引的对应关系中未查找到该目标编码索引所对应的目标内存区域。
S306、用户态模块向内核态模块发送第二内存划分请求。
该第二内存划分请求包括目标内存区域的物理内存地址和目标编码索引。
在本申请实施例中,用户态模块接收到内核态模块发送的响应信息后,确定是否为该应用程序继续分配内存。若确定继续为该应用程序分配内存,则将上述目标内存区域的物理内存地址和目标编码索引携带在第二内存划分请求中发送给内核态模块。
S307、内核态模块根据目标内存区域的物理内存地址,从操作系统未配置状态的内存区域中划分出目标内存区域,将该目标内存区域配置给应用程序。
内核态模块接收到用户态模块发送的第二内存划分请求时,解析该第二内存划分请求获得目标内存区域的物理内存地址和目标编码索引。接着,从操作系统的空闲的未被配置状态的剩余内存区域中划分出目标内存区域,并将该目标内存区域与目标编码索引的对应关系。
在一种示例中,假设上述用户态模块为应用程序分配的目标内存区域为图6中未配置状态的剩余8G内存中的左侧4G内存区域。这样,内核态模块图6中未配置状态的剩余8G内存中的左侧4G内存区域作为目标内存区域,配置给应用程序,得到如图13所示的内存分配示意图,其中该目标内存区域的状态为用户态。
S308、内核态模块将目标内存区域和目标编码索引的对应关系,添加至内存区域和编码索引的对应关系中,获得新的内存区域和编码索引的对应关系。
内核态模块在从操作系统未配置状态的内存区域中划分出目标内存区域后,建立目标内存区域和目标编码索引的对应关系,该目标内存区域和目标编码索引的对应关系中包括目标内存区域的状态。将该目标内存区域和目标编码索引的对应关系添加至内存区域和编码索引的对应关系中,获得新的内存区域和编码索引的对应关系。
示例性的,假设图6中未配置状态的剩余8G内存对应图4中的内存区域PMEM2,参照图13所示,将上述未配置状态的剩余8G内存划分为左侧的4G内存区域和右侧的4G内存区域。对应的,可以将图6中的PMEM2划分成两部分,分别记为PMEM9和PMEM10,其中PMEM9对应图13中的右侧8G内存中的左侧4G内存区域,PMEM10对应图13中的右侧8G内存中的右侧4G内存区域。假设PMEM9为目标内存区域,其对应的目标编码索引为0b10,这样可以将PMEM9和目标编码索引0b10添加至图4所示的内存区域和编码索引的对应关系中,获得如图14所示的新的内存区域和编码索引的对应关系,该新的内存区域和编码索引的对应关系中包括目标内存区域的状态。
本申请实施例,内核态模块在检测到内存区域和编码索引的对应关系中没有目标编码索引对应的目标内存区域时,向用户态模块发送响应信息,以向用户态模块告知内存区域和编码索引的对应关系中没有目标编码索引对应的目标内存区域。用户态模块接收到响应信息后,在确定为应用程序继续分配内存时,向内核态模块发送第二内存分配请求。内核态模块根据第二内存分配请求携带的目标内存区域的物理内存地址和目标编码索引,从操作系统未配置状态的内存区域中划分出目标内存区域,并将该目标内存区域配置给应用程序。同时,内核态模块将目标内存区域和目标编码索引的对应关系,添加至内存区域和编码索引的对应关系中,获得新的内存区域和编码索引的对应关系。经过上述步骤,当内核态模块检测到内存区域和编码索引的对应关系中不存在目标编码索引对应的目标内存区域时,用户态模块可以继续为应用程序分配内存,且内核态模块根据内存分配情况,实时更新内存区域和编码索引的对应关系,保证了对内存使用情况的实时把握,提高了内存配置的可靠性。
在一些实施例中,内核态模块将上述S307确定的新的内存区域和编码索引的对应关系发送给用户态模块,使得用户态模块及时掌握操作系统的内存使用情况。
以上介绍了本申请实施例所提供的内存配置方法,以下将具体介绍本申请实施例所提供的内存配置装置。
图15是本申请实施例提供的一种内存配置装置的结构示意图,该内存配置装置可用于执行前述各个方法实施例所描述的内核态模块的技术方案。如图15所示,该内存配置装置100至少包括:
接收单元110,用于从所述用户态模块处接收内存检查请求,所述内存检查请求中包括目标编码索引,所述目标编码索引为所述用户态模块基于为应用程序所分配的内存区域的大小和物理内存地址确定的;
处理单元120,用于在内存区域和编码索引的对应关系中,查找所述目标编码索引对应的目标内存区域;若所述目标内存区域的状态为空闲态,则将所述目标内存区域配置给所述应用程序。
可选的,上述内存区域和编码索引的对应关系中还包括每个内存区域的大小以及每个内存区域的状态。
可选的,上述内存区域的状态包括空闲态、用户态和内核态。
可选的,上述内存检查请求还包括所述应用程序所请求的内存区域的目标状态,此时,上述处理单元120,还用于若所述目标内存区域的状态为空闲态,则将所述目标内存区域的状态从空闲态配置为目标状态,所述目标状态包括用户态和内核态。
在一些实施例中,上述接收单元110,还用于从所述用户态模块处接收第一内存划分请求,所述第一内存划分请求包括多个内存区域中每个内存区域的物理内存地址和编码索引,每个所述内存区域的编码索引为所述用户态模块根据每个所述内存区域的大小和物理内存地址确定的;
上述处理单元120,还用于根据每个所述内存区域的物理内存地址和编码索引,对所述操作系统的内存进行划分,获得所述内存区域和编码索引的对应关系。
在一些实施例中,上述装置还包括:
发送单元130,用于若在所述内存区域和编码索引的对应关系中,未查找到所述目标编码索引对应的目标内存区域,向所述用户态模块发送响应信息,所述响应信息用于指示未查找到所述目标区域。
在一些实施例中,上述接收单元110,还用于从所述用户态模块处接收第二内存划分请求,所述第二内存划分请求包括所述目标内存区域的物理内存地址和所述目标编码索引;
上述处理单元120,还用于根据所述目标内存区域的物理内存地址,从所述操作系统未配置状态的内存区域中划分出所述目标内存区域,并将所述目标内存区域配置给所述应用程序;并将所述目标内存区域和所述目标编码索引的对应关系,添加至所述内存区域和编码索引的对应关系中,获得新的内存区域和编码索引的对应关系。
在一些实施例中,上述发送单元130,还用于将所述新的内存区域和编码索引的对应关系发送给所述用户态模块。
可选的,上述内存区域和编码索引的对应关系为树形结构,所述树形结构中的每一个节点对应一个内存区域,每个内存区域对应一个编码索引。
可选的,上述树形结构为二叉树。
可选的,上述编码索引为二进制字符串。
可以理解的是,图15所示的内存配置装置还用于实现上述图2、图7和图12所描述的内存配置方法实施例,具体实现方式参照上述方法实施例的描述,在此不再赘述。
图16是本申请实施例提供的另一种内存配置装置的结构示意图,该内存配置装置可用于执行前述各个方法实施例所描述的用户态模块的技术方案。如图16所示,该内存配置装置200至少包括:
接收单元210,用于从应用程序处接收内存请求,所述内存请求包括所述应用程序所请求的内存区域的大小;
处理单元220,用于基于所述内存请求所请求的内存区域的大小,为所述应用程序分配内存区域,并确定分配的内存区域的物理内存地址;并基于所述分配的内存区域的大小和物理内存地址,确定所述分配的内存区域的目标编码索引;
发送单元230,用于向所述内核态模块发送内存检查请求,所述内存检查请求包括所述目标编码索引。
在一些实施例中,上述处理单元220,还用于根据预设的内存分配规则将所述操作系统的内存划分成多个内存区域;根据所述多个内存区域中每个内存区域的大小和物理内存地址,确定每个所述内存区域的编码索引;
上述发送单元230,还用于向所述内核态模块发送第一内存划分请求,所述第一内存划分请求包括所述多个内存区域中每个所述内存区域的的物理内存地址和编码索引。
在一些实施例中,上述处理单元220,具体用于针对每个所述内存区域,根据所述内存区域的大小和物理内存地址,确定所述内存区域的内存地址空间;并使用预设的编码规则,将所述内存区域的内存地址空间转换成编码索引,获得所述内存区域对应的编码索引。
在一些实施例中,上述接收单元210,还用于从所述内核态模块处接收响应信息,所述响应信息用于指示在内存区域和编码索引的对应关系中未查找到所述目标编码索引对应的目标区域。
在一些实施例中,上述发送单元230,还用于向所述内核态模块发送第二内存划分请求,所述第二内存划分请求包括所述目标内存区域的物理内存地址和所述目标编码索引。
可选的,上述内存区域和编码索引的对应关系中还包括每个内存区域的大小以及每个内存区域的状态。
可选的,上述内存区域的状态包括空闲态、用户态和内核态。
可选的,上述内存区域和编码索引的对应关系为树形结构,所述树形结构中的每一个节点对应一个内存区域,每个内存区域对应一个编码索引。
可选的,上述树形结构为二叉树。
可选的,上述编码索引为二进制字符串。
可以理解的是,图16所示的内存配置装置还用于实现上述图2、图7和图12所描述的内存配置方法实施例,具体实现方式参照上述方法实施例的描述,在此不再赘述。
图17是本申请实施例提供的一种内存配置设备的结构示意图,该内存配置设备300上安装有操作系统,该操作系统包括用户态模块和内核态模块。
如图17所示,该内存配置设备300至少包括处理器310和存储器320,处理器310和存储器320通过总线330相互连接。
存储器320包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmablereadonly memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM),该存储器320用于存储相关指令及数据。
处理器310可以是一个或多个中央处理器(central processing unit,CPU),或者,该处理器310可以是一个或多个网络处理器(Network Processor,NP),或者,该处理器310还可以是一个或多个应用处理器(Application Processor,AP),或者,该处理器310还可以是CPU与NP的组合等,或者,该处理器310还可以是CPU与AP的组合等等,本申请实施例不作限定。可选的,该处理器310还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
可选的,上述内存配置设备还包括收发器340,处理器310、存储器320和收发器340通过总线330相互连接。
收发器340用于接收和发送数据。具体地,该收发器340可以包括网卡,或天线等。
该内存配置设备中的处理器310用于读取上述存储器320中存储的程序代码,执行上述图2、图7和图12所描述的内存配置方法实施例。
可选的,在图17所描述的内存配置设备中,处理器310还可用于执行图15中的处理单元120所执行的操作,和/或用于执行图16所示的处理单元220所执行的操作。收发器340还可用于执行图15中接收单元110和发送单元130所执行的操作,和/或用于执行图16所示的接收单元210和发送单元230所执行的操作。
图18是以内存配置设备为移动设备为例提供的一种实现方式的结构框图,如图18所示,移动设备10可包括:应用芯片101、存储器115(一个或多个计算机可读存储介质)、射频(RF)模块116、外围系统117。这些部件可在一个或多个通信总线114上通信。
外围系统117主要用于实现移动设备10和用户/外部环境之间的交互功能,主要包括输入输出装置。具体实现中,外围系统117可包括:触摸屏控制器118、摄像头控制器119、音频控制器122以及传感器管理模块121。其中,各个控制器可与各自对应的外围设备(如触摸屏123、摄像头124、音频电路125以及传感器126)耦合。在一些实施例中,触摸屏123可以配置有自电容式的触控面板的触摸屏,也可以是配置有红外线式的触控面板的触摸屏。在一些实施例中,摄像头124可以是3D摄像头。需要说明的,外围系统117还可以包括其他I/O外设。
应用芯片101可集成包括:一个或多个处理器111、时钟模块112以及电源管理模块113。集成于应用芯片101中的时钟模块112主要用于为处理器111产生数据传输和时序控制所需要的时钟。集成于应用芯片101中的电源管理模块113主要用于为处理器111、射频模块116以及外围系统提供稳定的、高精确度的电压。可以理解的是,该移动设备除了应用芯片之外,还可以包括其他芯片,如基带芯片等。
射频(RF)模块116用于接收和发送射频信号,主要集成了接收器和发射器。射频(RF)模块116通过射频信号与通信网络和其他通信设备通信。具体实现中,射频(RF)模块116可包括但不限于:天线系统、RF收发器、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、CODEC芯片、SIM卡和存储介质等。在一些实施例中,可在单独的芯片上实现射频(RF)模块116。
存储器115与处理器111耦合,用于存储各种软件程序和/或多组指令。具体实现中,存储器115可包括高速随机存取的存储器,并且也可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。存储器115可以存储操作系统(下述简称系统),例如ANDROID,IOS,WINDOWS,或者LINUX等嵌入式操作系统。存储器115还可以存储网络通信程序,该网络通信程序可用于与一个或多个附加设备,一个或多个移动设备,一个或多个网络设备进行通信。存储器115还可以存储用户接口程序,该用户接口程序可以通过图形化的操作界面将应用程序的内容形象逼真的显示出来,并通过菜单、对话框以及按键等输入控件接收用户对应用程序的控制操作。
存储器115还可以存储一个或多个应用程序。如图18所示,这些应用程序可包括:用户态应用程序或内核态应用程序等等。
应当理解,移动设备10仅为本申请实施例提供的一个例子,并且,移动设备10可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
在具体实现中,图18所示的移动设备还可以用于执行上述图2、图7和图12所描述的内存配置方法实施例,这里不再一一详述。
图19是本申请实施例提供的一种计算机系统的结构示意图,该计算机操作系统400包括:存储器410、处理器420和内存430。
其中,内存430包含多个内存区域;
存储器410用于存储计算机程序;
处理器420用于运行计算机程序,以执行上述图2、图7和图12所示的任一实施例中描述的内存配置方法。
本申请还提供一种计算机存储介质,存储介质包括计算机程序,计算机程序用于实现如上述图2、图7和图12所示的任一实施例中的内存配置方法。
上述计算机可读存储介质可以是上述内存配置设备的内部存储单元,例如硬盘或内存。或者上述计算机可读存储介质也可以是上述内存配置设备的外部存储设备,例如内存配置设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等等。
本申请还提供一种计算机程序产品,计算机程序产品包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行如上述图2、图7和图12所示的任一实施例中的内存配置方法。
本申请还提供一种芯片,包括处理器,处理器用于运行计算机程序,以使得安装有芯片的电子设备执行如上述图2、图7和图12所示的任一实施例中的内存配置方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。另外,各个方法实施例之间、各个装置实施例之间也可以互相参考,在不同实施例中的相同或对应内容可以互相引用,不做赘述。

Claims (43)

1.一种内存配置方法,其特征在于,应用于操作系统中的内核态模块,所述操作系统包括用户态模块和所述内核态模块,所述方法包括:
从所述用户态模块处接收内存检查请求,所述内存检查请求中包括目标编码索引,所述目标编码索引为所述用户态模块基于为应用程序所分配的内存区域的大小和物理内存地址确定的;
在内存区域和编码索引的对应关系中,查找所述目标编码索引对应的目标内存区域;
若所述目标内存区域的状态为空闲态,则将所述目标内存区域配置给所述应用程序。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述用户态模块处接收第一内存划分请求,所述第一内存划分请求包括多个内存区域中每个内存区域的物理内存地址和编码索引,每个所述内存区域的编码索引为所述用户态模块根据每个所述内存区域的大小和物理内存地址确定的;
根据每个所述内存区域的物理内存地址和编码索引,对所述操作系统的内存进行划分,获得所述内存区域和编码索引的对应关系。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若在所述内存区域和编码索引的对应关系中,未查找到所述目标编码索引对应的目标内存区域,向所述用户态模块发送响应信息,所述响应信息用于指示未查找到所述目标区域。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
从所述用户态模块处接收第二内存划分请求,所述第二内存划分请求包括所述目标内存区域的物理内存地址和所述目标编码索引;
根据所述目标内存区域的物理内存地址,从所述操作系统未配置状态的内存区域中划分出所述目标内存区域,并将所述目标内存区域配置给所述应用程序;
将所述目标内存区域和所述目标编码索引的对应关系,添加至所述内存区域和编码索引的对应关系中,获得新的内存区域和编码索引的对应关系。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述内存区域和编码索引的对应关系为树形结构,所述树形结构中的每一个节点对应一个内存区域,每个内存区域对应一个编码索引。
6.根据权利要求5所述的方法,其特征在于,所述树形结构为二叉树。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述编码索引为二进制字符串。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述内存区域和编码索引的对应关系中还包括每个内存区域的大小以及每个内存区域的状态。
9.根据权利要求6所述的方法,其特征在于,所述内存区域的状态包括:空闲态、用户态和内核态。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述内存检查请求还包括所述应用程序所请求的内存区域的目标状态,所述方法还包括:
若所述目标内存区域的状态为空闲态,则将所述目标内存区域的状态从空闲态配置为所述目标状态,所述目标状态包括用户态和内核态。
11.一种内存配置方法,其特征在于,应用于操作系统中的用户态模块,所述操作系统包括所述用户态模块和内核态模块,所述方法包括:
从应用程序处接收内存请求,所述内存请求包括所述应用程序所请求的内存区域的大小;
基于所述内存请求所请求的内存区域的大小,为所述应用程序分配内存区域,并确定分配的内存区域的物理内存地址;
基于所述分配的内存区域的大小和物理内存地址,确定所述分配的内存区域的目标编码索引;
向所述内核态模块发送内存检查请求,所述内存检查请求包括所述目标编码索引。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
根据预设的内存分配规则将所述操作系统的内存划分成多个内存区域;
根据所述多个内存区域中每个内存区域的大小和物理内存地址,确定每个所述内存区域的编码索引;
向所述内核态模块发送第一内存划分请求,所述第一内存划分请求包括所述多个内存区域中每个所述内存区域的的物理内存地址和编码索引。
13.根据权利要求12所述的方法,其特征在于,所述根据所述多个内存区域中每个所述内存区域的物理内存地址和大小,确定每个所述内存区域对应的编码索引,包括:
针对每个所述内存区域,根据所述内存区域的大小和物理内存地址,确定所述内存区域的内存地址空间;
使用预设的编码规则,将所述内存区域的内存地址空间转换成编码索引,获得所述内存区域对应的编码索引。
14.根据权利要求11所述的方法,其特征在于,所述方法还包括:
从所述内核态模块处接收响应信息,所述响应信息用于指示在内存区域和编码索引的对应关系中未查找到所述目标编码索引对应的目标区域。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:
向所述内核态模块发送第二内存划分请求,所述第二内存划分请求包括所述目标内存区域的物理内存地址和所述目标编码索引。
16.根据权利要求14或15任一项所述的方法,其特征在于,所述内存区域和编码索引的对应关系为树形结构,所述树形结构中的每一个节点对应一个内存区域,每个内存区域对应一个编码索引。
17.根据权利要求16所述的方法,其特征在于,所述树形结构为二叉树。
18.根据权利要求14-17任一项所述的方法,其特征在于,所述编码索引为二进制字符串。
19.根据权利要求14-18任一项所述的方法,其特征在于,所述内存区域和编码索引的对应关系中还包括每个内存区域的大小以及每个内存区域的状态。
20.根据权利要求19所述的方法,其特征在于,所述内存区域的状态包括:空闲态、用户态和内核态。
21.一种内存配置装置,其特征在于,应用于操作系统中的内核态模块,所述操作系统包括用户态模块和所述内核态模块,所述装置包括:
接收单元,用于从所述用户态模块处接收内存检查请求,所述内存检查请求中包括目标编码索引,所述目标编码索引为所述用户态模块基于为应用程序所分配的内存区域的大小和物理内存地址确定的;
处理单元,用于在内存区域和编码索引的对应关系中,查找所述目标编码索引对应的目标内存区域;若所述目标内存区域的状态为空闲态,则将所述目标内存区域配置给所述应用程序。
22.根据权利要求21所述的装置,其特征在于,
所述接收单元,还用于从所述用户态模块处接收第一内存划分请求,所述第一内存划分请求包括多个内存区域中每个内存区域的物理内存地址和编码索引,每个所述内存区域的编码索引为所述用户态模块根据每个所述内存区域的大小和物理内存地址确定的;
所述处理单元,还用于根据每个所述内存区域的物理内存地址和编码索引,对所述操作系统的内存进行划分,获得所述内存区域和编码索引的对应关系。
23.根据权利要求21或22所述的装置,其特征在于,所述装置还包括:
发送单元,用于若在所述内存区域和编码索引的对应关系中,未查找到所述目标编码索引对应的目标内存区域,向所述用户态模块发送响应信息,所述响应信息用于指示未查找到所述目标区域。
24.根据权利要求23所述的装置,其特征在于,
所述接收单元,还用于从所述用户态模块处接收第二内存划分请求,所述第二内存划分请求包括所述目标内存区域的物理内存地址和所述目标编码索引;
所述处理单元,还用于根据所述目标内存区域的物理内存地址,从所述操作系统未配置状态的内存区域中划分出所述目标内存区域,并将所述目标内存区域配置给所述应用程序;并将所述目标内存区域和所述目标编码索引的对应关系,添加至所述内存区域和编码索引的对应关系中,获得新的内存区域和编码索引的对应关系。
25.根据权利要求21-24任一项所述的装置,其特征在于,所述内存区域和编码索引的对应关系为树形结构,所述树形结构中的每一个节点对应一个内存区域,每个内存区域对应一个编码索引。
26.根据权利要求25所述的装置,其特征在于,所述树形结构为二叉树。
27.根据权利要求21-26任一项所述的装置,其特征在于,所述编码索引为二进制字符串。
28.根据权利要求21-27任一项所述的装置,其特征在于,所述内存区域和编码索引的对应关系中还包括每个内存区域的大小以及每个内存区域的状态。
29.根据权利要求28所述的装置,其特征在于,所述内存区域的状态包括:空闲态、用户态和内核态。
30.根据权利要求21-29任一项所述的装置,其特征在于,所述内存检查请求还包括所述应用程序所请求的内存区域的目标状态,
所述处理单元,还用于若所述目标内存区域的状态为空闲态,则将所述目标内存区域的状态从空闲态配置为目标状态,所述目标状态包括用户态和内核态。
31.一种内存配置装置,其特征在于,应用于操作系统中的用户态模块,所述操作系统包括所述用户态模块和内核态模块,所述装置包括:
接收单元,用于从应用程序处接收内存请求,所述内存请求包括所述应用程序所请求的内存区域的大小;
处理单元,用于基于所述内存请求所请求的内存区域的大小,为所述应用程序分配内存区域,并确定分配的内存区域的物理内存地址;并基于所述分配的内存区域的大小和物理内存地址,确定所述分配的内存区域的目标编码索引;
发送单元,用于向所述内核态模块发送内存检查请求,所述内存检查请求包括所述目标编码索引。
32.根据权利要求31所述的装置,其特征在于,
所述处理单元,还用于根据预设的内存分配规则将所述操作系统的内存划分成多个内存区域;根据所述多个内存区域中每个内存区域的大小和物理内存地址,确定每个所述内存区域的编码索引;
所述发送单元,还用于向所述内核态模块发送第一内存划分请求,所述第一内存划分请求包括所述多个内存区域中每个所述内存区域的的物理内存地址和编码索引。
33.根据权利要求32所述的装置,其特征在于,
所述处理单元,具体用于针对每个所述内存区域,根据所述内存区域的大小和物理内存地址,确定所述内存区域的内存地址空间;并使用预设的编码规则,将所述内存区域的内存地址空间转换成编码索引,获得所述内存区域对应的编码索引。
34.根据权利要求31所述的装置,其特征在于,
所述接收单元,还用于从所述内核态模块处接收响应信息,所述响应信息用于指示在内存区域和编码索引的对应关系中未查找到所述目标编码索引对应的目标区域。
35.根据权利要求34所述的装置,其特征在于,
所述发送单元,还用于向所述内核态模块发送第二内存划分请求,所述第二内存划分请求包括所述目标内存区域的物理内存地址和所述目标编码索引。
36.根据权利要求34或35所述的装置,其特征在于,所述内存区域和编码索引的对应关系为树形结构,所述树形结构中的每一个节点对应一个内存区域,每个内存区域对应一个编码索引。
37.根据权利要求36所述的装置,其特征在于,所述树形结构为二叉树。
38.根据权利要求34-37任一项所述的装置,其特征在于,所述编码索引为二进制字符串。
39.根据权利要求34-38任一项所述的装置,其特征在于,所述内存区域和编码索引的对应关系中还包括每个内存区域的大小以及每个内存区域的状态。
40.根据权利要求39所述的装置,其特征在于,所述内存区域的状态包括:空闲态、用户态和内核态。
41.一种内存配置设备,其特征在于,所述内存配置设备包括处理器和存储器,所述内存配置设备上安装有操作系统,所述操作系统包括用户态模块和内核态模块,所述操作系统存储在存储器中,当所述操作系统被所述处理器运行时实现如权利要求1-20任一项所述的内存配置方法。
42.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机可读指令,当所述计算机可读指令被一个或多个处理器运行时实现如权利要求1-20任意一项所述的方法。
43.一种计算机存储介质,其特征在于,存储介质包括计算机程序,所述计算机程序在被一个或多个处理器执行时用于实现如权利要求1-20任一项所述的内存配置方法。
CN201911016113.XA 2019-10-24 2019-10-24 内存配置方法、装置及存储介质 Active CN112711546B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201911016113.XA CN112711546B (zh) 2019-10-24 2019-10-24 内存配置方法、装置及存储介质
PCT/CN2020/113394 WO2021077917A1 (zh) 2019-10-24 2020-09-04 内存配置方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911016113.XA CN112711546B (zh) 2019-10-24 2019-10-24 内存配置方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN112711546A true CN112711546A (zh) 2021-04-27
CN112711546B CN112711546B (zh) 2024-06-18

Family

ID=75541274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911016113.XA Active CN112711546B (zh) 2019-10-24 2019-10-24 内存配置方法、装置及存储介质

Country Status (2)

Country Link
CN (1) CN112711546B (zh)
WO (1) WO2021077917A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115344507A (zh) * 2021-05-14 2022-11-15 华为技术有限公司 内存分配方法、装置和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080005521A1 (en) * 2006-06-30 2008-01-03 Udayakumar Cholleti Kernel memory free algorithm
CN108062253A (zh) * 2017-12-11 2018-05-22 北京奇虎科技有限公司 一种内核态与用户态的通信方法、装置及终端
CN110109761A (zh) * 2019-05-11 2019-08-09 肖银皓 一种用户态管理操作系统内核内存方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105302765A (zh) * 2014-07-22 2016-02-03 电信科学技术研究院 一种系统级芯片及其内存访问管理方法
US11429412B2 (en) * 2016-02-25 2022-08-30 Red Hat Israel, Ltd. Guest protection from application code execution in kernel mode
CN106844041B (zh) * 2016-12-29 2020-06-16 华为技术有限公司 内存管理的方法及内存管理系统
CN108038062B (zh) * 2017-11-27 2021-05-04 北京锦鸿希电信息技术股份有限公司 嵌入式系统的内存管理方法和装置
CN108920276A (zh) * 2018-06-27 2018-11-30 郑州云海信息技术有限公司 Linux系统内存分配方法、系统及设备和存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080005521A1 (en) * 2006-06-30 2008-01-03 Udayakumar Cholleti Kernel memory free algorithm
CN108062253A (zh) * 2017-12-11 2018-05-22 北京奇虎科技有限公司 一种内核态与用户态的通信方法、装置及终端
CN110109761A (zh) * 2019-05-11 2019-08-09 肖银皓 一种用户态管理操作系统内核内存方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115344507A (zh) * 2021-05-14 2022-11-15 华为技术有限公司 内存分配方法、装置和系统
WO2022237624A1 (zh) * 2021-05-14 2022-11-17 华为技术有限公司 内存分配方法、装置和系统

Also Published As

Publication number Publication date
WO2021077917A1 (zh) 2021-04-29
CN112711546B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
CN111124664B (zh) 第一操作系统访问第二操作系统资源的方法和装置
US8832666B2 (en) Dynamic instrumentation
CN111679921B (zh) 内存共享方法、内存共享装置及终端设备
CN110659101A (zh) 提供具有基于能力的安全性的函数级隔离的技术
US9489328B2 (en) System on chip and method for accessing device on bus
US20230146364A1 (en) Process running method and apparatus
CN114064302B (zh) 一种进程间通信的方法及装置
CN113010265A (zh) Pod的调度方法、调度器、存储插件及系统
US10289853B2 (en) Secure driver platform
CN116803067A (zh) 支持多协议栈的通信方法及系统
US20170185546A1 (en) Remote Resource Access Method and Switching Device
CN112711546B (zh) 内存配置方法、装置及存储介质
CN116257472B (zh) 接口控制方法、装置、电子设备及存储介质
WO2023103992A1 (zh) 容器运行方法、装置、电子设备和存储介质
CN106682494B (zh) 一种信息访问方法、装置和设备
US9846663B2 (en) Method of controlling direct memory access of a peripheral memory of a peripheral by a master, an associated circuitry, an associated device and an associated computer program product
CN116166570A (zh) 一种垃圾回收方法及装置
US11301282B2 (en) Information protection method and apparatus
CN112217654B (zh) 服务资源许可管理方法和相关设备
CN115344507A (zh) 内存分配方法、装置和系统
CN111666579A (zh) 计算机设备及其访问控制方法和计算机可读介质
CN114721799B (zh) 数据处理方法、装置、设备及存储介质
EP4055778B1 (en) Code activation management method for network slicing solutions, and corresponding entity, server and computer program
CN116501448B (zh) 一种应用于多虚拟机的容器封装方法及装置
CN112306896B (zh) 一种垃圾回收方法及装置

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
GR01 Patent grant