CN103176915B - 一种管理内存的方法及装置 - Google Patents
一种管理内存的方法及装置 Download PDFInfo
- Publication number
- CN103176915B CN103176915B CN201310104823.4A CN201310104823A CN103176915B CN 103176915 B CN103176915 B CN 103176915B CN 201310104823 A CN201310104823 A CN 201310104823A CN 103176915 B CN103176915 B CN 103176915B
- Authority
- CN
- China
- Prior art keywords
- save memory
- memory
- log
- configuration file
- registration
- 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
Links
Landscapes
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开一种管理内存的方法及装置,所述方法通过在BIOS启动时从后台下载内存保留区的配置文件,解析所述配置文件,并根据解析后的配置文件的内容更新内存保留区记录表,根据更新后的内存保留区记录表修改内存映射表,将修改后的内存映射表发送给OS,使得所述OS获取内存的使用情况,从而实现在不升级BIOS的情况下,动态决定哪些内存对OS可用,解决了电信平台对内存灵活使用的要求。
Description
技术领域
本发明属于计算机领域,尤其涉及一种管理内存的方法及装置。
背景技术
X86单板在基本输入输出系统(BasicInputOutputSystem,BIOS)启动阶段的实现都是基于Intel提出的统一可扩展固件接口(UnifiedExtensibleFirewareInterface,UEFI)规范,该规范在内存管理方面制定了一套系统的实现机制。X86单板上电启动后,BIOS通过系统管理总线(SystemManagementBus,SMBUS)物理链路读取内存条上的模组存在的串行检测(SerialPresenceDetect,SPD)信息,从而计算出当前物理内存的大小,BIOS启动过程中,需要根据产品的需求,预先保留部分内存区域用作特殊用途,通常是直接修改BIOS的执行代码,即这些内存保留区都是在BIOS的执行代码中静态固定的,一旦BIOS的执行代码文件生成,当前系统的内存保留区就已经固定,BIOS正常启动完毕后,会统一将系统的内存使用情况通过内存映射表(Memorymappingtable)发送给操作系统(OperatingSystem,OS),告诉OS当前系统的内存分布和属性,供OS使用。这套机制是基于服务器或通用个人电脑(PersonalComputer,PC)领域提出的,当其应用在电信平台时,就暴露出一些明显的缺陷。
当BIOS的执行代码文件烧录到X86单板后,X86单板每次启动后,内存保留区都是固定的,因此体现给OS的内存使用情况也是一致的,即不同平台的BIOS文件不可通用,而在电信领域往往对内存有一些定制化的需求,如需要在BIOS启动过程中动态预留一块或几块内存区域用于记录临终遗言、系统启动日志,系统启动日志用于记录系统配置更改信息或者系统出错信息,不同的电信平台对这些内存保留区域的起始地址和大小的需求都不一样,即使在同一平台,随着应用场景的切换这些内存保留区域也需要做相应的变更,此时原有的UEFI内存保留机制已无法满足这些要求。
发明内容
本发明实施例的目的在于提供一种管理内存的方法,旨在解决如何设计一套动态管理内存的方法从而实现在不升级BIOS的情况下,动态决定哪些内存对OS可用的问题。
第一方面,一种管理内存的方法,所述方法包括:
当基本输入输出系统BIOS启动时下载内存保留区的配置文件,所述配置文件用于定义所述内存保留区;
解析所述配置文件,根据解析后的配置文件的内容更新内存保留区记录表;
根据更新后的内存保留区记录表修改内存映射表;
将修改后的内存映射表发送给OS,使得所述OS获取内存的使用情况。
结合第一方面,在第一方面的第一种可能的实现方式中,所述解析所述配置文件,根据解析后的配置文件的内容更新内存保留区记录表,包括:
解析所述配置文件,调用内存保留区注册驱动中的注册接口和注销接口,将解析后的配置文件的内容注册或者注销到内存保留区记录表中。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述将解析后的配置文件的内容注册到内存保留区记录表中,包括:
判断内存保留区记录表中的内存保留区是否为已满;
当判断所述内存保留区已满,则返回存储已满;
当判断所述内存保留区未满,则根据注册接口调用者提供的GUID判断,与所述内存保留区记录表中的参数进行比较,若有重复,则返回重复注册;
当判断所述内存保留区无重复,则根据所述注册接口调用者提供的内存保留区的地址和内存保留区的大小,与所述内存保留区记录表中的参数进行比较,当所述内存保留区的地址大于第i块内存保留区的地址和第i块内存保留区的大小之和,或者当所述第i块内存保留区的地址大于所述内存保留区的地址和内存保留区的大小之和时,则将所述解析后的配置文件的内容注册到所述内存保留区记录表中,否则返回注册空间重叠错误。
结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述将解析后的配置文件的内容注销到内存保留区记录表中,包括:
根据注销接口调用者提供的注销内存保留区的参数,与所述内存保留区记录表中的参数进行匹配;
当找到匹配项,则删除所述匹配项的节点;
当未找到匹配项,则返回注销错误。
结合第一方面或者第一方面的第一种可能的实现方式或者第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据更新后的内存保留区记录表修改内存映射表,包括:
调用所述内存保留区注册驱动中的查询接口,查询更新后的内存保留区记录表;
根据更新后的内存保留区记录表修改内存映射表。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述内存保留区记录表存储在非易失性存储器,并将所述非易失性存储器分为两块,其中一块用来存储所述内存保留区记录表,另一块用来存储BIOS代码。
结合第一方面或者第一方面的第一种可能的实现方式或者第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式或者第一方面的第四种可能的实现方式或者第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述方法还包括:
调用所述内存保留区注册驱动中的查询接口,以判断是否需要清零内存。
第二方面,一种管理内存的装置,所述装置包括:
下载单元,用于当基本输入输出系统BIOS启动时下载内存保留区的配置文件,所述配置文件用于定义所述内存保留区;
解析单元,用于解析所述配置文件,根据解析后的配置文件的内容更新内存保留区记录表;
修改单元,用于根据更新后的内存保留区记录表修改内存映射表;
发送单元,用于将修改后的内存映射表发送给OS,使得OS获取内存的使用情况。
结合第二方面,在第二方面的第一种可能的实现方式中,所述解析单元具体用于:
解析所述配置文件,调用内存保留区注册驱动中的注册接口和注销接口,将解析后的配置文件的内容注册或者注销到内存保留区记录表中。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述解析单元中执行步骤将解析后的配置文件的内容注册到内存保留区记录表中,包括:
判断内存保留区记录表中的内存保留区是否为已满;
当判断所述内存保留区已满,则返回存储已满;
当判断所述内存保留区未满,则根据注册接口调用者提供的GUID判断,与所述内存保留区记录表中的参数进行比较,若有重复,则返回重复注册;
当判断所述内存保留区无重复,则根据所述注册接口调用者提供的内存保留区的地址和内存保留区的大小,与所述内存保留区记录表中的参数进行比较,当所述内存保留区的地址大于第i块内存保留区的地址和第i块内存保留区的大小之和,或者当所述第i块内存保留区的地址大于所述内存保留区的地址和内存保留区的大小之和时,则将所述解析后的配置文件的内容注册到所述内存保留区记录表中,否则返回注册空间重叠错误。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述解析单元中执行步骤将解析后的配置文件的内容注销到内存保留区记录表中,包括:
根据注销接口调用者提供的注销内存保留区的参数,与所述内存保留区记录表中的参数进行匹配;
当找到匹配项,则删除所述匹配项的节点;
当未找到匹配项,则返回注销错误。
结合第二方面或者第二方面的第一种可能的实现方式或者第二方面的第二种可能的实现方式或者第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述修改单元具体用于:
调用所述内存保留区注册驱动中的查询接口,查询更新后的内存保留区记录表;
根据更新后的内存保留区记录表修改内存映射表。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述内存保留区记录表存储在非易失性存储器,并将所述非易失性存储器分为两块,其中一块用来存储所述内存保留区记录表,另一块用来存储BIOS代码。
结合第二方面或者第二方面的第一种可能的实现方式或者第二方面的第二种可能的实现方式或者第二方面的第三种可能的实现方式或者第二方面的第四种可能的实现方式或者第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述装置还包括清零单元,所述清零单元用于:
调用所述内存保留区注册驱动中的查询接口,以判断是否需要清零内存。
与现有技术相比,本发明实施例提供一种管理内存的方法,所述方法通过在BIOS启动时从后台下载内存保留区的配置文件,解析所述配置文件,并根据解析后的配置文件的内容更新内存保留区记录表,根据更新后的内存保留区记录表修改内存映射表,将修改后的内存映射表发送给OS,使得所述OS获取内存的使用情况,从而实现在不升级BIOS的情况下,动态决定哪些内存对OS可用,解决了电信平台对内存灵活使用的要求。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种管理内存的方法示意图;
图2是本发明实施例提供的一种管理内存的方法流程图;
图3是本发明实施例提供的一种接口模型;
图4是本发明实施例提供的一种管理内存的装置结构图;
图5是本发明实施例提供的一种管理内存的装置结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
参考图1,图1是本发明实施例提供的一种管理内存的方法示意图。
本发明实施例设计一种基本输入输出系统(BasicInputOutputSystem,BIOS)启动过程中动态注册或者注销内存保留区的机制。内存保留区记录表存放在非易失性存储器上,这个存储器可以与存放BIOS代码的存储器属于同一个存储器,也可以在不同的存储器上,优先考虑存放所述内存保留区记录表的存储器和存放BIOS代码的存储器属于不同的存储器,如一般BIOS代码存放在串行外设接口(SerialPeripheralInterface,SPI)flash,内存保留区记录表放在非或Norflash,这样设计是出于对BIOS文件安全性的考虑,因为所述内存保留区记录表会被修改,如果修改的时候断电,有可能会破坏BIOS代码,所以优先考虑将所述内存保留区记录表和BIOS代码存放在不同的介质中。所述方法包括如下步骤:
1、BIOS启动过程中从后台下载内存保留的配置文件;
其中,所述配置文件包括存放临终遗言数据内存的信息、存放日志记录数据内存的信息等。
2、解析配置文件后,调用内存保留区注册驱动中的注册接口或注销接口,将不同功用的内存保留区的信息注册或注销到内存保留区记录表中;
3、在启动0S前,BIOS调用内存保留区注册驱动中的查询接口,查询到当前内存存储的内存保留区记录表,同步修改内存映射表;
4、OS根据所述内存映射表,知道当前系统的内存使用情况;
5、同时BIOS下内存清零模块也可调用内存保留区注册驱动中的查询接口,来决定在引导OS前哪些内存需要清零,哪些不需要清零。
参考图2,图2是本发明实施例提供的一种管理内存的方法流程图。如图2所示,所述方法包括以下步骤:
步骤201,当基本输入输出系统BIOS启动时下载内存保留区的配置文件,所述配置文件用于定义所述内存保留区;
BIOS启动时,从后台下载内存保留区的配置文件,所述配置文件用于定义所述内存保留区。
步骤202,解析所述配置文件,根据解析后的配置文件的内容更新内存保留区记录表;
本步骤中,所述解析所述配置文件,根据解析后的配置文件的内容更新内存保留区记录表,包括:
解析所述配置文件,调用内存保留区注册驱动中的注册接口和注销接口,将解析后的配置文件的内容注册或者注销到内存保留区记录表中。
可选地,所述将解析后的配置文件的内容注册到内存保留区记录表中,包括:
判断内存保留区记录表中的内存保留区是否为已满;
当判断所述内存保留区已满,则返回存储已满;
当判断所述内存保留区未满,则根据注册接口调用者提供的全局唯一标识符(GloballyUniqueIdentifier,GUID)判断,与所述内存保留区记录表中的参数进行比较,若有重复,则返回重复注册;
当判断所述内存保留区无重复,则根据所述注册接口调用者提供的内存保留区的地址和内存保留区的大小,与所述内存保留区记录表中的参数进行比较,当所述内存保留区的地址大于第i块内存保留区的地址和第i块内存保留区的大小之和,或者当所述第i块内存保留区的地址大于所述内存保留区的地址和内存保留区的大小之和时,则将所述解析后的配置文件的内容注册到所述内存保留区记录表中,否则返回注册空间重叠错误。
其中,若根据注册接口调用者提供的GUID和所述内存保留区记录表中的GUID参数进行比较,若GUID参数一致,则通知注册接口调用者当前GUID已存在内存保留区中,不允许调用者复叠注册。
参考图3,图3是本发明实施例提供的一种接口模型。如图3所示,在预初始化阶段(Pre-EFI-Initialization,PEI)阶段,注册步骤如下:
1、将所述内存保留区域表由flash导到传递模块(hand-offblocks,Hob)中,判断所述内存保留区域表的内存保留区数量是否已满,如果是则返回存储已满,否则执行步骤2;
2、根据接口调用者提供的保留区GUID,与所述Hob中的内存保留区记录表的参数进行比较,如果重复,返回重复注册。如果没有重复,则执行步骤3;
3、根据接口调用者提供的内存保留区的地址和内存保留区大小,与所述Hob中的内存保留记录表的参数进行比较,只有在满足下面两种情况下,才执行步骤4,否则返回注册空间重叠错误;
An+1>Ai+Li
Ai>An+1+Ln+1
其中,0<i<=n,n+1<=最大保留区数量,n表示所述hob中已经存储的内存保留区数量,Ai表示第i块内存保留区地址,Li表示第i块内存保留区大小;
4、将新增的内存保留区的参数添加到所述Hob中的内存保留记录表中。
可选地,所述将解析后的配置文件的内容注销到内存保留区记录表中,包括:
根据注销接口调用者提供的注销内存保留区的参数,与所述内存保留区记录表中的参数进行匹配;
当找到匹配项,则删除所述匹配项的节点;
当未找到匹配项,则返回注销错误。
参考图3,注销步骤如下:
根据接口调用者提供的需要注销内存保留区的参数跟存储在Hob中的内存保留区记录表中的参数中进行匹配,存储在Hob中的内存保留区记录表中的所有参数都必须参入匹配,如果找到匹配项,删除该匹配项的节点;如果找不到则返回错误。
其中,内存保留区记录表中存储的数据是多个相同结构的数据块,所述节点是指其中一个数据库。
步骤203,根据所述内存保留区记录表修改内存映射表;
可选地,所述根据更新后的内存保留区记录表修改内存映射表,包括:
调用所述内存保留区注册驱动中的查询接口,查询更新后的内存保留区记录表;
根据更新后的内存保留区记录表修改内存映射表。
参考图3,查询步骤如下:
1、根据接口调用者提供的内存保留区的参数跟存储在Hob中的内存保留区记录表中的参数进行匹配,如果找到匹配项,返回该匹配项的所有参数信息及匹配项数,所述参数信息是指数据块的内容,所述匹配项数是指数据块的个数;如果找不到则返回错误;
2、同时所述查询接口中还提供全部查询功能,上述步骤查询结果中输入的全部参数均返回为错误时,则给出所述内存保留区记录表的全部参数信息和总项数。
如图3所示,在驱动执行坏境(DriverExacutiionEnvironment,DXE)阶段,注册、注销和查询接口基本功能与PEI阶段相同,唯一的区别是DXE阶段每调用一次注册、注销接口,都会将存储Hob中内存保留区记录表实时更新到flash中。
其中,所述内存保留区记录表存储在非易失性存储器nonvolatileram,并将所述非易失性存储器分为两块,其中一块用来存储所述内存保留区记录表,另一块用来存储BIOS代码。
步骤204,将修改后的内存映射表发送给OS,使得所述OS获取内存的使用情况。
作为一种可优选的实施例,所述方法还包括:
调用所述内存保留区注册驱动中的查询接口,以判断是否需要清零内存。
本发明实施例提供一种管理内存的方法,所述方法通过在BIOS启动时从后台下载内存保留区的配置文件,解析所述配置文件,并根据解析后的配置文件的内容更新内存保留区记录表,根据更新后的内存保留区记录表修改内存映射表,将修改后的内存映射表发送给OS,使得所述OS获取内存的使用情况,从而实现在不升级BIOS的情况下,动态决定哪些内存对OS可用,解决了电信平台对内存灵活使用的要求。
参考图4,图4是本发明实施例提供的一种管理内存的装置结构图。如图4所示,所述装置包括如下单元:
下载单元401,用于当基本输入输出系统BIOS启动时下载内存保留区的配置文件,所述配置文件用于定义所述内存保留区;
BIOS启动时,从后台下载内存保留区的配置文件,所述配置文件用于定义所述内存保留区。
解析单元402,用于解析所述配置文件,根据解析后的配置文件的内容更新内存保留区记录表;
可选地,所述解析单元402具体用于:
解析所述配置文件,调用内存保留区注册驱动中的注册接口和注销接口,将解析后的配置文件的内容注册或者注销到内存保留区记录表中。
可选地,所述解析单元402中执行步骤将解析后的配置文件的内容注册到内存保留区记录表中,包括:
判断内存保留区记录表中的内存保留区是否为已满;
当判断所述内存保留区已满,则返回存储已满;
当判断所述内存保留区未满,则根据注册接口调用者提供的GUID判断,与所述内存保留区记录表中的参数进行比较,若有重复,则返回重复注册;
当判断所述内存保留区无重复,则根据所述注册接口调用者提供的内存保留区的地址和内存保留区的大小,与所述内存保留区记录表中的参数进行比较,当所述内存保留区的地址大于第i块内存保留区的地址和第i块内存保留区的大小之和,或者当所述第i块内存保留区的地址大于所述内存保留区的地址和内存保留区的大小之和时,则将所述解析后的配置文件的内容注册到所述内存保留区记录表中,否则返回注册空间重叠错误。
参考图3,图3是本发明实施例提供的一种接口模型。如图3所示,在PEI阶段,注册步骤如下:
1、判断所述内存保留区域表的内存保留区数量是否已满,如果是则返回存储已满,否则执行步骤2;
2、根据接口调用者提供的保留区GUID,与所述Hob中的内存保留区记录表的参数进行比较,如果重复,返回重复注册。如果没有重复,则执行步骤3;
3、根据接口调用者提供的内存保留区的地址和内存保留区大小,与所述Hob中的内存保留记录表的参数进行比较,只有在满足下面两种情况下,才执行步骤4,否则返回注册空间重叠错误;
An+1>Ai+Li
Ai>An+1+Ln+1
其中,0<i<=n,n+1<=最大保留区数量,n表示所述hob中已经存储的内存保留区数量,Ai表示第i块内存保留区地址,Li表示第i块内存保留区大小;
4、将新增的内存保留区的参数添加到所述Hob中的内存保留记录表中。
可选地,所述解析单元402中执行步骤将解析后的配置文件的内容注销到内存保留区记录表中,包括:
根据注销接口调用者提供的注销内存保留区的参数,与所述内存保留区记录表中的参数进行匹配;
当找到匹配项,则删除所述匹配项的节点;
当未找到匹配项,则返回注销错误。
参考图3,注销步骤如下:
根据接口调用者提供的需要注销内存保留区的参数跟存储在Hob中的内存保留区记录表中的参数中进行匹配,存储在Hob中的内存保留区记录表中的所有参数都必须参入匹配,如果找到匹配项,删除该匹配项的节点;如果找不到则返回错误。
修改单元403,用于根据更新后的内存保留区记录表修改内存映射表;
可选地,所述修改单元403具体用于:
调用所述内存保留区注册驱动中的查询接口,查询更新后的内存保留区记录表;
根据更新后的内存保留区记录表修改内存映射表。
参考图3,查询步骤如下:
1、根据接口调用者提供的内存保留区的参数跟存储在Hob中的内存保留区记录表中的参数进行匹配,如果找到匹配项,返回该匹配项的所有参数信息及匹配项数;如果找不到则返回错误;
2、同时所述查询接口中还提供全部查询功能,上述步骤查询结果中输入的全部参数均返回为错误时,则给出所述内存保留区记录表的全部参数信息和总项数。
如图3所示,在DXE阶段,注册、注销和查询接口基本功能与PEI阶段相同,唯一的区别是DXE阶段每调用一次注册、注销接口,都会将存储Hob中内存保留区记录表实时更新到flash中。
其中,所述内存保留区记录表存储在非易失性存储器,并将所述非易失性存储器分为两块,其中一块用来存储所述内存保留区记录表,另一块用来存储BIOS代码。
发送单元404,用于将修改后的内存映射表发送给OS,使得OS获取内存的使用情况。
作为一种可选的实施例,所述装置还包括清零单元405,所述清零单元405用于:
调用所述内存保留区注册驱动中的查询接口,以判断是否需要清零内存。
本发明实施例提供一种管理内存的装置,所述装置通过在BIOS启动时从后台下载内存保留区的配置文件,解析所述配置文件,并根据解析后的配置文件的内容更新内存保留区记录表,根据更新后的内存保留区记录表修改内存映射表,将修改后的内存映射表发送给OS,使得所述OS获取内存的使用情况,从而实现在不升级BIOS的情况下,动态决定哪些内存对OS可用,解决了电信平台对内存灵活使用的要求。
图5是本发明实施例提供的一种管理内存的装置结构图。参考图5,图5是本发明实施例提供的一种管理内存的装置500,本发明具体实施例并不对所述管理内存的装置的具体实现做限定。所述管理内存的装置500包括:
处理器(processor)501,通信接口(CommunicationsInterface)502,存储器(memory)503,总线504。
处理器501,通信接口502,存储器503通过总线504完成相互间的通信。
通信接口502,用于与其他设备进行通信;
处理器501,用于执行程序。
具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。
处理器501可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器503,用于存放程序。存储器503可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。程序具体可以包括:
当基本输入输出系统BIOS启动时下载内存保留区的配置文件,所述配置文件用于定义所述内存保留区;
解析所述配置文件,根据解析后的配置文件的内容更新内存保留区记录表;
根据更新后的内存保留区记录表修改内存映射表;
将修改后的内存映射表发送给OS,使得所述OS获取内存的使用情况。
所述解析所述配置文件,根据解析后的配置文件的内容更新内存保留区记录表,包括:
解析所述配置文件,调用内存保留区注册驱动中的注册接口和注销接口,将解析后的配置文件的内容注册或者注销到内存保留区记录表中。
所述将解析后的配置文件的内容注册到内存保留区记录表中,包括:
判断内存保留区记录表中的内存保留区是否为已满;
当判断所述内存保留区已满,则返回存储已满;
当判断所述内存保留区未满,则根据注册接口调用者提供的GUID判断,与所述内存保留区记录表中的参数进行比较,若有重复,则返回重复注册;
当判断所述内存保留区无重复,则根据所述注册接口调用者提供的内存保留区的地址和内存保留区的大小,与所述内存保留区记录表中的参数进行比较,当所述内存保留区的地址大于第i块内存保留区的地址和第i块内存保留区的大小之和,或者当所述第i块内存保留区的地址大于所述内存保留区的地址和内存保留区的大小之和时,则将所述解析后的配置文件的内容注册到所述内存保留区记录表中,否则返回注册空间重叠错误。
所述将解析后的配置文件的内容注销到内存保留区记录表中,包括:
根据注销接口调用者提供的注销内存保留区的参数,与所述内存保留区记录表中的参数进行匹配;
当找到匹配项,则删除所述匹配项的节点;
当未找到匹配项,则返回注销错误。
所述根据更新后的内存保留区记录表修改内存映射表,包括:
调用所述内存保留区注册驱动中的查询接口,查询更新后的内存保留区记录表;
根据更新后的内存保留区记录表修改内存映射表。
所述内存保留区记录表存储在非易失性存储器,并将所述非易失性存储器分为两块,其中一块用来存储所述内存保留区记录表,另一块用来存储BIOS代码。
所述方法还包括:
调用所述内存保留区注册驱动中的查询接口,以判断是否需要清零内存。
前述实施例仅为本发明的优选实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明要求包含范围之内。
Claims (10)
1.一种管理内存的方法,其特征在于,所述方法包括:
当基本输入输出系统BIOS启动时下载内存保留区的配置文件,所述配置文件用于定义所述内存保留区;
解析所述配置文件,根据解析后的配置文件的内容更新内存保留区记录表;
根据更新后的内存保留区记录表修改内存映射表;
将修改后的内存映射表发送给操作系统OS,使得所述OS获取内存的使用情况;
所述解析所述配置文件,根据解析后的配置文件的内容更新内存保留区记录表,包括:
解析所述配置文件,调用内存保留区注册驱动中的注册接口和注销接口,将解析后的配置文件的内容注册或者注销到内存保留区记录表中;
其中,将解析后的配置文件的内容注册到内存保留区记录表中,包括:
判断内存保留区记录表中的内存保留区是否为已满;
当判断所述内存保留区已满,则返回存储已满;
当判断所述内存保留区未满,则根据注册接口调用者提供的全局唯一标识符GUID判断,与所述内存保留区记录表中的参数进行比较,若有重复,则返回重复注册;
当判断所述内存保留区无重复,则根据所述注册接口调用者提供的内存保留区的地址和内存保留区的大小,与所述内存保留区记录表中的参数进行比较,当所述内存保留区的地址大于第i块内存保留区的地址和第i块内存保留区的大小之和,或者当所述第i块内存保留区的地址大于所述内存保留区的地址和内存保留区的大小之和时,则将所述解析后的配置文件的内容注册到所述内存保留区记录表中,否则返回注册空间重叠错误;
其中,0<i<=n,n表示已经存储的内存保留区数量。
2.根据权利要求1所述的方法,其特征在于,所述将解析后的配置文件的内容注销到内存保留区记录表中,包括:
根据注销接口调用者提供的注销内存保留区的参数,与所述内存保留区记录表中的参数进行匹配;
当找到匹配项,则删除所述匹配项的节点;
当未找到匹配项,则返回注销错误。
3.根据权利要求1或2所述的方法,其特征在于,所述根据更新后的内存保留区记录表修改内存映射表,包括:
调用所述内存保留区注册驱动中的查询接口,查询更新后的内存保留区记录表;
根据更新后的内存保留区记录表修改内存映射表。
4.根据权利要求3所述的方法,其特征在于,所述内存保留区记录表存储在非易失性存储器,并将所述非易失性存储器分为两块,其中一块用来存储所述内存保留区记录表,另一块用来存储BIOS代码。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
调用所述内存保留区注册驱动中的查询接口,以判断是否需要清零内存。
6.一种管理内存的装置,其特征在于,所述装置包括:
下载单元,用于当基本输入输出系统BIOS启动时下载内存保留区的配置文件,所述配置文件用于定义所述内存保留区;
解析单元,用于解析所述配置文件,根据解析后的配置文件的内容更新内存保留区记录表;
修改单元,用于根据更新后的内存保留区记录表修改内存映射表;
发送单元,用于将修改后的内存映射表发送给OS,使得OS获取内存的使用情况;
所述解析单元具体用于:
解析所述配置文件,调用内存保留区注册驱动中的注册接口和注销接口,将解析后的配置文件的内容注册或者注销到内存保留区记录表中;
其中,所述解析单元中执行步骤将解析后的配置文件的内容注册到内存保留区记录表中,包括:
判断内存保留区记录表中的内存保留区是否为已满;
当判断所述内存保留区已满,则返回存储已满;
当判断所述内存保留区未满,则根据注册接口调用者提供的全局唯一标识符GUID判断,与所述内存保留区记录表中的参数进行比较,若有重复,则返回重复注册;
当判断所述内存保留区无重复,则根据所述注册接口调用者提供的内存保留区的地址和内存保留区的大小,与所述内存保留区记录表中的参数进行比较,当所述内存保留区的地址大于第i块内存保留区的地址和第i块内存保留区的大小之和,或者当所述第i块内存保留区的地址大于所述内存保留区的地址和内存保留区的大小之和时,则将所述解析后的配置文件的内容注册到所述内存保留区记录表中,否则返回注册空间重叠错误;
其中,0<i<=n,n表示已经存储的内存保留区数量。
7.根据权利要求6所述的装置,其特征在于,所述解析单元中执行步骤将解析后的配置文件的内容注销到内存保留区记录表中,包括:
根据注销接口调用者提供的注销内存保留区的参数,与所述内存保留区记录表中的参数进行匹配;
当找到匹配项,则删除所述匹配项的节点;
当未找到匹配项,则返回注销错误。
8.根据权利要求6或7所述的装置,其特征在于,所述修改单元具体用于:
调用所述内存保留区注册驱动中的查询接口,查询更新后的内存保留区记录表;
根据更新后的内存保留区记录表修改内存映射表。
9.根据权利要求8所述的装置,其特征在于,所述内存保留区记录表存储在非易失性存储器,并将所述非易失性存储器分为两块,其中一块用来存储所述内存保留区记录表,另一块用来存储BIOS代码。
10.根据权利要求6或7所述的装置,其特征在于,所述装置还包括清零单元,所述清零单元用于:
调用所述内存保留区注册驱动中的查询接口,以判断是否需要清零内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310104823.4A CN103176915B (zh) | 2013-03-28 | 2013-03-28 | 一种管理内存的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310104823.4A CN103176915B (zh) | 2013-03-28 | 2013-03-28 | 一种管理内存的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103176915A CN103176915A (zh) | 2013-06-26 |
CN103176915B true CN103176915B (zh) | 2016-06-22 |
Family
ID=48636808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310104823.4A Active CN103176915B (zh) | 2013-03-28 | 2013-03-28 | 一种管理内存的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103176915B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572166A (zh) * | 2014-03-21 | 2015-04-29 | 中电科技(北京)有限公司 | 一种基于飞腾台式计算机的uefi固件实现方法 |
CN111444119B (zh) * | 2020-03-25 | 2023-06-02 | 北京计算机技术及应用研究所 | 一种基于内核参数的飞腾平台非易失内存注册方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183972A (zh) * | 2007-11-16 | 2008-05-21 | 中兴通讯股份有限公司 | 一种远程控制服务器启动的方法 |
CN102193814A (zh) * | 2010-03-09 | 2011-09-21 | 上海拜翰网络科技有限公司 | 嵌入式虚拟化内存动态分配方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005208894A (ja) * | 2004-01-22 | 2005-08-04 | Canon Inc | 周辺装置制御方法、制御プログラム及びその装置 |
TWI342518B (en) * | 2007-05-16 | 2011-05-21 | Inventec Corp | Adjusting method for set-up default value of bios and mainboard using the same method |
-
2013
- 2013-03-28 CN CN201310104823.4A patent/CN103176915B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183972A (zh) * | 2007-11-16 | 2008-05-21 | 中兴通讯股份有限公司 | 一种远程控制服务器启动的方法 |
CN102193814A (zh) * | 2010-03-09 | 2011-09-21 | 上海拜翰网络科技有限公司 | 嵌入式虚拟化内存动态分配方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103176915A (zh) | 2013-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109034814B (zh) | 基于以太坊虚拟机的智能合约处理方法和装置 | |
CN109669709B (zh) | 一种区块链升级的数据迁移方法及数据迁移系统 | |
CN104881318B (zh) | 一种接口调用方法、装置及终端 | |
CN100492290C (zh) | 软件动态演化中构件运行时状态的获取和转换方法 | |
CN104268019A (zh) | 一种软件运行方法、装置及终端 | |
CN105335187A (zh) | 一种应用的处理方法及装置 | |
CN104750528A (zh) | 一种Android程序中的组件管理方法和装置 | |
CN102457541A (zh) | 无盘工作站启动过程中避免发生资源竞争的系统及方法 | |
CN108549568A (zh) | 应用入口处理方法、装置、存储介质及电子设备 | |
CN112242920B (zh) | 一种云平台部署方法、装置及节点 | |
CN103677978A (zh) | 一种对进程进行保护的方法和电子设备 | |
CN110908734A (zh) | 基于插件化的应用组合方法、装置、终端设备及存储介质 | |
CN102158490B (zh) | 基于OSGi的服务转换方法和装置 | |
CN103647811A (zh) | 一种实现应用访问后台服务的方法和装置 | |
CN106657433A (zh) | 一种多网卡环境下物理网卡的命名方法和装置 | |
CN116107590A (zh) | 软件产品开发部署中兼容微服务和单体架构的实现方法及系统 | |
CN103176915B (zh) | 一种管理内存的方法及装置 | |
CN112416612A (zh) | 服务调用方法、装置、计算机设备和可读存储介质 | |
CN101986662B (zh) | 一种widget实例运行方法及系统 | |
CN102200918B (zh) | 服务器部署应用程序的方法及装置 | |
CN109740342A (zh) | 获取shell执行权限的方法、系统、计算机装置及存储介质 | |
CN112965760A (zh) | 修改根目录的方法、装置、电子设备和可读存储介质 | |
CN109522507B (zh) | 一种网页组件统一管理的方法 | |
CN104281587A (zh) | 一种建立连接的方法及装置 | |
CN113282435B (zh) | 应用异常的处理方法和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |