CN110069336A - 内存资源分配方法、分配装置、芯片和存储装置 - Google Patents

内存资源分配方法、分配装置、芯片和存储装置 Download PDF

Info

Publication number
CN110069336A
CN110069336A CN201810061285.8A CN201810061285A CN110069336A CN 110069336 A CN110069336 A CN 110069336A CN 201810061285 A CN201810061285 A CN 201810061285A CN 110069336 A CN110069336 A CN 110069336A
Authority
CN
China
Prior art keywords
memory
main system
reserved
subsystem
reserved memory
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
Application number
CN201810061285.8A
Other languages
English (en)
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.)
Hefei Jie Fa Technology Co Ltd
Original Assignee
Hefei Jie Fa Technology 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 Hefei Jie Fa Technology Co Ltd filed Critical Hefei Jie Fa Technology Co Ltd
Priority to CN201810061285.8A priority Critical patent/CN110069336A/zh
Priority to US16/198,899 priority patent/US20190227918A1/en
Publication of CN110069336A publication Critical patent/CN110069336A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • G06F12/1425Protection 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 the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection 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 the protection being physical, e.g. cell, word, block for a range
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

本发明实施例公开了一种内存资源分配方法、分配装置、芯片和存储装置,该方法包括:将内存资源至少划分为主系统内存和预留内存,其中,所述预留内存为预留给子系统的内存资源;获取所述子系统的任务结束信息或任务未执行信息;以及响应所述任务结束信息或任务未执行信息,更新所述预留内存为主系统可用。本发明通过在获取子系统任务结束信息或任务未执行信息后,将预留内存更新为主系统可用,从而实现预留内存的回收以供主系统使用。因此,本发明可以提高内存资源的利用率,减少浪费。

Description

内存资源分配方法、分配装置、芯片和存储装置
技术领域
本发明实施例涉及计算机技术领域,特别是涉及一种内存资源分配方法、分配装置、芯片和存储装置。
背景技术
通常,操作系统的启动需要一定时间。而在操作系统启动完成之前,一些子系统便需要预先启动以响应一些实时任务,而这些子系统需要耗费一定的内存资源来完成任务。为了向子系统提供运行必须的内存资源,可以在逻辑上将物理内存分为至少两部分,一部分提供给主系统(即操作系统)使用,另外一部分预留给子系统使用。
本发明的发明人在对现有技术的实践过程中发现,预留的内存在相应的系统任务或进程结束后处于空闲状态,无法回收以供主系统利用,主系统无法管理这部分内存,造成了内存资源的浪费。
发明内容
本发明实施例提供一种内存资源分配方法、芯片和存储装置,以解决预留内存无法回收以供主系统利用的问题。
为解决上述问题,本发明采用的一个技术方案是提供一种内存资源管理方法,该方法包括:将内存资源至少划分为主系统内存和预留内存,其中,预留内存为预留给子系统的内存资源;获取子系统的任务结束信息或任务未执行信息;以及响应任务结束信息或任务未执行信息,更新预留内存为主系统可用。
为解决上述问题,本发明采用的一个技术方案是提供一种内存资源分配装置,该装置包括:控制模块、主系统内存管理模块、辅助内存管理模块和子系统驱动模块,其中:控制模块通过主系统内存管理模块和辅助内存管理模块将内存资源至少划分为主系统内存和预留内存,其中,预留内存为预留给子系统的内存资源;子系统驱动模块用于获取子系统的任务结束信息或任务未执行信息;主系统内存管理模块在控制模块的控制下,响应任务结束信息或任务未执行信息,更新预留内存为主系统可用。
为解决上述问题,本发明采用的另一个技术方案是提供一种芯片,该芯片包括处理器,所述处理器可加载程序指令以执行上述内存资源分配方法。
为解决上述问题,本发明采用的又一个技术方案是提供一种存储装置,存储有程序指令,当所述程序指令被执行时可实现上述内存资源分配方法。
本发明实施例的有益效果是:通过在获取子系统任务结束信息或任务未执行信息后,将预留内存更新为主系统可用,从而实现预留内存的回收以供主系统使用。因此,本发明可以提高内存资源的利用率,减少浪费。
附图说明
图1是本发明内存资源分配方法一实施例的流程示意图。
图2是本发明内存资源回收方法一实施例的流程示意图。
图3示出了将预留内存信息录入主系统内存管理器的过程的一实施例。
图4是本发明内存资源重分配方法一实施例的流程示意图。
图5示出了在将预留内存设置为主系统可用的步骤中,主系统内存管理器和辅助内存管理器中的数据结构变化示意图。
图6是本发明内存资源分配装置一实施例的结构示意图。
图7是本发明芯片一实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1是本发明内存资源分配方法一实施例的流程示意图,该内存资源分配方法应用在嵌入式车载娱乐系统中,包括以下步骤:
S101:将内存资源至少划分为主系统内存和预留内存,其中,预留内存为预留给子系统的内存资源。在本实施例中,主系统为车载娱乐系统的主操作系统,用来管理应用程序与系统资源;子系统通过单独的处理器运行,用于执行实时任务,如倒车视频的显示。
在步骤S101中,系统上电后,首先通过配置读取真实物理地址的大小,将内存资源至少划分为主系统内存和预留内存,预留内存可以是预留给子系统执行任务时使用的内存资源。本领域的技术人员可以理解,在一些实施例中,除主系统内存和预留内存外,内存资源还可以包括一部分不可修改或调用的静态内存。预留内存可以是一段连续的物理内存或者多段物理内存,预留内存可以有多个,当存在多个子系统时,每个子系统分别对应不同的预留内存。根据内存数据结构和系统设置,可以相应地使用一个或多个内存资源管理器来划分内存资源,或者,也可以通过直接修改内存资源的属性来进行划分。在得到预留内存之后,子系统便可以调用预留内存以执行任务。
S102:获取子系统的任务结束信息或任务未执行信息。
子系统可以是根据主系统的指令而动作的系统,也可以独立于主系统工作。例如,对于车载娱乐系统,倒车辅助系统可以作为它的一个子系统。倒车辅助系统可以独立于车载娱乐系统工作,这样,在汽车启动时,可以快速的启动倒车辅助系统以辅助完成倒车操作,而不用等待车载娱乐系统全部启动完成。在步骤S102中,子系统执行的任务完成后会向主系统(即车载娱乐系统)发送任务结束信息,主系统获取该任务结束信息,子系统任务结束意味着子系统占用的预留内存变为空闲状态。在一些实施例中,主系统和子系统可分别由不同的硬件设备执行,在这种情况下,可以通过在执行主系统和子系统的硬件之间传递电信号来进行通信。例如,对于两个共享相同内存的处理器,执行子系统的处理器可以将其中断信号作为子系统任务结束的信号,并经由它们之间的中断控制器以传递该中断信号,从而通知执行主系统的处理器。在另一些实施例中,主系统和子系统之间也可以通过传递程序指令进行通信,在此不做限定。
在另一些情况下,系统上电后子系统并未执行相应的任务,例如,汽车启动后未进行倒车操作,则倒车辅助系统并未执行相应的任务,此时,主系统可以对子系统进行检测,或者子系统可在主系统启动后向主系统进行汇报,从而使主系统获取子系统的任务未执行信息。类似地,子系统任务未执行也意味着子系统占用的预留内存处于空闲状态。因此,主系统在获取子系统任务结束信息或任务未执行信息后,可以开始对这部分预留内存进行回收。
S103:响应子系统的任务结束信息或任务未执行信息,更新预留内存为主系统可用。
获取子系统的任务结束信息或任务未执行信息之后,在步骤S103中,主系统响应该信息,将预留内存更新为主系统可用。与步骤S101中划分系统资源的步骤对应,也可以通过使用内存资源管理器或者直接修改预留内存的属性来更新预留内存。预留内存变为主系统可用后,主系统在执行任务时就可以访问预留内存,例如对预留内存中的内容进行读写。这样一来,这部分预留给子系统使用的内存资源在子系统任务结束后,或者在子系统无需执行任务时,就可以被回收,以同其他主系统内存一起供主系统使用。
本发明通过在获取子系统任务结束信息或任务未执行信息后,将预留内存更新为主系统可用,从而实现预留内存的回收以供主系统使用。因此,本发明可以提高内存资源的利用率,减少浪费。
请参阅图2,图2是本发明内存资源回收方法一实施例的流程示意图,包括以下步骤:
S201:系统启动。
在本实施例中,系统可包括主系统以及一个或多个子系统。子系统可以独立于主系统工作,或者响应主系统的指令工作。系统上电后,主系统和子系统均开始启动,可以理解,主系统和子系统的启动时间不必完全相同。
S202:将预留内存的属性设置为主系统不可用。
在一些实施例中,可以修改内存的属性以定义内存资源。因此,在步骤S202中将预留内存设置为主系统不可用,可以理解,将预留内存设置为主系统不可用的操作可根据具体的内存管理方法和相应的数据结构而定。这样一来,该预留内存就无法被主系统访问和使用,而仅能供子系统访问和使用。
在一些实施例中,内存管理可以采用页式内存管理模式,以页(page)和页帧(frame)作为划分虚拟内存和物理内存的最小单位。对于使用这种内存管理模式的系统,例如Linux系统内核,内核在运行时可对每页内存或者包含多个页的内存块进行定义并存储在内核的配置文件中,存储的信息可包括其地址、大小、存储权限等。这样,通过将预留内存的页信息中的存储权限修改为主系统不可用,就可以使该预留内存被预留并仅供子系统使用。
S203:建立辅助内存管理器,在辅助内存管理器中录入预留内存信息。
主系统启动通常需要一段时间,在这段时间内,一些子系统或者进程可能已经运行以响应一些实时任务。这些子系统或者进程同样需要耗费一定的内存资源来完成任务。这种情况下,可以使用辅助内存管理器来对这部分内存进行管理。辅助内存管理器中可存储有除主系统内存外的其他内存资源的信息,例如静态内存信息和/或预留内存信息,在一些实施例中,辅助内存管理器中也可以存储主系统内存的信息,例如动态内存信息,此时可作为整体内存的早期管理器来使用。在步骤S203中,主系统建立辅助内存管理器并在辅助内存管理器中录入预留内存信息,从而在后续步骤中,对预留内存资源进行管理。在本实施例中,辅助内存管理器可在主系统启动过程中建立,或者优先于主系统建立。在其他实施例中,辅助内存管理器也可在主系统启动完成后建立,具体设置根据子系统的设置而定。辅助内存管理器的一个例子是memblock内核早期内存分配器,memblock内核早期内存分配器中可以至少包括动态内存(即主系统内存)和预留内存的集合(链表或数组),通过将一段内存加入预留内存的集合即可将其录入memblock。可以理解,辅助内存管理器还可以是其他具有类似功能的内存管理器。
在辅助内存管理器中录入的预留内存信息,可以包括预留内存的标识、类型、地址(物理地址、逻辑地址或它们二者)、大小等信息。这样一来,通过辅助内存管理器就可以获取预留内存的相关信息,从而在需要时对预留内存进行访问。可选地,采用页式内存管理时,辅助内存管理器还可以调用内部或外部的页表(page table),从而实现内存虚拟地址到物理地址的转换。
S204:建立主系统内存管理器,用于存储主系统内存信息集合。
在步骤S204中,建立主系统内存管理器。主系统内存管理器用于存储主系统内存信息集合,即所有可供主系统使用的内存(例如动态内存)的信息,主系统内存管理器允许主系统对所有可供其使用的内存进行管理。在运行时,主系统可调用主系统内存管理器中记录的内存资源来执行任务。主系统内存管理器的一个例子是buddy memory allocation(伙伴内存分配器),可以理解,主系统内存管理器也可以是其他用于管理主系统内存资源或者动态内存资源的管理器或数据结构。
由于预留内存已被设置为主系统不可用,因此主系统内存管理器不会将这部分内存纳入管理。在主系统内存管理器建立完成后,主系统的实际可用内存大小等于总内存大小减去预留内存大小。类似地,采用页式内存管理时,主系统内存管理器还可以调用内部或外部的页表(page table),从而实现内存虚拟地址到物理地址的转换。
可以理解,步骤S202中对内存的定义可以先于辅助内存管理器和主系统内存管理器完成,并存储特定的数据结构中,例如内核的配置文件。在此情况下,辅助内存管理器和主系统内存管理器可以通过对该数据结构进行访问,从而分别获取预留内存和主系统内存的相关信息。而在另一些实施例中,对内存的定义可以在建立辅助内存管理器或者主系统内存管理器的同时进行,即包含在相应内存管理器的数据结构中。
S205:主系统启动完成。
主系统启动完成后,可以使用相应的主系统内存以执行任务。主系统不会使用到预留内存,因此,预留内存可以被子系统安全地使用。可以理解,在主系统启动完成后,子系统仍然可以独立执行任务,或者,主系统也可以对子系统发出指令,控制子系统执行任务。
S206:加载子系统的驱动程序,子系统的驱动程序用于使主系统与子系统通信。
在一些实施例中,主系统需要加载子系统的驱动程序才可以同子系统建立通信以传递控制命令或者通知消息。例如,当子系统是外接设备的嵌入式系统时,主系统需要加载外接设备的驱动程序,从而对外接设备进行识别。或者,当子系统与主系统同为同一设备的嵌入式系统时,驱动程序也可以是主系统内调用子系统的函数或者命令。因此,在步骤S206中,主系统可加载子系统的驱动程序,为后续接收子系统发出的任务结束消息或者任务开始消息做准备。
S207:子系统启动完成。
在主系统启动的过程中,子系统也进行启动。对于一些执行快速任务的子系统,其启动速度可以快于主系统,因此这些子系统可早于主系统完成启动。
S208:使用预留内存作为内存资源来执行任务。
在子系统启动完成后,子系统可通过辅助内存管理器,调用已定义为主系统不可用的预留内存作为内存资源来执行任务。因为预留内存已被预留,所以在主系统启动后也无法再访问这部分内存资源,因此内存资源在使用过程中不会产生冲突,从而保证子系统的正常工作。
S209:任务结束,通知主系统。
在步骤S209中,子系统任务在结束后,将任务结束信息通知主系统。在一些实施例中,子系统仅在主系统启动过程中工作,则该任务结束信息表示子系统已完成全部任务,不再工作。在另一些实施例中,子系统间歇性工作,则该任务结束信息表示子系统已完成当前任务,将转为待机状态等待下一次任务。显然,在这两种情况下,子系统在任务结束后的一段时间内均不会工作,此时预留内存处于空闲状态,因此可以由主系统回收。本领域的技术人员可以理解,子系统可以使用具有适当的数据格式的控制指令或者通知消息,来对主系统进行通知,在此不做限定。
S210:接收子系统的任务结束信息。
相应地,主系统接收子系统发出的任务结束信息,此时,主系统获知子系统的任务已结束,开始对预留内存进行回收。
S211:响应子系统任务结束信息,在辅助内存管理器中删除预留内存信息,在主系统内存管理器中录入预留内存信息,并将预留内存设置为主系统可用。
在步骤S211中,在获取到子系统任务结束信息后,主系统响应该信息,在辅助内存管理器中删除相应的预留内存信息,另外,在主系统内存管理器中录入该预留内存的信息,并将预留内存设置为主系统可用。通过这样的操作,就使该预留内存的状态由“子系统可用、主系统不可用”切换为“主系统可用、子系统不可用”。在后续的操作中,主系统就可以通过主系统内存管理器调用该部分内存,从而实现预留内存的回收,而子系统则无法访问该部分内存,避免了内存使用冲突。
例如,如图5所示,可以将该预留内存由辅助内存管理器中包括多个内存块的预留内存链表中删除,并增加到主系统内存管理器的主系统可用内存链表中。可选地,可以将该预留内存添加到主系统内存管理器的空闲内存链表中,从而不会影响内存的正常使用。
在一些实施例中,可以将“录入预留内存信息”的操作进行记录,以对该回收后的预留内存进行标记。可以理解,此操作可以由主系统、子系统或者它们二者执行。可以在子系统通知主系统任务完成时执行,也可以在预留内存回收完成后执行。
S212:重新计算主系统内存管理器的管理信息。
在一些实施例中,还需要重新计算主系统内存管理器的管理信息,以方便对主系统内存信息的集合进行管理。管理信息包括但不限于:内存大小、地址范围、控制参数或者报警阈值等。在预留内存回收后,通过重新计算主系统内存管理器的管理信息,可以得到更新后的主系统可用内存信息,这样一来,主系统就可以正确地调用主系统内存管理器中录入的内存(包括预留内存)以执行任务。
本实施例可以在子系统结束任务后,对子系统使用的预留内存进行回收以供主系统使用。通过对辅助内存管理器和主系统内存管理器中录入的内存信息进行调整,并修改预留内存的属性,可以在需要时将预留内存的状态由“子系统可用、主系统不可用”切换为“主系统可用、子系统不可用”,从而实现内存资源的回收利用。
请参阅图3,图3示出了将预留内存信息录入主系统内存管理器的过程的一实施例,包括以下步骤:
S301:获取主系统内存管理器的修改权限。
在一些实施例中,例如在执行步骤S211时,需要将预留内存信息录入主系统内存管理器。此时主系统仍在正常运行,因此我们希望对主系统内存管理器的修改不会影响主系统对已录入主系统内存管理器的内存资源的调用,即动态地修改主系统内存管理器。因此,在步骤S301中,首先获取主系统内存资源管理器的修改权限,例如,对于buddy伙伴内存分配器,获取其内存锁,从而获取了对内存资源管理器中存储的主系统可用内存的信息进行修改的权限。
S302:将预留内存信息加入主系统内存管理器中的主系统内存信息集合。
获得了修改权限后,就可以将预留内存信息加入到主系统内存管理器中的主系统内存信息集合中,可以理解,加入预留内存信息不应对主系统的正常运行产生影响,因此,可以将预留内存加入到主系统内存的空闲链之中。
S303:释放主系统内存管理器的修改权限。
修改完成后,主系统释放主系统内存管理器的修改权限,不再对已录入的信息作修改。这样,预留内存信息就被“动态地”加入到了主系统内存信息的集合中。
请参阅图4,图4是本发明内存资源重分配方法一实施例的流程示意图。在一些实施例中,子系统在结束任务一段时间后还会重新启动以执行下一次任务,在这种情况下,若不对子系统重新分配合适的内存资源,则子系统无法正常工作。因此,本发明还涉及对已回收的内存资源重分配。如图4所示,内存资源回收后重分配的方法可包括以下步骤:
S401:子系统启动,等待预留内存被释放。
在步骤S401中,子系统重新启动,向主系统发送内存资源申请,以获取被回收的预留内存来执行任务。在一些情况下,该预留内存可能正在被主系统使用,此时需要对预留内存资源进行释放,以免系统运行错误。
S402:主系统获取子系统提出的内存资源申请。
相应地,主系统接收子系统发出的内存资源申请
S403:响应内存资源申请,使预留内存转为空闲状态。
在步骤S403中,主系统响应接收到的内存资源申请,使预留内存转为空闲状态。主系统可记录预留内存对应的子系统,从而在接收到子系统提出的内存资源申请时快速的查找到相应的子系统。
可选地,将预留内存转为空闲状态的步骤可以包括:将预留内存中的存储信息拷贝至替换内存中,并修改逻辑地址与物理地址的对应表,将预留内存对应的逻辑地址修改为与替换内存对应,例如,可以修改页表(page table)中的映射关系。其中,替换内存可以是任何一段大小足以容纳预留内存中的存储信息(例如,大小与预留内存相等)的空闲的物理内存,通过修改逻辑地址与物理地址的对应表,系统在想要根据逻辑地址访问预留内存时,实际上访问的是替换内存,这样预留内存就变为了空闲状态。在替换的过程中,还可以将占用预留内存的进程暂时停止运行,在替换完成后重新启动,从而实现了无缝切换,不会影响到主系统的正常工作。可以理解,根据需要还可以进一步将预留内存中的存储信息清空,在此不做限定。
应当注意,在主系统接收到内存资源申请时,没有可用的处于空闲状态的替换内存,则可以关闭部分已被占用的任务或进程,从而得到空闲的替换内存。例如,主系统中可以设置有白名单,其中存储有非关键的任务和进程,在没有可用的替换内存时,可以将白名单中的至少部分进程关闭,这样就在不影响系统主要功能的情况下获取了替换内存,避免了可能的主系统或子系统的系统崩溃。
S404:更新预留内存为主系统不可用,从而完成预留内存的释放。
与预留内存回收的过程相反,在步骤S404中,主系统响应子系统发出的内存资源申请,将上一步中已转为空闲状态的预留内存更新为主系统不可用。类似地,也可以通过使用内存资源管理器和/或直接修改预留内存的属性来更新预留内存。预留内存变为主系统不可用后,主系统在执行任务时就不可以访问该预留内存,这样一来,子系统就可以对该预留内存进行调用而不影响主系统的正常运行。
可选地,更新预留内存为主系统不可用的步骤可以包括:在主系统内存管理器中删除预留内存信息,在辅助内存管理器中录入该预留内存信息,以及将预留内存的属性设置为主系统不可用。通过这样的操作,就使该预留内存的状态由“主系统可用、子系统不可用”切换为“子系统可用、主系统不可用”。
至此,主系统完成对之前回收的预留内存的释放。
S405:通知子系统可以使用预留内存。
在一些实施例中,主系统在完成预留内存释放后,对子系统发出通知消息,通知子系统该预留内存已释放完成,可以使用该预留内存。
S406:使用预留内存作为内存资源从而执行任务。
响应主系统发来的通知消息,子系统可使用已释放的预留内存作为内存资源从而执行任务。
在子系统执行的任务结束后,主系统还可以再次根据前述内存资源回收方法对该预留内存进行回收,从而实现“回收——再分配——回收……”的过程。因此,本发明可以在不影响主系统和子系统正常工作的情况下,充分利用内存资源。
下面结合以Linux系统为内核的Android系统为例对本发明的整体步骤进行说明。
预留内存回收的主要步骤可包括:
当系统上电,操作系统(即主系统)通过配置读取真实物理地址的大小,其中包括操作系统可用内存与预留给快速应用的物理内存,并为其建立页(page)管理,将预留给快速应用的物理内存增加标记为系统不可用,纳入到memblock的链表中管理。
操作系统下一阶段建立buddy内存管理器,buddy通过页(page)信息将系统可用的物理内存纳入到其管理器中。因预留内存被标记为系统不可用,所以buddy不会将其纳入管理。所以在操作系统初始化buddy之后,操作系统的可见内存只有除预留内存以外的部分(Total_size-reserve_sz)。
操作系统启动之后,系统使用的内存资源只有buddy管理器之中的,而不会使用到预留内存资源,预留内存资源可以安全的被快速应用使用。
操作系统完成启动后,可加载与快速应用交互信息的驱动程序,用于与外部快速应用通信,如接收其结束、开始等信息,并负责执行具体的内存回收操作。
当快速应用执行结束之后,向操作系统发送命令,通知其执行回收内存操作。
驱动程序接受到快速应用发来的信息后,解析命令,当判断其命令为应用结束,则会将memblock标记中的预留给快速应用的物理内存信息从memblock链表中删除,并更新memblock数据结构,更新该页内存的属性为系统可用。
获取buddy的内存锁,将该整块预留内存动态地加入到buddy系统的空闲链之中,在加入空闲链的时候,根据系统当前内存状态,与预留块的大小,更新buddy的数据信息,并释放buddy内存锁。加入到buddy后,根据当前操作系统的总的可使用内存与空闲内存,重新计算buddy的管理数据,更新通知系统。
预留内存重新由子系统使用的主要步骤可包括:
快速应用向操作系统申请内存资源,操作系统检测到该申请后,立即将预留的物理内存资源置换到其他物理页表之上,并通过底层修改页表(page table)的映射关系来完成操作。预留内存被置换之后,操作系统执行内存回收相反的步骤,更新buddy与memblock中的管理数据,完成预留内存的释放。
本发明可以应用在多种操作系统中。例如,车载娱乐系统可以包括用于倒车辅助的子系统,在车载娱乐系统启动过程中,倒车辅助子系统可优先启动完成,并使用预留内存以执行任务,从而快速响应用户的需求,使用户不用等待整个车载娱乐系统启动完成就可以在子系统的辅助下进行倒车。在用户倒车结束后,倒车辅助子系统向车载娱乐系统发送任务结束的消息,此时车载娱乐系统可根据上述方法对倒车辅助子系统使用的预留内存进行回收利用。而当用户再次进行倒车操作时,车载娱乐系统可根据上述方法对回收的预留内存进行释放,并再次分配给倒车辅助子系统使用。这样,就可以在用户需要倒车时对倒车辅助子系统提供必要的预留内存以执行辅助用户倒车的任务,而在用户不需要倒车时使用预留内存执行主系统的任务,提高了系统性能。可以理解,本发明还可以应用在其他具有主系统、子系统的场景中,例如移动终端开机过程中用于显示屏幕保护的进程,或者类似的在移动终端的操作系统以及系统启动前就已经运行的服务进程。
请参阅图6,本发明提供一种内存资源的分配装置,其中分配装置600包括控制模块601、主系统内存管理模块602、辅助内存管理模块603和子系统驱动模块604。控制模块601可通过主系统内存管理模块602和辅助内存管理模块603将内存资源至少划分为主系统内存和预留内存,其中,预留内存为预留给子系统的内存资源。子系统驱动模块604用于获取子系统的任务结束信息或任务未执行信息。主系统内存管理模块602和辅助内存管理模块603在控制模块601的控制下,响应该任务结束信息或任务未执行信息,更新该预留内存为主系统可用。
在一些实施例中,将内存资源至少划分为主系统内存和预留内存的步骤包括:控制模块601将预留内存的属性设置为主系统不可用,将主系统内存的属性设置为主系统可用。辅助内存管理模块603可建立辅助内存管理器,并在辅助内存管理器中录入预留内存信息。主系统内存管理模块602可建立主系统内存管理器,并在主系统内存管理器中录入主系统内存信息集合。
在一些实施例中,控制模块601可设置预留内存的内存页信息为主系统不可用,并设置主系统内存的内存页信息为主系统可用,并存储在内核的配置文件中。辅助内存管理模块603可访问该配置文件,并根据预留内存的内存页信息将该预留内存增加到辅助内存管理器的预留内存链表中。主系统内存管理模块602可访问该配置文件,并根据主系统内存的内存页信息将该主系统内存增加到主系统内存管理器的主系统内存链表中。
在一些实施例中,控制模块601可响应子系统驱动模块604获取的任务结束信息或任务未执行信息,将预留内存的属性设置为主系统可用。辅助内存管理模块603可在控制模块601的控制下在辅助内存管理器中删除该预留内存的信息。主系统内存管理模块602可在主系统内存管理器中录入该预留内存的信息。
在一些实施例中,在更新预留内存为主系统可用后,控制模块601、主系统内存管理模块602、辅助内存管理模块603和/或子系统驱动模块604可记录该更新的操作,并对该预留内存进行标记。
在一些实施例中,在更新预留内存为主系统可用后,控制模块601通过子系统驱动模块604获取子系统提出的内存资源申请,并响应该内存资源申请,根据该预留内存的标记检索该预留内存,并使该预留内存转为空闲状态。另外,控制模块601还通过主系统内存管理模块602和辅助内存管理模块603更新该预留内存为主系统不可用,从而完成该预留内存的释放。
在一些实施例中,为了将预留内存转为空闲状态,控制模块601可将预留内存中的存储信息拷贝至替换内存中,并修改逻辑地址与物理地址的对应表,将预留内存对应的逻辑地址修改为与替换内存对应。控制模块601可将预留内存的属性设置为主系统不可用,并且,在控制模块601的控制下,主系统内存管理模块602可在主系统内存管理器中删除该预留内存信息,辅助内存管理模块603可在辅助内存管理器中录入该预留内存信息。
请参阅图7,本发明还提供一种芯片,其中芯片700包括处理器701、通信总线702和存储器703。处理器701和存储器703通过通信总线702传递信号。芯片700的一个例子是嵌入式系统的存储芯片。
其中,存储器703保存有程序数据,程序数据可被处理器701加载并执行上述任意实施例的内存资源分配方法。可以理解地,在其它一些实施例中,也可以不在芯片700中存储程序数据,而是通过将芯片700结合外部存储器(例如硬盘、服务器等)来执行上述任一实施例的方法。
应当注意,芯片700也可以是芯片组。例如,主系统和子系统可以分别由两个芯片进行处理。它们之间可通过硬件电路,相互发送中断通知,从而根据中断消息,确定对方模块的信息,以在相互之间传递信号。
上述实施例所述功能如果以软件形式实现并作为独立的产品销售或使用时,可存储在一个具有存储功能的装置中,即,本发明还提供一种存储有程序的存储装置。存储装置中程序数据能够被执行以实现上述实施例中的内存资源分配方法,该存储装置包括但不限于U盘、光盘、服务器、硬盘、随机存储器(RAM)、静态随机存储器(SRAM)、双倍速率随机动态存储器(DDR)等。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种内存资源的分配方法,其特征在于,包括:
将内存资源至少划分为主系统内存和预留内存,其中,所述预留内存为预留给子系统的内存资源;
获取所述子系统的任务结束信息或任务未执行信息;以及
响应所述任务结束信息或任务未执行信息,更新所述预留内存为主系统可用。
2.如权利要求1所述的方法,其特征在于,所述将内存资源划分为主系统内存和预留内存的步骤,包括:
将所述预留内存的属性设置为主系统不可用,将主系统内存的属性设置为主系统可用;
建立辅助内存管理器;
在所述辅助内存管理器中录入预留内存信息;以及
建立主系统内存管理器,用于存储主系统内存信息集合。
3.如权利要求2所述的方法,其特征在于:
所述将所述预留内存的属性设置为主系统不可用并将主系统内存的属性设置为主系统可用的步骤,包括:设置所述预留内存的内存页信息为主系统不可用,设置所述主系统内存的内存页信息为主系统可用,并存储在内核的配置文件中;
所述辅助内存管理器访问所述配置文件,并根据所述预留内存的内存页信息将所述预留内存增加到所述辅助内存管理器的预留内存链表中;
所述主系统内存管理器访问所述配置文件,并根据所述主系统内存的内存页信息将所述主系统内存增加到所述主系统内存管理器的主系统内存链表中。
4.如权利要求2所述的方法,其特征在于,所述响应所述任务结束信息或任务未执行信息更新所述预留内存为主系统可用的步骤,包括:
在所述辅助内存管理器中删除所述预留内存信息;
在所述主系统内存管理器中录入所述预留内存信息;以及
将所述预留内存的属性设置为主系统可用。
5.如权利要求1所述的方法,其特征在于,在所述更新所述预留内存为主系统可用的步骤后,还包括:
记录所述更新的操作,对所述预留内存进行标记。
6.如权利要求5所述的方法,其特征在于,还包括:
获取所述子系统提出的内存资源申请;
响应所述内存资源申请,根据所述预留内存的标记检索所述预留内存,使所述预留内存转为空闲状态;
更新所述预留内存为主系统不可用,从而完成所述预留内存的释放。
7.如权利要求6所述的方法,其特征在于:
所述使所述预留内存转为空闲状态的步骤包括:
将所述预留内存中的存储信息拷贝至替换内存中;以及
修改逻辑地址与物理地址的对应表,将所述预留内存对应的逻辑地址修改为与所述替换内存对应;
所述更新所述预留内存为主系统不可用,从而完成所述预留内存的释放的步骤包括:
在所述主系统内存管理器中删除所述预留内存信息;
在所述辅助内存管理器中录入所述预留内存信息;以及
将所述预留内存的属性设置为主系统不可用。
8.一种内存资源分配装置,其特征在于,包括:控制模块、主系统内存管理模块、辅助内存管理模块和子系统驱动模块,其中:
所述控制模块通过所述主系统内存管理模块和所述辅助内存管理模块将内存资源至少划分为主系统内存和预留内存,其中,预留内存为预留给子系统的内存资源;
所述子系统驱动模块用于获取所述子系统的任务结束信息或任务未执行信息;
所述主系统内存管理模块在所述控制模块的控制下,响应所述任务结束信息或任务未执行信息,更新所述预留内存为主系统可用。
9.一种芯片,其特征在于,所述芯片包括处理器,所述处理器可加载并执行程序指令以实现如权利要求1-7任一项所述的方法。
10.一种具有存储功能的装置,其特征在于,存储有程序指令,当所述程序指令被执行时可实现如权利要求1-7任一项所述的方法。
CN201810061285.8A 2018-01-22 2018-01-22 内存资源分配方法、分配装置、芯片和存储装置 Pending CN110069336A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810061285.8A CN110069336A (zh) 2018-01-22 2018-01-22 内存资源分配方法、分配装置、芯片和存储装置
US16/198,899 US20190227918A1 (en) 2018-01-22 2018-11-23 Method for allocating memory resources, chip and non-transitory readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810061285.8A CN110069336A (zh) 2018-01-22 2018-01-22 内存资源分配方法、分配装置、芯片和存储装置

Publications (1)

Publication Number Publication Date
CN110069336A true CN110069336A (zh) 2019-07-30

Family

ID=67299453

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810061285.8A Pending CN110069336A (zh) 2018-01-22 2018-01-22 内存资源分配方法、分配装置、芯片和存储装置

Country Status (2)

Country Link
US (1) US20190227918A1 (zh)
CN (1) CN110069336A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110728773A (zh) * 2019-10-15 2020-01-24 百度在线网络技术(北京)有限公司 一种图像存储的方法、装置和电子设备
CN110888388A (zh) * 2019-11-22 2020-03-17 北京法玛碧欧技术有限公司 一种基于人机接口的多用户管理系统
WO2023098369A1 (zh) * 2021-12-02 2023-06-08 中兴通讯股份有限公司 内存管理方法、装置及计算机可读存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11237981B1 (en) 2019-09-30 2022-02-01 Amazon Technologies, Inc. Memory scanner to accelerate page classification

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040064673A1 (en) * 2002-09-30 2004-04-01 International Business Machines Corporation Method, system, and computer program product for migrating data from one real page to another
US20120227040A1 (en) * 2012-05-01 2012-09-06 Concurix Corporation Hybrid Operating System
TW201706157A (zh) * 2015-03-25 2017-02-16 Denso Corp 車載系統
CN106909458A (zh) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 内存管理方法及装置
CN107391253A (zh) * 2017-06-08 2017-11-24 珠海金山网络游戏科技有限公司 一种降低系统内存分配释放冲突的方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6260068B1 (en) * 1998-06-10 2001-07-10 Compaq Computer Corporation Method and apparatus for migrating resources in a multi-processor computer system
US6961941B1 (en) * 2001-06-08 2005-11-01 Vmware, Inc. Computer configuration for resource management in systems including a virtual machine
US7493460B2 (en) * 2005-09-07 2009-02-17 Intel Corporation Preboot memory of a computer system
US8266692B2 (en) * 2006-07-05 2012-09-11 Bby Solutions, Inc. Malware automated removal system and method
US8104039B2 (en) * 2006-08-07 2012-01-24 International Business Machines Corporation Method for balancing resource sharing and application latency within a data processing system
US7689820B2 (en) * 2006-09-27 2010-03-30 L3 Communications Corporation Rapid-boot computing device with dual operating systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040064673A1 (en) * 2002-09-30 2004-04-01 International Business Machines Corporation Method, system, and computer program product for migrating data from one real page to another
US20120227040A1 (en) * 2012-05-01 2012-09-06 Concurix Corporation Hybrid Operating System
TW201706157A (zh) * 2015-03-25 2017-02-16 Denso Corp 車載系統
CN106909458A (zh) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 内存管理方法及装置
CN107391253A (zh) * 2017-06-08 2017-11-24 珠海金山网络游戏科技有限公司 一种降低系统内存分配释放冲突的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
0XAX: "《https://download.csdn.net/download/qingdaojunzuo/9932482》", 14 August 2017 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110728773A (zh) * 2019-10-15 2020-01-24 百度在线网络技术(北京)有限公司 一种图像存储的方法、装置和电子设备
CN110888388A (zh) * 2019-11-22 2020-03-17 北京法玛碧欧技术有限公司 一种基于人机接口的多用户管理系统
WO2023098369A1 (zh) * 2021-12-02 2023-06-08 中兴通讯股份有限公司 内存管理方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
US20190227918A1 (en) 2019-07-25

Similar Documents

Publication Publication Date Title
JP4769484B2 (ja) 仮想計算機をマイグレーションするための方法およびシステム
CN110069336A (zh) 内存资源分配方法、分配装置、芯片和存储装置
JP6314355B2 (ja) メモリ管理方法およびデバイス
CN100578456C (zh) 信息处理装置、进程控制方法
JP5510556B2 (ja) 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム
EP3761564B1 (en) Master/standby container system switch
CN103793258A (zh) 基于管理程序的服务器复制系统及其方法
CN1906598B (zh) 信息处理设备及存储区管理方法
WO2017050064A1 (zh) 共享内存数据库的内存管理方法及装置
CN110704161B (zh) 虚拟机创建方法、装置及计算机设备
CN112948050A (zh) 一种部署pod的方法及装置
CN115576716A (zh) 一种基于多进程的内存管理方法
CN113778662A (zh) 内存回收方法及装置
CN115629882A (zh) 多进程中的内存的管理方法
CN108845822B (zh) 实现软件不中断业务升级的内存管理方法及系统
CN107077376A (zh) 帧缓存实现方法、装置、电子设备和计算机程序产品
CN112748869B (zh) 一种数据处理方法及装置
AU2011348864B2 (en) Method for managing a memory of a computer system, memory management unit and computer system
JP2006048560A (ja) キャッシュメモリの管理方法、ストレージ装置または計算機システム
CN112948336B (zh) 数据加速方法及缓存单元、电子设备及存储介质
CN111078407B (zh) 内存管理的方法、装置、存储介质及电子设备
CN114546642A (zh) 任务执行方法、装置、计算机设备、存储介质和程序产品
WO2021193145A1 (ja) 車載情報処理装置、制御方法及びコンピュータプログラム
CN117827390A (zh) 数据处理方法以及计算机设备
CN115981795B (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