CN114741208A - 电能表及其内存堆管理方法、内存堆管理装置、存储介质 - Google Patents
电能表及其内存堆管理方法、内存堆管理装置、存储介质 Download PDFInfo
- Publication number
- CN114741208A CN114741208A CN202210659133.4A CN202210659133A CN114741208A CN 114741208 A CN114741208 A CN 114741208A CN 202210659133 A CN202210659133 A CN 202210659133A CN 114741208 A CN114741208 A CN 114741208A
- Authority
- CN
- China
- Prior art keywords
- memory
- program
- memory heap
- electric energy
- management
- 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
Links
Images
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
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Power Sources (AREA)
Abstract
本发明公开了一种电能表及其内存堆管理方法、内存堆管理装置、存储介质,属于电能表内存管理技术领域,其中,基于电能表的内存堆管理方法包括:内核程序在接收到需求指令时,采用第一内存管理算法对需求程序进行重启,并回收需求程序的内存堆空间,其中,需求指令由需求程序基于第二内存管理算法对内存堆空间进行管理且确定自身运行内存空间不足时发出;内核程序基于第一内存管理算法向需求程序分配内存堆空间,其中,内存堆空间小于内核程序的总内存堆空间。由此,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
Description
技术领域
本发明涉及电能表内存管理技术领域,尤其涉及一种基于电能表的内存堆管理方法、一种计算机可读存储介质、一种电能表、一种基于电能表的内存堆管理装置和另一种电能表。
背景技术
目前,智能电能表在引入嵌入式实时操作系统的基础上,实现了软硬件的解耦分离。其中,硬件通过多芯模组化设计,使得包含不同业务应用程序的模组间相互独立,互不影响;软件部分也根据架构设计分成了业务应用程序、驱动程序、引导程序、内核程序四部分,除了引导程序以外其它程序都可以实现远程单独升级,极大地降低了研发和维护成本,提高了开发效率和硬件资源的运行效率。
但是,由于智能电能表操作系统运行的资源受限,且在运行过程中通常不允许重启,因此,需要方便灵活地使用智能电能表的内存堆(即堆内存,是区别于栈区、全局数据区和代码区的另一个内存区域),也就是说,可以在允许范围内申请任意大小的空间内存时,不产生过多的内存碎片,避免引起电能表死机。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的第一个目的在于提出一种基于电能表的内存堆管理方法,通过对相应的程序采用不同的内存堆管理算法,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
本发明的第二个目的在于提出一种计算机可读存储介质。
本发明的第三个目的在于提出一种电能表。
本发明的第四个目的在于提出一种基于电能表的内存堆管理装置。
本发明的第五个目的在于提出另一种电能表。
为达上述目的,本发明第一方面实施例提出了一种基于电能表的内存堆管理方法,包括:内核程序在接收到需求指令时,采用第一内存管理算法对需求程序进行重启,并回收需求程序的内存堆空间,其中,需求指令由需求程序基于第二内存管理算法对内存堆空间进行管理且确定自身运行内存空间不足时发出;内核程序基于第一内存管理算法向需求程序分配内存堆空间,其中,内存堆空间小于内核程序的总内存堆空间。
根据本发明实施例的基于电能表的内存堆管理方法,通过内核程序基于第一内存管理算法对需求程序分配内存堆空间,且需求程序基于第二内存堆管理算法对相应的内存堆管理,且在自身运行内存空间不足时发送需求指令,内核程序则根据需求指令,采用第一内存管理算法对需求程序进行重启,并回收需求程序的内存堆空间。由此,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
另外,根据本发明上述实施例的基于电能表的内存堆管理方法,还可以具有如下附加特征:
根据本发明的一个实施例,第一内存管理算法为小内存管理算法,第二内存管理算法为两级隔离适配内存分配器算法、slab管理算法、伙伴分配算法、最佳适应算法和首次适应算法中的任意一个。
根据本发明的一个实施例,内核程序采用小内存管理算法进行总内存堆空间管理时,基于电能表的内存堆管理方法还包括:在总内存堆剩余空间小于内核程序运行时所需内存堆空间时,内核程序自动重启,并回收且整理所有的内存堆空间。
根据本发明的一个实施例,在需求程序为驱动程序时,驱动程序采用最佳适应算法对内核程序分配的内存堆空间进行管理,并在内核程序分配的内存堆剩余空间小于驱动程序运行时所需内存堆空间时,确定自身运行内存空间不足。
根据本发明的一个实施例,在需求程序为应用程序时,应用程序采用两级隔离适配内存分配器算法对内核程序分配的内存堆空间进行管理,并在内核程序分配的内存堆剩余空间小于应用程序运行时所需内存堆空间时,确定自身运行内存空间不足。
根据本发明的一个实施例,需求程序首次启动时,基于电能表的内存堆管理方法还包括:内核程序接收到需求程序发送的启动指令时,基于第一内存管理算法对总内存堆空间进行管理,以给需求程序分配内存堆空间。
为达上述目的,本发明第二方面实施例提出了一种计算机可读存储介质,其上存储有基于电能表的内存堆管理程序,基于电能表的内存堆管理程序被处理器执行时,实现上述实施例描述的基于电能表的内存堆管理方法。
根据本发明实施例的计算机可读存储介质,存储的基于电能表的内存堆管理程序被处理器执行时,通过执行基于电能表的内存堆管理方法,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
为达上述目的,本发明第三方面实施例提出了一种电能表,该电能表包括存储器、处理器及存储在存储器上并可在处理器上运行的基于电能表的内存堆管理程序,处理器执行基于电能表的内存堆管理程序时,实现上述实施例描述的基于电能表的内存堆管理方法。
根据本发明实施例的电能表,存储的基于电能表的内存堆管理程序被处理器执行时,通过执行基于电能表的内存堆管理方法,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
为达上述目的,本发明第四方面实施例提出了一种基于电能表的内存堆管理装置,包括内核程序和需求程序,其中,内核程序,用于在接收到需求程序发送的需求指令时,采用第一内存管理算法对需求程序进行重启,并回收需求程序的内存堆空间,以及基于第一内存管理算法向需求程序分配内存堆空间,其中,内存堆空间小于内核程序的总内存堆空间;需求程序,用于基于第二内存管理算法对内存堆空间进行管理且确定自身运行内存空间不足时发送需求指令给内核程序。
根据本发明实施例的基于电能表的内存堆管理装置,通过内核程序基于第一内存管理算法对需求程序分配内存堆空间,且需求程序基于第二内存堆管理算法对相应的内存堆管理,且在自身运行内存空间不足时发送需求指令,内核程序则根据需求指令,采用第一内存管理算法对需求程序进行重启,并回收需求程序的内存堆空间。由此,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
另外,根据本发明上述实施例的基于电能表的内存堆管理装置,还可以具有如下附加特征:
根据本发明的一个实施例,第一内存管理算法为小内存管理算法,第二内存管理算法为两级隔离适配内存分配器算法、slab管理算法、伙伴分配算法、最佳适应算法和首次适应算法中的任意一个。
根据本发明的一个实施例,内核程序采用小内存管理算法进行总内存堆空间管理时,还用于在总内存堆剩余空间小于自身运行时所需内存堆空间时,自动重启,并回收且整理所有的内存堆空间。
根据本发明的一个实施例,在需求程序为驱动程序时,驱动程序采用最佳适应算法对内核程序分配的内存堆空间进行管理,并在内核程序分配的内存堆剩余空间小于自身运行时所需内存堆空间时,确定自身运行内存空间不足。
根据本发明的一个实施例,在需求程序为应用程序时,应用程序采用两级隔离适配内存分配器算法对内核程序分配的内存堆空间进行管理,并在内核程序分配的内存堆剩余空间小于自身运行时所需内存堆空间时,确定自身运行内存空间不足。
根据本发明的一个实施例,内核程序还用于,在需求程序首次启动时,如果接收到需求程序发送的启动指令,则基于第一内存管理算法对总内存堆空间进行管理,以给需求程序分配内存堆空间。
为达上述目的,本发明第五方面实施例提出了一种电能表,该电能表包括上述实施例描述的基于电能表的内存堆管理装置。
根据本发明实施例的电能表,通过上述实施例描述的基于电能表的内存堆管理装置,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1为根据本发明一个实施例的基于电能表的内存堆管理方法的流程图;
图2为根据本发明一个实施例的电能表的方框示意图;
图3为根据本发明一个实施例的基于电能表的内存堆管理装置的方框示意图;
图4为根据本发明另一个实施例的电能表的方框示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
本申请是发明人基于对以下问题的认识和研究而做出的:
一般情况下,RAM(Random Access Memory,随机存取存储器)主要分为四段,分别是代码段(.text)、数据段(.data)、.bss(Block Started by Symbol,符号启动块)段、堆(heap)及栈(stack)。其中,代码段是可执行指令的集合;数据段表示已经初始化不为0的存放在静态区的数据(全局或者静态);.bss段表示未初始化的或为0的存放在静态区的数据(全局或者静态);堆表示用来保存函数内部动态分配的内存,是用来保存程序信息的数据结构;栈表示用来保存函数的局部变量、参数以及返回值。
基于嵌入式操作系统的电能表其软件架构分为了应用层、系统层、驱动层及启动层,对应的程序分别为业务应用程序、内核程序、驱动程序和引导程序四部分。其中,应用程序、内核程序和驱动程序涉及动态内存管理,因此,这三部分程序对内存的使用主要集中于堆。
针对电能表的特殊应用场景,其架构设计决定了整个内存空间会被多个软件程序同时应用,若某个程序的运行空间不足,将会导致整个电能表的死机,影响用户体验。由此,本申请提出了一种基于电能表的内存堆管理方法,能够方便灵活地使用智能电能表的内存堆,不产生过多的内存碎片,避免引起电能表死机。
图1为根据本发明一个实施例的基于电能表的内存堆管理方法的流程图。参考图1所示,该基于电能表的内存堆管理方法包括以下步骤:
步骤S1,内核程序在接收到需求指令时,采用第一内存管理算法对需求程序进行重启,并回收需求程序的内存堆空间,其中,需求指令由需求程序基于第二内存管理算法对内存堆空间进行管理且确定自身运行内存空间不足时发出。
步骤S2,内核程序基于第一内存管理算法向需求程序分配内存堆空间,其中,内存堆空间小于内核程序的总内存堆空间。
举例说明,需求程序可以基于最佳适应算法(第一内存管理算法)对相应的内存堆空间(电能表启动后,内核程序最初分配给需求程序的内存堆空间)进行管理,若相应的内存堆空间的第一个空闲内存分区不能满足运行空间需求,则确定自身运行内存空间不足,并发送需求指令至内核程序,内核程序根据接收到的需求指令,采用小内存管理算法对需求程序进行重启,再次向需求程序分配内存堆空间,以避免电能表死机。
需要说明的是,第一内存管理算法为小内存管理算法,第二内存管理算法为两级隔离适配内存分配器算法、slab管理算法、伙伴分配算法、最佳适应算法和首次适应算法中的任意一个。
可选地,在本发明的一些实施例中,内核程序采用小内存管理算法进行总内存堆空间管理时,基于电能表的内存堆管理方法还包括:在总内存堆剩余空间小于内核程序运行时所需内存堆空间时,内核程序自动重启,并回收且整理所有的内存堆空间。
具体地,内核程序采用小内存管理算法进行总内存堆空间管理时,若从链表头开始遍历整个总内存堆空间,确定总内存堆剩余空间小于内核程序运行时所需内存堆空间时,内核程序自动重启,并回收且整理所有的内存堆空间,以避免电能表死机。
在本发明的一些实施例中,需求程序可以是驱动程序或者应用程序。
在需求程序为驱动程序时,驱动程序采用最佳适应算法对内核程序分配的内存堆空间进行管理,并在内核程序分配的内存堆剩余空间小于驱动程序运行时所需内存堆空间时,确定自身运行内存空间不足。
具体地,驱动程序采用最佳适应算法对内核程序分配的内存堆空间中的空闲区按照从大到小的顺序排序,形成一个递增顺序的空白链。由此,驱动程序在进行内存分配时,可直接分配第一个空闲区,若第一个空闲区小于驱动程序运行时所需内存堆空间时,则确定自身运行内存空间不足。
需要说明的是,由于第一个空闲区、第二个空闲区、……、第N个空闲区的大小是由大到小排列的,因此,第一个空闲区小于驱动程序运行时所需内存堆空间时,第二个空闲区、……、第N个空闲区的大小均小于驱动程序运行时所需内存堆空间,也就是说内核程序分配的内存堆剩余空间小于驱动程序运行所需内存堆空间。
在本示例中,在需求程序为驱动程序时,通过最佳适应算法对内核程序分配的内存堆剩余空间进行管理,可以减少内存碎片,从而保留最大空闲区。
在需求程序为应用程序时,应用程序采用两级隔离适配内存分配器算法对内核程序分配的内存堆空间进行管理,并在内核程序分配的内存堆剩余空间小于应用程序运行时所需内存堆空间时,确定自身运行内存空间不足。
具体地,应用程序通过两级隔离适配内存分配器算法建立两级链表,并且每级链表包含特定长度范围的空闲区,以及每级链表都有一个位图以标记对应的链表中是否存在内存块。若遍历两级链表均未找到应用程序运行时所需内存堆空间,则确定内核程序分配的内存堆剩余空间小于应用程序运行时所需内存堆空间,即应用程序自身运行内存空间不足。
综上所述,根据本发明实施例的基于电能表的内存堆管理方法,通过内核程序基于第一内存管理算法对需求程序分配内存堆空间,且需求程序基于第二内存堆管理算法对相应的内存堆管理,且在自身运行内存空间不足时发送需求指令,内核程序则根据需求指令,采用第一内存管理算法对需求程序进行重启,并回收需求程序的内存堆空间。由此,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
在本发明的一个具体实施例中,基于电能表的内存堆管理方法包括:
电能表上电后,引导程序将内核程序、驱动程序、应用程序放置于固定的外部存储空间,内核程序、驱动程序、应用程序分别启动且动态使用RAM的总内存堆空间A。
其中,驱动程序在启动时向内核程序申请固定大小的内存堆空间B,内核程序基于小内存管理算法向驱动程序分配内存堆空间B。驱动程序采用最佳适应算法管理内存堆空间B,若内存堆空间B的剩余空间小于自身的运行空间时,内核程序采用小内存管理算法对驱动程序进行重启,并回收内存堆空间B,以及重新分配内存堆空间B至驱动程序。
应用程序(包括应用程序1、应用程序2、……应用程序n)在启动时向内核程序申请固定大小的内存堆空间C(包括内存堆空间C1、内存堆空间C2、……内存堆空间Cm)。应用程序采用两级隔离适配内存分配器算法对内存堆空间C进行管理,若内存堆空间C的剩余空间小于自身的运行空间时,内核程序采用小内存管理算法对应用程序进行重启,并回收内存堆空间C以及重新分配内存堆空间C至应用程序。
在内核程序采用小内存管理算法对总内存堆空间A进行管理时,若总内存堆空间A的剩余内存空间小于自身的运行空间,内核程序则自动重启,并回收整理所有的内存堆空间。
可以理解的是,内存堆空间B和内存堆空间C均小于总内存堆空间A。
因此,根据本发明实施例的基于电能表的内存堆管理方法,通过内核程序基于第一内存管理算法对需求程序分配内存堆空间,且需求程序基于第二内存堆管理算法对相应的内存堆管理,且在自身运行内存空间不足时发送需求指令,内核程序则根据需求指令,采用第一内存管理算法对需求程序进行重启,并回收需求程序的内存堆空间。由此,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
对应上述实施例,本发明的实施例还提供了一种计算机可读存储介质,其上存储有基于电能表的内存堆管理程序,基于电能表的内存堆管理程序被处理器执行时,实现上述实施例描述的基于电能表的内存堆管理方法。
根据本发明实施例的计算机可读存储介质,存储的基于电能表的内存堆管理程序被处理器执行时,通过执行基于电能表的内存堆管理方法,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
如图2所示,本发明的实施例还提供了一种电能表。该电能表200包括存储器210、处理器220及存储在存储器210上并可在处理器220上运行的基于电能表的内存堆管理程序,处理器220执行基于电能表的内存堆管理程序时,实现上述的基于电能表的内存堆管理方法。
根据本发明实施例的电能表,存储的基于电能表的内存堆管理程序被处理器执行时,通过执行基于电能表的内存堆管理方法,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
如图3所示,本发明的实施例还提供了一种基于电能表的内存堆管理装置300,包括内核程序310和需求程序320,其中,内核程序310用于在接收到需求程序320发送的需求指令时,采用第一内存管理算法对需求程序320进行重启,并回收需求程序320的内存堆空间,以及基于第一内存管理算法向需求程序320分配内存堆空间,其中,内存堆空间小于内核程序310的总内存堆空间;需求程序320用于基于第二内存管理算法对内存堆空间进行管理且确定自身运行内存空间不足时发送需求指令给内核程序310。
在本发明的一些实施例中,第一内存管理算法为小内存管理算法,第二内存管理算法为两级隔离适配内存分配器算法、slab管理算法、伙伴分配算法、最佳适应算法和首次适应算法中的任意一个。
在本发明的一些实施例中,内核程序310采用小内存管理算法进行总内存堆空间管理时,还用于在总内存堆剩余空间小于自身运行时所需内存堆空间时,自动重启,并回收且整理所有的内存堆空间。
在本发明的一些实施例中,在需求程序320为驱动程序时,驱动程序采用最佳适应算法对内核程序310分配的内存堆空间进行管理,并在内核程序310分配的内存堆剩余空间小于自身运行时所需内存堆空间时,确定自身运行内存空间不足。
在本发明的一些实施例中,在需求程序320为应用程序时,应用程序采用两级隔离适配内存分配器算法对内核程序310分配的内存堆空间进行管理,并在内核程序310分配的内存堆剩余空间小于自身运行时所需内存堆空间时,确定自身运行内存空间不足。
在本发明的一些实施例中,内核程序310还用于,在需求程序320首次启动时,如果接收到需求程序320发送的启动指令,则基于第一内存管理算法对总内存堆空间进行管理,以给需求程序320分配内存堆空间。
需要说明的是,关于基于电能表的内存堆管理装置的描述,请参考前述关于基于电能表的内存堆管理方法的描述,在此不再赘述。
根据本发明实施例的基于电能表的内存堆管理装置,通过内核程序基于第一内存管理算法对需求程序分配内存堆空间,且需求程序基于第二内存堆管理算法对相应的内存堆管理,且在自身运行内存空间不足时发送需求指令,内核程序则根据需求指令,采用第一内存管理算法对需求程序进行重启,并回收需求程序的内存堆空间。由此,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
如图4所示,本发明的实施例还提供了另一种电能表。该电能表400包括上述实施例描述的基于电能表的内存堆管理装置300。
根据本发明实施例的电能表,通过上述实施例描述的基于电能表的内存堆管理装置,能够针对电能表特殊的应用场景(通常不允许重启),方便灵活地使用电能表的内存堆,避免产生过多的内存堆碎片,导致电能表死机。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
此外,本发明实施例中所使用的“第一”、“第二”等术语,仅用于描述目的,而不可以理解为指示或者暗示相对重要性,或者隐含指明本实施例中所指示的技术特征数量。由此,本发明实施例中限定有“第一”、“第二”等术语的特征,可以明确或者隐含地表示该实施例中包括至少一个该特征。在本发明的描述中,词语“多个”的含义是至少两个或者两个及以上,例如两个、三个、四个等,除非实施例中另有明确具体的限定。
在本发明中,除非实施例中另有明确的相关规定或者限定,否则实施例中出现的术语“安装”、“相连”、“连接”和“固定”等应做广义理解,例如,连接可以是固定连接,也可以是可拆卸连接,或成一体,可以理解的,也可以是机械连接、电连接等;当然,还可以是直接相连,或者通过中间媒介进行间接连接,或者可以是两个元件内部的连通,或者两个元件的相互作用关系。对于本领域的普通技术人员而言,能够根据具体的实施情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
需要指出的是,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (15)
1.一种基于电能表的内存堆管理方法,其特征在于,包括:
内核程序在接收到需求指令时,采用第一内存管理算法对需求程序进行重启,并回收所述需求程序的内存堆空间,其中,所述需求指令由所述需求程序基于第二内存管理算法对所述内存堆空间进行管理且确定自身运行内存空间不足时发出;
所述内核程序基于所述第一内存管理算法向所述需求程序分配所述内存堆空间,其中,所述内存堆空间小于所述内核程序的总内存堆空间。
2.根据权利要求1所述的基于电能表的内存堆管理方法,其特征在于,所述第一内存管理算法为小内存管理算法,所述第二内存管理算法为两级隔离适配内存分配器算法、slab管理算法、伙伴分配算法、最佳适应算法和首次适应算法中的任意一个。
3.根据权利要求2所述的基于电能表的内存堆管理方法,其特征在于,所述内核程序采用所述小内存管理算法进行总内存堆空间管理时,所述方法还包括:
在总内存堆剩余空间小于所述内核程序运行时所需内存堆空间时,所述内核程序自动重启,并回收且整理所有的内存堆空间。
4.根据权利要求2所述的基于电能表的内存堆管理方法,其特征在于,在所述需求程序为驱动程序时,所述驱动程序采用所述最佳适应算法对所述内核程序分配的内存堆空间进行管理,并在所述内核程序分配的内存堆剩余空间小于所述驱动程序运行时所需内存堆空间时,确定自身运行内存空间不足。
5.根据权利要求2所述的基于电能表的内存堆管理方法,其特征在于,在所述需求程序为应用程序时,所述应用程序采用所述两级隔离适配内存分配器算法对所述内核程序分配的内存堆空间进行管理,并在所述内核程序分配的内存堆剩余空间小于所述应用程序运行时所需内存堆空间时,确定自身运行内存空间不足。
6.根据权利要求1-5中任一项所述的基于电能表的内存堆管理方法,其特征在于,所述需求程序首次启动时,所述方法还包括:
所述内核程序接收到所述需求程序发送的启动指令时,基于所述第一内存管理算法对所述总内存堆空间进行管理,以给所述需求程序分配所述内存堆空间。
7.一种计算机可读存储介质,其特征在于,其上存储电能表的内存堆管理程序,该电能表的内存堆管理程序被处理器执行时实现如权利要求1-6中任一项所述的电能表的内存堆管理方法。
8.一种电能表,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的电能表的内存堆管理程序,所述处理器执行所述电能表的内存堆管理程序时,实现如权利要求1-6中任一项所述的电能表的内存堆管理方法。
9.一种基于电能表的内存堆管理装置,其特征在于,包括内核程序和需求程序,其中,
所述内核程序,用于在接收到所述需求程序发送的需求指令时,采用第一内存管理算法对所述需求程序进行重启,并回收所述需求程序的内存堆空间,以及基于所述第一内存管理算法向所述需求程序分配所述内存堆空间,其中,所述内存堆空间小于所述内核程序的总内存堆空间;
所述需求程序,用于基于第二内存管理算法对所述内存堆空间进行管理且确定自身运行内存空间不足时发送所述需求指令给所述内核程序。
10.根据权利要求9所述的基于电能表的内存堆管理装置,其特征在于,所述第一内存管理算法为小内存管理算法,所述第二内存管理算法为两级隔离适配内存分配器算法、slab管理算法、伙伴分配算法、最佳适应算法和首次适应算法中的任意一个。
11.根据权利要求10所述的基于电能表的内存堆管理装置,其特征在于,所述内核程序采用所述小内存管理算法进行总内存堆空间管理时,还用于在总内存堆剩余空间小于自身运行时所需内存堆空间时,自动重启,并回收且整理所有的内存堆空间。
12.根据权利要求10所述的基于电能表的内存堆管理装置,其特征在于,在所述需求程序为驱动程序时,所述驱动程序采用所述最佳适应算法对所述内核程序分配的内存堆空间进行管理,并在所述内核程序分配的内存堆剩余空间小于自身运行时所需内存堆空间时,确定自身运行内存空间不足。
13.根据权利要求10所述的基于电能表的内存堆管理装置,其特征在于,在所述需求程序为应用程序时,所述应用程序采用所述两级隔离适配内存分配器算法对所述内核程序分配的内存堆空间进行管理,并在所述内核程序分配的内存堆剩余空间小于自身运行时所需内存堆空间时,确定自身运行内存空间不足。
14.根据权利要求10所述的基于电能表的内存堆管理装置,其特征在于,所述内核程序还用于,在所述需求程序首次启动时,如果接收到所述需求程序发送的启动指令,则基于所述第一内存管理算法对所述总内存堆空间进行管理,以给所述需求程序分配所述内存堆空间。
15.一种电能表,其特征在于,包括根据权利要求9-14中任一项所述的基于电能表的内存堆管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210659133.4A CN114741208B (zh) | 2022-06-13 | 2022-06-13 | 电能表及其内存堆管理方法、内存堆管理装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210659133.4A CN114741208B (zh) | 2022-06-13 | 2022-06-13 | 电能表及其内存堆管理方法、内存堆管理装置、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114741208A true CN114741208A (zh) | 2022-07-12 |
CN114741208B CN114741208B (zh) | 2022-09-23 |
Family
ID=82287429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210659133.4A Active CN114741208B (zh) | 2022-06-13 | 2022-06-13 | 电能表及其内存堆管理方法、内存堆管理装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114741208B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117274A (zh) * | 2018-08-28 | 2019-01-01 | Oppo广东移动通信有限公司 | 应用于浏览器的内存管理方法、装置、终端及存储介质 |
US10204011B1 (en) * | 2016-06-30 | 2019-02-12 | EMC IP Holding Company LLC | Techniques for partially restarting a computing device in response to a configuration change |
CN109815162A (zh) * | 2019-01-28 | 2019-05-28 | Oppo广东移动通信有限公司 | 内存管理方法、装置、移动终端及存储介质 |
CN111984401A (zh) * | 2020-07-24 | 2020-11-24 | 五八有限公司 | 一种内存溢出管理方法、装置、电子设备及存储介质 |
CN112363828A (zh) * | 2020-10-30 | 2021-02-12 | 北京罗克维尔斯科技有限公司 | 内存碎片管理方法、装置、车载系统及车辆 |
-
2022
- 2022-06-13 CN CN202210659133.4A patent/CN114741208B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10204011B1 (en) * | 2016-06-30 | 2019-02-12 | EMC IP Holding Company LLC | Techniques for partially restarting a computing device in response to a configuration change |
CN109117274A (zh) * | 2018-08-28 | 2019-01-01 | Oppo广东移动通信有限公司 | 应用于浏览器的内存管理方法、装置、终端及存储介质 |
CN109815162A (zh) * | 2019-01-28 | 2019-05-28 | Oppo广东移动通信有限公司 | 内存管理方法、装置、移动终端及存储介质 |
CN111984401A (zh) * | 2020-07-24 | 2020-11-24 | 五八有限公司 | 一种内存溢出管理方法、装置、电子设备及存储介质 |
CN112363828A (zh) * | 2020-10-30 | 2021-02-12 | 北京罗克维尔斯科技有限公司 | 内存碎片管理方法、装置、车载系统及车辆 |
Non-Patent Citations (1)
Title |
---|
ZPPSKY16: "RT-Thread快速入门-动态内存堆管理", 《CSDN: HTTPS://BLOG.CSDN.NET/ZPPSKY_123/ARTICLE/DETAILS/123742790》 * |
Also Published As
Publication number | Publication date |
---|---|
CN114741208B (zh) | 2022-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2921963B1 (en) | Memory recycling method and device | |
CN100470506C (zh) | 基于sector访问的flash存储器的存储管理方法 | |
CN101266575B (zh) | 一种提高内存池利用率的方法 | |
US6643753B2 (en) | Methods and systems for managing heap creation and allocation | |
US20070294501A1 (en) | Cooperative memory management | |
US20070088666A1 (en) | File recording apparatus | |
US20050071597A1 (en) | Method and apparatus for executing dynamic memory management with object-oriented program | |
CN102609218B (zh) | 并行闪存转换层方法与系统 | |
KR20010082032A (ko) | 영구적이고 확실한 저장 할당을 위한 시스템 및 방법 | |
CN109324893B (zh) | 分配内存的方法和装置 | |
CN1705936A (zh) | 用于分割一逻辑块的方法及设备 | |
KR20010082033A (ko) | 영구적이고 확실한 저장 할당을 위한 시스템 및 방법 | |
CN1647038A (zh) | 软件分发方法与系统 | |
CN104699625A (zh) | 用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法 | |
CN102855193A (zh) | 非易失性存储系统中未使用的逻辑地址的挂载时去映射 | |
WO2008006674A1 (en) | Reserve pool management in virtualized storage systems | |
US20070203959A1 (en) | Apparatus and method for managing resources using virtual ID in multiple Java application environment | |
CN104850505A (zh) | 基于链式堆叠的内存管理方法与系统 | |
CN111638953B (zh) | 一种实现gpu虚拟化的方法、装置和存储介质 | |
CN116521576B (zh) | Eda软件数据处理系统 | |
CN109976898B (zh) | 分层任务系统的SPI与Eeprom异步通讯方法 | |
CN114741208B (zh) | 电能表及其内存堆管理方法、内存堆管理装置、存储介质 | |
US20060236065A1 (en) | Method and system for variable dynamic memory management | |
CN111522659B (zh) | 一种空间使用方法和装置 | |
CN104182352A (zh) | 用于访问4gb以上物理内存地址空间的方法及装置 |
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 | ||
GR01 | Patent grant |