内存管理方法、装置及嵌入式系统制造方法及图纸

技术编号:10296560 阅读:152 留言:0更新日期:2014-08-07 01:27
本发明专利技术实施例公开了内存管理方法、装置及嵌入式系统。上述方法包括响应于系统级芯片SOC片内内存当前的内存剩余资源大于或等于K,同时,SOC片内内存中不存在空间大小大于或等于K的空闲物理内存块,使用SOC片内内存中的N个空闲物理内存块构建虚拟地址连续、空间大小为K的虚拟内存块并分配;K表示待申请的内存空间的空间大小;N个空闲物理内存块的总空间大小等于K,N为大于等于2的整数;物理内存块中的物理地址是连续的;在初始时SOC片内内存为一整块空闲内存块。这样,将离散的空闲物理内存块组成了地址连续的虚拟内存块,从而实现了连续地址空间的分配。

【技术实现步骤摘要】
【专利摘要】本专利技术实施例公开了内存管理方法、装置及嵌入式系统。上述方法包括响应于系统级芯片SOC片内内存当前的内存剩余资源大于或等于K,同时,SOC片内内存中不存在空间大小大于或等于K的空闲物理内存块,使用SOC片内内存中的N个空闲物理内存块构建虚拟地址连续、空间大小为K的虚拟内存块并分配;K表示待申请的内存空间的空间大小;N个空闲物理内存块的总空间大小等于K,N为大于等于2的整数;物理内存块中的物理地址是连续的;在初始时SOC片内内存为一整块空闲内存块。这样,将离散的空闲物理内存块组成了地址连续的虚拟内存块,从而实现了连续地址空间的分配。【专利说明】内存管理方法、装置及嵌入式系统
本专利技术涉及计算机
,更具体地说,涉及内存管理方法、装置及嵌入式系统。
技术介绍
嵌入式系统可应用于多种场景中,在多种场景中涉及到对嵌入式系统中的系统级芯片(System On Chip, S0C)片内内存的管理。现有方式中可使用动态方式管理SOC片内内存。但在系统运行一段时间后,经常会存在离散的物理地址段。在某些场景下,尽管当前的内存剩余资源大于或等于申请的内存空间大小,但由于物理地址段在空间上分散,无法实现连续地址空间的分配,从而导致内存申请失败。举例来讲,假定一个物理地址的大小为b,当前物理地址段POOl?P100,以及P200?P400都是空闲可用的,也即,当前的内存剩余资源为300b。待申请的内存空间大小(也可称为字节数)可表示为K,假定K = 240b小于300b,但由于POOl?PlOO与P200?P400的地址是不连续(也即空间上分散),从而无法进行分配,这样就会导致内存申请失败。
技术实现思路
有鉴于此,本专利技术实施例的目的在于提供内存管理方法、装置及嵌入式系统,以解决尽管当前的内存剩余资源大于或等于申请的内存空间大小,但由于物理内存空间在空间上分散,无法实现连续内存空间的分配,从而导致内存申请失败的问题。为实现上述目的,本专利技术实施例提供如下技术方案:根据本专利技术实施例的第一方面,一种内存管理方法,包括:响应于系统级芯片SOC片内内存当前的内存剩余资源大于或等于K,同时,所述SOC片内内存中不存在空间大小大于或等于K的空闲物理内存块,使用所述SOC片内内存中的N个空闲物理内存块构建虚拟地址连续、空间大小为K的虚拟内存块,并分配所述虚拟内存块作为待申请的内存空间;所述K表示待申请的内存空间的空间大小;所述N个空闲物理内存块的总空间大小等于所述K,所述N为大于等于2的整数;所述物理内存块中的物理地址是连续的;在初始时所述SOC片内内存为一整块空闲内存块。结合第一方面,在第一种能的实现方式中,还包括:响应于所述SOC片内内存中存在空间大小大于K的空闲物理内存块,将所述空间大小大于K的空闲物理内存块分割成m个空闲物理内存块,所述m个空闲物理内存块中存在空间大小等于K的空闲物理内存块;所述m大于等于2 ;分配所述空间大小等于K的空闲物理内存块作为所述待申请的内存空间。结合第一方面或第一方面第一种可能的实现方式,在第二种可能的实现方式中,还包括:响应于内存块释放命令,确定所述内存块释放命令指定的内存块是否为物理内存块;若指定的内存块是物理内存块,直接释放所述指定的内存块;若指定的内存块不是物理内存块,释放所述指定的内存块中包含的各物理内存块。结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,在直接释放所述指定的内存块或释放所述指定的内存块中包含的各物理内存块之后,还包括:确定与所释放的物理内存块相邻的物理内存块是否空闲,若空闲,则将所释放的物理内存块与相邻的物理内存块合并,将合并后的物理内存块设置为空闲;否则,直接将释放的物理内存块设置为空闲。结合第一方面至第一方面第三种可能的实现方式中的任一项,在第四种可能的实现方式中,所述SOC片内内存中的N个空闲物理内存块通过如下方式获得:在M个空闲物理内存块的总空间大小大于所述K,但所述M个空闲物理内存块中任意M — I个空闲物理内存块的总空间大小小于所述K时,将所述M个空闲物理内存块中的一个空闲物理内存块分割成m个空闲物理内存块,得到M+m-1个空闲物理内存块,其中,所述M+m-1个空闲物理内存块中的N个空闲物理内存块的总空间大小等于所述K ;m大于等于2,M = N。结合第一方面至第一方面第四种可能的实现方式中的任一项,在第五种可能的实现方式中,所述构建包括:建立所述N个空闲物理内存块中的物理地址与所述虚拟内存块中的虚拟地址之间的映射关系;将所述映射关系保存至地址映射表。结合第一方面第五种可能的实现方式,在第六种可能的实现方式中,在释放所述指定的内存块中包含的各物理内存块之后,还包括:更新所述地址映射表。根据本专利技术实施例的第二方面,提供一种内存管理装置,包括:第一内存管理单元,用于响应于系统级芯片SOC片内内存当前的内存剩余资源大于或等于K,同时,所述SOC片内内存中不存在空间大小大于或等于K的空闲物理内存块,使用所述SOC片内内存中的N个空闲物理内存块构建虚拟地址连续的虚拟内存块,并分配所述虚拟内存块作为待申请的内存空间;在初始时所述SOC片内内存为一整块空闲内存块;所述K表示待申请的内存空间的空间大小;所述N个空闲物理内存块的总空间大小等于所述K,所述N为大于等于2的整数;所述物理内存块中的物理地址是连续的。结合第二方面,在第一种可能的实现方式中,还包括第二内存管理单元,用于:响应于所述SOC片内内存中存在空间大小大于K的空闲物理内存块,将所述空间大小大于K的空闲物理内存块分割成m个空闲物理内存块,所述m个空闲物理内存块中存在空间大小等于K的空闲物理内存块;所述m大于等于2 ;分配所述空间大小等于K的空闲物理内存块作为所述待申请的内存空间。结合第二方面或第二方面第一种可能的实现方式,在第二种可能的实现方式中,还包括内存释放管理单元,用于:响应于内存块释放命令,确定所述内存块释放命令指定的内存块是否为物理内存块;若指定的内存块是物理内存块,直接释放所述指定的内存块;若指定的内存块不是物理内存块,释放所述指定的内存块中包含的各物理内存块。结合第二方面第二种可能的实现方式,在第三种可能的实现方式中,还包括:空闲物理块设置单元,用于在所述内存释放管理单元在直接释放所述指定的内存块或释放所述指定的内存块中包含的各物理内存块之后,确定与所释放的物理内存块相邻的物理内存块是否空闲,若空闲,则将所释放的物理内存块与相邻的物理内存块合并,将合并后的物理内存块设置为空闲;否则,直接将释放的物理内存块设置为空闲。根据本专利技术实施例的第三方面,提供一种嵌入式系统,包括SOC片内内存、处理器以及如第三方面至第三方面第三种可能的实现方式中任一项所述的内存管理装置。可见,在本专利技术实施例中,在当前的内存剩余资源大于或等于申请的内存空间大小,但物理内存空间在空间上分散的情况下(也即,物理内存当前的内存剩余资源大于或等于待申请的内存空间的大小,同时,不存在大于或等于待申请的内存空间的大小的空闲物理内存块),将空闲物理内存块构建虚拟地址连续、大小为K的虚拟内存块。这样,就将离散的空闲物理内存块组成了地址连续的虚拟内存块,从而实现了连续地址空间的分配。解决了由于物理内存空间本文档来自技高网
...

【技术保护点】
一种内存管理方法,其特征在于,包括:响应于系统级芯片SOC片内内存当前的内存剩余资源大于或等于K,同时,所述SOC片内内存中不存在空间大小大于或等于K的空闲物理内存块,使用所述SOC片内内存中的N个空闲物理内存块构建虚拟地址连续、空间大小为K的虚拟内存块,并分配所述虚拟内存块作为待申请的内存空间;所述K表示待申请的内存空间的空间大小;所述N个空闲物理内存块的总空间大小等于所述K,所述N为大于等于2的整数;所述物理内存块中的物理地址是连续的;在初始时所述SOC片内内存为一整块空闲内存块。

【技术特征摘要】

【专利技术属性】
技术研发人员:宁科谢传波
申请(专利权)人:上海华为技术有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1