CN110362510B - 动态堆栈分配方法、装置、计算机设备和存储介质 - Google Patents

动态堆栈分配方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN110362510B
CN110362510B CN201910567385.2A CN201910567385A CN110362510B CN 110362510 B CN110362510 B CN 110362510B CN 201910567385 A CN201910567385 A CN 201910567385A CN 110362510 B CN110362510 B CN 110362510B
Authority
CN
China
Prior art keywords
page
pages
memory space
task
switching
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.)
Active
Application number
CN201910567385.2A
Other languages
English (en)
Other versions
CN110362510A (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.)
Zhuhai Jieli Technology Co Ltd
Original Assignee
Zhuhai Jieli 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 Zhuhai Jieli Technology Co Ltd filed Critical Zhuhai Jieli Technology Co Ltd
Priority to CN201910567385.2A priority Critical patent/CN110362510B/zh
Publication of CN110362510A publication Critical patent/CN110362510A/zh
Application granted granted Critical
Publication of CN110362510B publication Critical patent/CN110362510B/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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请涉及一种上述动态堆栈分配方法、装置、计算机设备和存储介质,其中方法包括:当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,获取待切换任务所需新增页数,并计算剩余页数与所述所需新增页数的差值,当差值大于零时,在剩余页中选择不小于差值数的页作为切换页,当差值小于零时,在共用堆栈中申请差值绝对值数的页作为切换页,根据新增切换页,确定待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引,从而能够有效提高任务切换时系统运行效率。

Description

动态堆栈分配方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种动态堆栈分配方法、装置、计算机设备和存储介质。
背景技术
嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
在实际生产生活中,嵌入式操作系统支持嵌入式系统应用,其比通用操作系统更具实时高效性、硬件相关依赖性。嵌入式系统资源非常有限,当下嵌入式系统应用越来越复杂,多个应用同时运行的时候消耗的内存很多时候比系统拥有的内存还要多。操作系统多任务运行下堆栈的消耗很大程度上决定了嵌入式应用的内存消耗。此外,系统因运行过程中不断申请释放内存空间也会造成内存碎片化,从而无形导致内存空间变少。系统内存因任务堆栈消耗过度或者内存碎片过多,导致应用申请不到所需内存,降低系统实时高效性,从而严重影响系统性能和系统稳定性。
发明内容
基于此,有必要针对上述技术问题,提供一种可以提高系统运行效率的动态堆栈分配方法、装置、计算机设备和存储介质。
一种动态堆栈分配方法,所述方法包括:
当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,所述共用堆栈划设于虚拟内存空间;
获取待切换任务所需新增页数,并计算剩余页数与所述所需新增页数的差值;
当所述差值大于零时,在所述剩余页中选择所述所需新增页数的页作为新增切换页;
当所述差值小于零时,在所述虚拟内存空间中申请所述差值绝对值数的页,并选择所述所需新增页数的页作为新增切换页;
根据所述新增切换页,确定所述待切换任务在物理内存空间中对应页框的地址,以更新TLB(Translation Lookaside Buffer,转换检测缓冲区)对应索引。
在其中一个实施例中,所述当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页之前,还包括:
将虚拟内存空间分为多个页,将物理内存空间分成多个页框;
生成虚拟内存空间内已划分的多个页与所述页框的地址索引表;
存储所述地址索引表于所述TLB。
在其中一个实施例中,所述将虚拟内存空间分为多个页包括:
获取虚拟内存空间中页粒度大小;
根据虚拟内存空间中页粒度大小,将虚拟内存空间分为多个页。
在其中一个实施例中,所述将虚拟内存空间分为多个页,将物理内存空间分成多个页框包括:
根据虚拟内存空间中页粒度大小,将虚拟内存空间分为大小相同的页;
将物理内存空间分成多个大小相同的页框,所述虚拟内存空间大于所述物理内存空间。
在其中一个实施例中,所述当所述差值大于零时,在所述剩余页中选择所述所需新增页数的页作为新增切换页,并释放所述差值数的页包括:
当所述差值大于零时,识别所述剩余页中最靠近已被使用页的页,标记为起点页;
以所述起点页作为起点,在所述剩余页中选择所述所需新增页数的页作为新增切换页,并释放所述差值数的页。
在其中一个实施例中,所述当所述差值大于零时,在所述剩余页中选择所述所需新增页数的页作为新增切换页,并释放所述差值数的页包括:
当所述差值大于零时,将所述剩余页整体作为新增切换页。
一种动态堆栈分配装置,所述装置包括:
识别模块,用于当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,所述共用堆栈划设于虚拟内存空间;
计算模块,用于获取待切换任务所需新增页数,并计算剩余页数与所述所需新增页数的差值;
第一处理模块,用于当所述差值大于零时,在所述剩余页中选择所述所需新增页数的页作为新增切换页,并释放所述差值数的页;
第二处理模块,用于当所述差值小于零时,在所述虚拟内存空间中申请所述差值绝对值数的页,并选择所述所需新增页数的页作为新增切换页;
分配模块,用于根据所述新增切换页,确定所述待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引。
在其中一个实施例中,动态堆栈分配装置还包括:
划分模块,用于将虚拟内存空间分为多个页,将物理内存空间分成多个页框;生成所述页与所述页框地址的索引表;存储所述地址索引表于所述TLB。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的方法的步骤。
上述动态堆栈分配方法、装置、计算机设备和存储介质,当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,获取待切换任务所需新增页数,并计算剩余页数与所述所需新增页数的差值,当所述差值大于零时,在所述剩余页中选择所述所需新增页数的页作为新增切换页,当所述差值小于零时,在所述虚拟内存空间中申请所述差值绝对值数的页,并选择所述所需新增页数的页作为新增切换页,根据所述新增切换页,确定所述待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引。整个过程中,基于当前任务未占用页与待切换任务所需新增页,动态调整虚拟内存空间中页的状态,进而通过TLB动态调整物理内存中页框的状态(释放或占用),能够有效提高任务切换时系统运行效率。
附图说明
图1为传统任务切换时堆栈空间切换示意图;
图2为一个实施例中动态堆栈分配方法的应用环境图;
图3为一个实施例中动态堆栈分配方法的流程示意图;
图4为另一个实施例中动态堆栈分配方法的流程示意图;
图5为应用本申请动态堆栈分配方法,任务切换前堆栈空间示意图;
图6为应用本申请动态堆栈分配方法,任务切换后堆栈空间示意图;
图7为一个实施例中动态堆栈分配装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为详细解释本申请动态堆栈分配方法的发明构思及其技术原理,下面将首先针对传统相关技术进行介绍。
如图1所示,传统技术中,任务堆栈的大小都是根据实际任务运行过程中可能产生的最大值来申请,每个任务都会有自己的专属堆栈。任务由TCB(Trusted Computing Base,计算机内保护装置的总体)和STACK(栈)组成,假设操作系统产生了3个任务分别是TASK(任务)A、TASK B、TASK C,当前TASK A正在运行,其它两个任务处于挂起状态:
1)TASK A在运行时,TASK B和TASK C都有未使用的堆栈空间(Stack Unused),即有两片堆栈处于浪费状态;
2)TASK B在运行时,TASK A和TASK C都有未使用的堆栈空间(Stack Unused),即有两片堆栈处于浪费状态;
3)TASK A切换到TASK B时,User(用户)大小的空间被释放变为Free Space(空闲空间),如果此时有大于User大小的空间需要申请,那么Free Space就不能被利用,变成了内存碎片。
可见,在传统技术中,系统运行过程时,其处于挂起状态的任务有一部分堆栈空间是没有被使用的,同时还可能出现内存碎片,这些因素都会导致可用内存空间变少,最终影响系统的运行。
基于传统技术存在上述重大缺陷,本申请提供的动态堆栈分配方法,可以应用于如图2所示的应用环境中。在CPU中输入虚拟地址,CPU获取虚拟地址之后,由MMU(MemoryManagement Unit,内存管理单元)进行管理,通过查询TLB得到虚拟地址对应的物理地址,在根据物理地址访问相应的物理内存空间,具体的MMU+TLB协调管理过程具体为:当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,共用堆栈划设于虚拟内存空间,获取待切换任务所需新增页数,并计算剩余页数与所需新增页数的差值,当差值大于零时,表明当前任务的剩余页对应物理内存空间足够支持待切换任务运行,则在剩余页中选择所需新增页数的页作为新增切换页,当小于零时,表明当前任务的剩余页对应物理内存空间不足以支持待切换任务运行,需在共用堆栈中重新申请新的页,则在虚拟内存空间中申请差值绝对值数的页,并选择所需新增页数的页作为新增切换页,根据新增切换页,确定待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引。基于当前任务未占用页与待切换任务所需新增页,动态调整虚拟内存空间中页的状态,进而通过TLB动态调整物理内存中页框的状态(释放或占用),能够有效提高任务切换时系统运行效率。
如图3所示,本申请提供一种动态堆栈分配方法,具体方法包括:
S100:当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,共用堆栈划设于虚拟内存空间。
当需要进行任务切换时,CPU发送任务切换消息至MMU,MMU接收任务切换消息,识别当前任务在共用堆栈中剩余页X。在MMU管理的虚拟内存空间中划设有共用堆栈,共用堆栈包括多个页,当前任务在运行时,根据用户设置占据一定数的页,以支持任务运行。在这些占据的页中存在已被使用的页和未被使用的页,未被使用的页即为当前任务在共用堆栈中剩余页,这部分页处于空闲状态,可以在接下来的任务中加以使用,以提高内存空间的使用效率。
S200:获取待切换任务所需新增页数,并计算剩余页数与所需新增页数的差值。
待切换任务所需新增页是指待切换任务所需物理内存空间对应的页与待切换任务当前已占用物理内存空间对应页之间差值Y。例如若需要由TASK A切换至TASK B,识别出TASK B所需内存空间包括物理内存空间1和物理内存空间2、TASK B已占用物理内存空间1,其对应的所需新增页数为1。
S300:当差值大于零时,在剩余页中选择所需新增页数的页作为新增切换页。
当X-Y大于零时,表明剩余页对应的物理内存空间可以支持待切换任务运行,则从剩余页中选择所需新增页数的页作为新增切换页。
S400:当差值小于零时,在虚拟内存空间中申请差值绝对值数的页,并选择所需新增页数的页作为新增切换页。
当X-Y小于零时,表明剩余页对应的物理内存空间不足支持待切换运行,则从虚拟内存空间申请差值绝对值数的页作为新增切换页。
S500:根据新增切换页,确定待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引。
步骤S300或步骤S400已经确定了待切换任务对应的新增切换页,根据虚拟内存空间中页与物理内存空间中页框的映射关系,可以确定待切换任务在物理内存空间中对应页框的地址,将该地址对应的页框(物理内存空间)分配给待切换任务运行,当分配完成时,更新TLB中页与页框之间索引映射关系。
上述动态堆栈分配方法,当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,获取待切换任务所需新增页数,并计算剩余页数与所需新增页数的差值,当差值大于零时,在剩余页中选择所需新增页数的页作为新增切换页,当差值小于零时,在虚拟内存空间中申请差值绝对值数的页,并选择所需新增页数的页作为新增切换页,根据新增切换页,确定待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引。整个过程中,基于当前任务未占用页与待切换任务所需新增页,动态调整虚拟内存空间中页的状态,进而通过TLB动态调整物理内存中页框的状态(释放或占用),能够有效提高任务切换时系统运行效率。
如图4所示,在其中一个实施例中,步骤S100之前,还包括:
S110:将虚拟内存空间分为多个页,将物理内存空间分成多个页框。
S120:生成页与页框地址的索引表。
S130:存储地址索引表于TLB。
MMU管理虚拟内存空间,将虚拟内存空间划分为多个页(page),将物理内存空间划分为个页框(frame)。构建页与页框地址之间映射关系,具体该映射关系可以为索引表,即生成页与页框地址之间的索引表,将索引表存储于TLB中,即根据该索引表可以在TLB查找到每个页对应的页框地址,以便访问到对应的物理内存空间。
进一步的,将虚拟内存空间分为多个页包括:获取虚拟内存空间中页粒度大小;根据虚拟内存空间中页粒度大小,将虚拟内存空间分为多个页。
页粒度是指每页地址的增量。在本实施例中,先获取其页粒度大小,再基于页粒度大小,将虚拟内存空间分为多个页。非必要的,可以将虚拟内存空间分为大小相同的页,并且将物理内存空间分成多个大小相同的页框,虚拟内存空间大于物理内存空间。
在其中一个实施例中,当差值大于零时,在剩余页中选择所需新增页数的页作为新增切换页包括:当差值大于零时,识别剩余页中最靠近已被使用页的页,标记为起点页;以起点页作为起点,在剩余页中选择所需新增页数的页作为新增切换页。
在确保虚拟空间中页和物理内存空间中页框的有序使用和切换,在本实施例中,当差值大于零时,查找到剩余页中最靠近已被使用页的页,以该查找到的页作为起点,选择差值数的页作为切换页。具体来说,假定TASK A切换至TASK B,TASK A根据用户设置在共用堆栈中依次划设了page a、page b、page c以及page d,其中page a、page b已使用,page c与page d未使用,则page c即为最靠近已被使用页(page b)的页,即切换页以page c作为起点进行选择。
在其中一个实施例中,当差值大于零时,在剩余页中选择所需新增页数的页作为新增切换页包括:当差值大于零时,将剩余页整体作为新增切换页。
剩余页为共用堆栈中当前任务未占用页,对其放置不处理,将会导致虚拟内存空间浪费,因此,在本实施例中,将所有剩余页全部作为新增切换页,作为下一轮任务切换的资源,可以提高对虚拟内存空间使用效率,又由于虚拟内存空间中页与物理内存空间中页框地址存在映射关系,因此,该处理也可以提高物理内存空间使用效率。
为更进一步详细解释本申请动态堆栈分配方法的技术方案及其效果,下面将采用具体应用实例,并结合图5和图6进行详细说明。
在其中一个应用实例中,本申请动态堆栈分配方法包括以下步骤:
1、按照MMU页粒度大小,将虚拟内存空间分成多个页(page),将物理内存空间分成多个页框(frame),每份page和每份frame大小相同,同时虚拟内存空间比物理内存空间要大。
2、TLB对应的虚拟地址储存着frame的索引号,方便索引到对应的物理内存空间。
3、在虚拟内存空间里划分了一块固定的共用任务堆栈;
4、如图5所示,TASK A在运行,其它任务处于挂起状态。TASK A根据用户设置占据着虚拟内存空间的page a到page d空间,对应的TLB表也存放着相应的frame索引号(framenumber),所以可以看出TASK A占据了实际物理内存空间的frame 0到frame 3的位置。
5、任务发生切换,需要由TASK A切换到TASK B。
6、保存TASK A相关信息到堆栈,然后查询该任务还有多少page大小的堆栈未被使用,本例假设TASK A的page c和page d还未被使用,即对应的frame1和frame 3可以被释放。
7、根据图5所示,TASK B本身已经占据了frame 6的空间,此时需要获取TASK B需要新加的内存空间以达到用户设置的大小,本例假设TASK B需要新加1个page以达到需求。如图6所示,TASK B在本身占据了page a的前提下,新增了page b以达到用户设置大小。
8、根据步骤6和步骤7,可以被释放的frame 1刚好可以给TASK B新增的page b使用。最后如图6,frame 0和frame 2被TASK A占据,frame 1和frame 6被TASK B占据,而frame 3被释放了。
应该理解的是,虽然图3-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图7所示,本申请还提供一种动态堆栈分配装置,装置包括:
识别模块100,用于当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,共用堆栈划设于虚拟内存空间;
计算模块200,用于获取待切换任务所需新增页数,并计算剩余页数与所需新增页数的差值;
第一处理模块300,用于当差值大于零时,在剩余页中选择所需新增页数的页作为新增切换页;
第二处理模块400,用于当差值小于零时,在虚拟内存空间中申请差值绝对值数的页,并选择所需新增页数的页作为新增切换页;
分配模块500,用于根据新增切换页,确定待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引。
上述动态堆栈分配装置,当接收到任务切换消息时,识别模块100识别当前任务在共用堆栈中剩余页,计算模块200获取待切换任务所需新增页数,并计算剩余页数与所需新增页数的差值,当差值大于零时,第一处理模块300在剩余页中选择所需新增页数的页作为新增切换页,当差值小于零时,第二处理模块400在虚拟内存空间中申请差值绝对值数的页,并选择所需新增页数的页作为新增切换页,分配模块500根据新增切换页,确定待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引。整个过程中,基于当前任务未占用页与待切换任务所需新增页,动态调整虚拟内存空间中页的状态,进而通过TLB动态调整物理内存中页框的状态(释放或占用),能够有效提高任务切换时系统运行效率。
在其中一个实施例中,上述动态堆栈分配装置还包括划分模块,用于将虚拟内存空间分为多个页,将物理内存空间分成多个页框;生成页与页框地址的索引表;存储地址索引表于TLB。
在其中一个实施例中,划分模块还用于获取虚拟内存空间中页粒度大小;根据虚拟内存空间中页粒度大小,将虚拟内存空间分为多个页。
在其中一个实施例中,划分模块还用于根据虚拟内存空间中页粒度大小,将虚拟内存空间分为大小相同的页;将物理内存空间分成多个大小相同的页框,虚拟内存空间大于物理内存空间。
在其中一个实施例中,第一处理模块还用于当差值大于零时,识别剩余页中最靠近已被使用页的页,标记为起点页;以起点页作为起点,在剩余页中选择所需新增页数的页作为新增切换页。
在其中一个实施例中,第一处理模块还用于当差值大于零时,将剩余页整体作为新增切换页。
关于动态堆栈分配装置的具体限定可以参见上文中对于动态堆栈分配方法的限定,在此不再赘述。上述动态堆栈分配装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储用户预先设置的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种动态堆栈分配方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,共用堆栈划设于虚拟内存空间;
获取待切换任务所需新增页数,并计算剩余页数与所需新增页数的差值;
当差值大于零时,在剩余页中选择所需新增页数的页作为新增切换页;
当差值小于零时,在虚拟内存空间中申请差值绝对值数的页,并选择所需新增页数的页作为新增切换页;
根据新增切换页,确定待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将虚拟内存空间分为多个页,将物理内存空间分成多个页框;生成页与页框地址的索引表;存储地址索引表于TLB。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取虚拟内存空间中页粒度大小;根据虚拟内存空间中页粒度大小,将虚拟内存空间分为多个页。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据虚拟内存空间中页粒度大小,将虚拟内存空间分为大小相同的页;将物理内存空间分成多个大小相同的页框,虚拟内存空间大于物理内存空间。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当差值大于零时,识别剩余页中最靠近已被使用页的页,标记为起点页;以起点页作为起点,在剩余页中选择所需新增页数的页作为新增切换页。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当差值大于零时,将剩余页整体作为新增切换页。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,共用堆栈划设于虚拟内存空间;
获取待切换任务所需新增页数,并计算剩余页数与所需新增页数的差值;
当差值大于零时,在剩余页中选择所需新增页数的页作为新增切换页;
当差值小于零时,在虚拟内存空间中申请差值绝对值数的页,并选择所需新增页数的页作为新增切换页;
根据新增切换页,确定待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将虚拟内存空间分为多个页,将物理内存空间分成多个页框;生成页与页框地址的索引表;存储地址索引表于TLB。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取虚拟内存空间中页粒度大小;根据虚拟内存空间中页粒度大小,将虚拟内存空间分为多个页。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据虚拟内存空间中页粒度大小,将虚拟内存空间分为大小相同的页;将物理内存空间分成多个大小相同的页框,虚拟内存空间大于物理内存空间。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
当差值大于零时,识别剩余页中最靠近已被使用页的页,标记为起点页;以起点页作为起点,在剩余页中选择所需新增页数的页作为新增切换页。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
当差值大于零时,将剩余页整体作为新增切换页。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种动态堆栈分配方法,所述方法包括:
当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,所述共用堆栈划设于虚拟内存空间,共用堆栈包括多个页;
获取待切换任务所需新增页数,并计算剩余页数与所述所需新增页数的差值;
当所述差值大于零时,在所述剩余页中选择所述所需新增页数的页作为新增切换页;
当所述差值小于零时,在所述虚拟内存空间中申请所述差值绝对值数的页,并选择所述所需新增页数的页作为新增切换页;
根据所述新增切换页,确定所述待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引。
2.根据权利要求1所述的方法,其特征在于,所述当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页之前,还包括:
将虚拟内存空间分为多个页,将物理内存空间分成多个页框;
生成虚拟内存空间内已划分的多个页与所述页框的地址索引表;
存储所述地址索引表于所述TLB。
3.根据权利要求2所述的方法,其特征在于,所述将虚拟内存空间分为多个页包括:
获取虚拟内存空间中页粒度大小;
根据虚拟内存空间中页粒度大小,将虚拟内存空间分为多个页。
4.根据权利要求2所述的方法,其特征在于,所述将虚拟内存空间分为多个页,将物理内存空间分成多个页框包括:
根据虚拟内存空间中页粒度大小,将虚拟内存空间分为大小相同的页;
将物理内存空间分成多个大小相同的页框,所述虚拟内存空间大于所述物理内存空间。
5.根据权利要求1所述的方法,其特征在于,所述当所述差值大于零时,在所述剩余页中选择所述所需新增页数的页作为新增切换页,并释放所述差值数的页包括:
当所述差值大于零时,识别所述剩余页中最靠近已被使用页的页,标记为起点页;
以所述起点页作为起点,在所述剩余页中选择所述所需新增页数的页作为新增切换页,并释放所述差值数的页。
6.根据权利要求1所述的方法,其特征在于,所述当所述差值大于零时,在所述剩余页中选择所述所需新增页数的页作为新增切换页包括:
当所述差值大于零时,将所述剩余页整体作为新增切换页。
7.一种动态堆栈分配装置,其特征在于,所述装置包括:
识别模块,用于当接收到任务切换消息时,识别当前任务在共用堆栈中剩余页,所述共用堆栈划设于虚拟内存空间;
计算模块,用于获取待切换任务所需新增页数,并计算剩余页数与所述所需新增页数的差值;
第一处理模块,用于当所述差值大于零时,在所述剩余页中选择所述所需新增页数的页作为新增切换页;
第二处理模块,用于当所述差值小于零时,在所述虚拟内存空间中申请所述差值绝对值数的页,并选择所述所需新增页数的页作为新增切换页;
分配模块,用于根据所述新增切换页,确定所述待切换任务在物理内存空间中对应页框的地址,以更新TLB对应索引。
8.根据权利要求7所述的装置,其特征在于,还包括:
划分模块,用于将虚拟内存空间分为多个页,将物理内存空间分成多个页框;生成虚拟内存空间内已划分的多个页与所述页框的地址索引表;存储所述地址索引表于所述TLB。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN201910567385.2A 2019-06-27 2019-06-27 动态堆栈分配方法、装置、计算机设备和存储介质 Active CN110362510B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910567385.2A CN110362510B (zh) 2019-06-27 2019-06-27 动态堆栈分配方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910567385.2A CN110362510B (zh) 2019-06-27 2019-06-27 动态堆栈分配方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN110362510A CN110362510A (zh) 2019-10-22
CN110362510B true CN110362510B (zh) 2021-07-16

Family

ID=68217201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910567385.2A Active CN110362510B (zh) 2019-06-27 2019-06-27 动态堆栈分配方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN110362510B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101290591A (zh) * 2008-06-03 2008-10-22 北京中星微电子有限公司 一种嵌入式操作系统中切换任务的方法和单元
CN102467404A (zh) * 2011-10-14 2012-05-23 海尔集团技术研发中心 一种基于物理内存实现软件快速切换的方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101290591A (zh) * 2008-06-03 2008-10-22 北京中星微电子有限公司 一种嵌入式操作系统中切换任务的方法和单元
CN102467404A (zh) * 2011-10-14 2012-05-23 海尔集团技术研发中心 一种基于物理内存实现软件快速切换的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
曹晓丽等.共享堆栈的动态存储结构.《自动化与仪器仪表》.2014,第8-10页. *

Also Published As

Publication number Publication date
CN110362510A (zh) 2019-10-22

Similar Documents

Publication Publication Date Title
JP5510556B2 (ja) 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム
CN111104208B (zh) 进程调度管理方法、装置、计算机设备及存储介质
JP2019133391A (ja) メモリシステムおよび制御方法
CN110727517A (zh) 一种基于分区设计的内存分配方法和装置
CN110990114A (zh) 一种虚拟机资源分配方法、装置、设备及可读存储介质
EP3208709B1 (en) Batch processing method and device for system invocation commands
CN108241516B (zh) 嵌入式系统程序加载方法、装置、计算机设备和存储介质
JP2022537007A (ja) データ記憶
CN111338779A (zh) 资源分配方法、装置、计算机设备和存储介质
CN110362510B (zh) 动态堆栈分配方法、装置、计算机设备和存储介质
CN116881003A (zh) 资源分配方法、装置、服务设备及存储介质
CN111522659A (zh) 一种空间使用方法和装置
CN116010093A (zh) 数据处理方法、装置、计算机设备和可读存储介质
US9405470B2 (en) Data processing system and data processing method
CN110825732A (zh) 数据查询方法、装置、计算机设备和可读存储介质
CN113419672B (zh) 一种存储容量管理方法、系统及存储介质
CN113742059B (zh) 任务分配方法、装置、计算机设备和存储介质
CN115686782A (zh) 基于固态硬盘的资源调度方法、装置、电子设备及存储介质
KR20070014724A (ko) 이동통신단말기의 메모리 제어방법
CN113010453A (zh) 一种内存管理的方法、系统、设备及可读存储介质
CN113961302A (zh) 资源分配方法、装置、电子设备及存储介质
CN114721820A (zh) 主机存储与外设共享的均衡方法、装置和soc芯片
WO2020213397A1 (ja) プロセッサおよびレジスタの継承方法
WO2015161804A1 (zh) 一种Cache分区的方法及装置
KR101383793B1 (ko) 시스템 온 칩에서 메모리 할당 방법 및 장치

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
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 519000 No. 333, Kexing Road, Xiangzhou District, Zhuhai City, Guangdong Province

Patentee after: ZHUHAI JIELI TECHNOLOGY Co.,Ltd.

Address before: Floor 1-107, building 904, ShiJiHua Road, Zhuhai City, Guangdong Province

Patentee before: ZHUHAI JIELI TECHNOLOGY Co.,Ltd.