一种内存分配的方法及装置制造方法及图纸

技术编号:10857364 阅读:68 留言:0更新日期:2015-01-01 08:41
本发明专利技术公开了一种内存分配的方法,所述方法应用于计算机系统中,所述计算机系统包括内存资源、BOIS和OS,所述内存资源中包含初始镜像内存,在所述操作系统运行时,所述方法包括:获取所述初始镜像内存中未被占用的镜像内存,所述初始镜像内存为在所述OS初始化时所述BOIS向所述OS提供的镜像内存地址区间所指示的镜像内存,对待分配内存的数据进行检测,当检测到所述数据为待存储到镜像内存的数据时,从所述未被占用的镜像内存中为所述待存储到镜像内存的数据分配镜像内存。本发明专利技术实施例提供的内存分配的方法,可以准确的找到镜像内存,并为需要存储到镜像内存的数据分配镜像内存,从而保证的有限镜像内存的使用效率。

【技术实现步骤摘要】
一种内存分配的方法及装置
本专利技术涉及计算机
,具体涉及一种内存分配的方法及装置。
技术介绍
因内存的可靠性对计算机系统的可靠性影响很大。所以需要提高内存的可靠性,目前现有技术中通常采用镜像内存来提升内存可靠性。镜像内存(MirroringMemory)技术的工作原理:在硬件中划分两个内存区域,一个作为主内存,一个作为镜像内存,操作系统运行时将内存数据做两个拷贝,分别放在主内存和镜像内存中。因此使得内存数据有两套完整的备份。完整的镜像内存需要内存中的所有数据均存有副本,服务器系统正常运行时所使用的是原本,而当其中一份宿主失效时,另外那份就随即补替工作,有效防止了由于内存通道故障导致的数据丢失,极大提升了服务器可靠性。但是要实现这一功能需要双倍的物理内存,而实际容量的利用率只有50%。由于成本非常高,因此现实中很少有产品使用完整的镜像内存。现有技术中已经出现了部分镜像内存技术,该技术可以将计算机系统中的一部分内存(比如某一段或几段内存地址区域)做镜像内存。但现有技术中的镜像内存只是停留在硬件层,操作系统并不感知硬件层,当硬件层的镜像内存发生变化时,操作系统中就不能准确的找到镜像内存,导致无法将数据准备的存储到镜像内存中,而且,由于镜像内存大小有限,而计算机系统在为数据分配镜像内存时,只会为先产生的数据分配镜像内存,镜像内存占满后,就无法再为其他需要分配镜像内存的数据分配镜像内存。
技术实现思路
为了解决现有技术中操作系统无法感知到镜像内存的变化,且在镜像内存大小有限的情况下,无法为需要分配镜像内存的数据分配镜像内存相比,本专利技术实施例提供的内存分配的方法,可以准确的找到镜像内存,并为需要存储到镜像内存的数据分配镜像内存,从而保证的有限镜像内存的使用效率,而且提高了系统的可靠性。本专利技术实施例还提供了相应的装置。本专利技术第一方面提供一种内存分配的方法,所述方法应用于计算机系统中,所述计算机系统包括内存资源、基本输入输出系统BOIS和操作系统OS,所述内存资源中包含初始镜像内存,在所述操作系统运行时,所述方法包括:获取所述初始镜像内存中未被占用的镜像内存,所述初始镜像内存为在所述OS初始化时所述BOIS向所述OS提供的镜像内存地址区间所指示的镜像内存;对待分配内存的数据进行检测;当检测到所述数据为待存储到镜像内存的数据时,从所述未被占用的镜像内存中为所述待存储到镜像内存的数据分配镜像内存。结合第一方面,在第一种可能的实现方式中,所述对待分配内存的数据进行检测之前,所述方法还包括:为内核数据和关键用户数据设置镜像标识,所述关键用户数据为用户指定的需要镜像存储的数据;所述对待分配内存的数据进行检测,包括:检测所述待分配内存的数据是否携带有所述镜像标识;所述当检测到所述数据为待存储到镜像内存的数据时,从所述未被占用的镜像内存中为所述待存储到镜像内存的数据分配镜像内存,包括:当检测到所述待分配内存的数据携带有所述镜像标识,确定所述待分配内存的数据为所述内核数据或所述关键用户数据,从所述未被占用的镜像内存中为所述内核数据或所述关键用户数据分配镜像内存。结合第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:当所述待分配内存的数据为所述关键用户数据时,确定同一进程数据是否存储在所述初始镜像内存中,所述同一进程数据为在所述关键用户数据之前由产生所述关键用户数据的同一进程所产生的数据;若所述同一进程数据未存储到所述镜像内存中,则将所述同一进程数据转移到所述初始镜像内存中。结合第一方面、第一方面第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述从所述未被占用的镜像内存中为所述待存储到镜像内存的数据分配镜像内存,包括:确定所述待存储到镜像内存的数据所属的预划分内存资源区域;从所述所属的预划分内存资源区域的未被占用的镜像内存中,为所述待存储到镜像内存的数据分配镜像内存。结合第一方面、第一方面第一种或第二种可能的实现方式,在第四种可能的实现方式中,所述从所述未被占用的镜像内存中为所述待存储到镜像内存的数据分配镜像内存之后,所述方法还包括:为所述待存储到镜像内存的数据所分配的镜像内存的地址区间设置已占用标记。本专利技术第二方面提供一种内存分配的装置,所述装置应用于计算机系统中,所述计算机系统包括内存资源、基本输入输出系统BOIS和操作系统OS,所述内存资源中包含初始镜像内存,在所述操作系统运行时,所述装置包括:获取单元,用于获取所述初始镜像内存中未被占用的镜像内存,所述初始镜像内存为在所述OS初始化时所述BOIS向所述OS提供的镜像内存地址区间所指示的镜像内存;检测单元,用于对待分配内存的数据进行检测;分配单元,用于当所述检测单元检测到所述数据为待存储到镜像内存的数据时,从所述获取单元获取的所述未被占用的镜像内存中为所述待存储到镜像内存的数据分配镜像内存。结合第二方面,在第一种可能的实现方式中,所述装置还包括:第一设置单元,用于在所述检测单元对待分配内存的数据进行检测之前,为内核数据和关键用户数据设置镜像标识,所述关键用户数据为用户指定的需要镜像存储的数据;所述检测单元,用于检测所述待分配内存的数据是否携带有所述第一设置单元设置的所述镜像标识;所述分配单元,用于当所述检测单元检测到所述待分配内存的数据携带有所述镜像标识,确定所述待分配内存的数据为所述内核数据或所述关键用户数据,从所述未被占用的镜像内存中为所述内核数据或所述关键用户数据分配镜像内存。结合第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述装置还包括:确定单元,用于当所述待分配内存的数据为所述关键用户数据时,确定同一进程数据是否存储在所述初始镜像内存中,所述同一进程数据为在所述关键用户数据之前由产生所述关键用户数据的同一进程所产生的数据;转移单元,用于当所述确定单元确定所述同一进程数据未存储到所述镜像内存中时,则将所述同一进程数据转移到所述初始镜像内存中。结合第二方面、第二方面第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述分配单元包括:确定子单元,用于确定所述待存储到镜像内存的数据所属的预划分内存资源区域;分配子单元,用于从所述确定子单元确定的所属的预划分内存资源区域的未被占用的镜像内存中,为所述待存储到镜像内存的数据分配镜像内存。结合第二方面、第二方面第一种或第二种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:第二设置单元,用于在所述分配单元分配镜像内存后,为所述待存储到镜像内存的数据所分配的镜像内存的地址区间设置已占用标记。本专利技术实施例提供的内存分配的方法,所述方法应用于计算机系统中,所述计算机系统包括内存资源、基本输入输出系统BOIS和操作系统OS,所述内存资源中包含初始镜像内存,在所述操作系统运行时,所述方法包括:获取所述初始镜像内存中未被占用的镜像内存,所述初始镜像内存为在所述OS初始化时所述BOIS向所述OS提供的镜像内存地址区间所指示的镜像内存;对待分配内存的数据进行检测;当检测到所述数据为待存储到镜像内存的数据时,从所述未被占用的镜像内存中为所述待存储到镜像内存的数据分配镜像内存。与现有技术中操作系统无法感知到进行内存的变化,且在镜像内存大小有限的情况下,无法为需要分配镜像内存的数据分配本文档来自技高网...
一种内存分配的方法及装置

【技术保护点】
一种内存分配的方法,其特征在于,所述方法应用于计算机系统中,所述计算机系统包括内存资源、基本输入输出系统BOIS和操作系统OS,所述内存资源中包含初始镜像内存,在所述操作系统运行时,所述方法包括:获取所述初始镜像内存中未被占用的镜像内存,所述初始镜像内存为在所述OS初始化时所述BOIS向所述OS提供的镜像内存地址区间所指示的镜像内存;对待分配内存的数据进行检测;当检测到所述数据为待存储到镜像内存的数据时,从所述未被占用的镜像内存中为所述待存储到镜像内存的数据分配镜像内存。

【技术特征摘要】
1.一种内存分配的方法,其特征在于,所述方法应用于计算机系统中,所述计算机系统包括内存资源、基本输入输出系统BIOS和操作系统OS,所述内存资源中包含初始镜像内存,在所述操作系统OS运行时,所述方法包括:获取所述初始镜像内存中未被占用的镜像内存,所述初始镜像内存为在所述操作系统OS初始化时所述基本输入输出系统BIOS向所述操作系统OS提供的镜像内存地址区间所指示的镜像内存;对待分配内存的数据进行检测;当检测到所述数据为待存储到镜像内存的数据时,从所述未被占用的镜像内存中为所述待存储到镜像内存的数据分配镜像内存;当所述待分配内存的数据为内核数据时:所述对待分配内存的数据进行检测包括:在为所述内核数据分配内存时检测GFP_KERNEL中是否设置有_GFP_MIRROR标识,所述_GFP_MIRROR标识用于指示从所述未被占用的镜像内存中为所述待分配内存的数据分配镜像内存;所述检测到所述数据为待存储到镜像内存的数据为确定所述GFP_KERNEL中设置了所述_GFP_MIRROR标识。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述待分配内存的数据为关键用户数据时,确定同一进程数据是否存储在所述初始镜像内存中,所述同一进程数据为在所述关键用户数据之前由产生所述关键用户数据的同一进程所产生的数据;若所述同一进程数据未存储到所述镜像内存中,则将所述同一进程数据转移到所述初始镜像内存中。3.根据权利要求1-2任一所述的方法,其特征在于,所述从所述未被占用的镜像内存中为所述待存储到镜像内存的数据分配镜像内存,包括:确定所述待存储到镜像内存的数据所属的预划分内存资源区域;从所述所属的预划分内存资源区域的未被占用的镜像内存中,为所述待存储到镜像内存的数据分配镜像内存。4.根据权利要求1-2任一所述的方法,其特征在于,所述从所述未被占用的镜像内存中为所述待存储到镜像内存的数据分配镜像内存之后,所述方法还包括:为所述待存储到镜像内存的数据所分配的镜像内存的地址区间设置已占用标记。5.一种内存分配的装置,其特征在于,所述装置应用于计算机系统...

【专利技术属性】
技术研发人员:谢秀奇裘稀石
申请(专利权)人:杭州华为数字技术有限公司
类型:发明
国别省市:浙江;33

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

1