专利名称:管理热备份内存的方法和电子设备的制作方法
技术领域:
本发明涉及计算机技术,尤其涉及管理热备份内存的方法和电子设备。
背景技术:
根据统计发现,在计算机发生的硬件故障中,内存故障位居首位。内存故障可能导 致计算机数据丢失或者计算机当机,进而给用户造成损失。为保证计算机运行的稳定性, 人们采取了很多种技术,比如奇偶校验技术、错误检查和纠错(ECC,Error Checking and Correcting)技术、内存热备份(Sparing)技术和内存镜像(Mirroring)技术等。其中,内 存热备份技术是指,在计算机中,将一部分内存空间作为备份内存空间,备份内存空间在非 备份内存空间正常运行时空闲,当非备份内存空间发生故障时,备份内存空间才被启用,以 代替非备份内存空间进行工作。一般来说,非备份内存空间与备份内存空间是相互独立的 两个内存条,为便于下文描述,这里将非备份内存空间称为主内存,备份内存空间称为热备 份内存。内存热备份技术可以有效地提高计算机运行的稳定性。但从另一方面来看,在主 内存正常运行期间,热备份内存会闲置,这样会造成资源的浪费。
发明内容
本发明提供管理热备份内存的方法和电子设备,用以减少资源的浪费。一种管理热备份内存的方法,所述方法应用于一包括主内存及热备份内存的电子 设备中,包括检测所述主内存是否在正常工作;在所述主内存正常工作时,检测是否有应 用程序申请将所述热备份内存作为缓存使用的申请;在检测到有应用程序申请将所述热备 份内存作为缓存使用的申请时,处理所述申请,以决定是否同意所述热备份内存作为所述 应用程序的缓存;在同意所述热备份内存作为所述应用程序的缓存时,将所述热备份内存 作为所述应用程序的缓存使用。一种电子设备,包括主内存及热备份内存,所述电子设备还包括第一检测单元, 用于检测所述主内存是否在正常工作;第二检测单元,在所述第一检测单元检测出所述主 内存正常工作时,检测是否有应用程序申请将所述热备份内存作为缓存使用的申请;第一 处理单元,用于在所述第二检测单元检测到有应用程序申请将所述热备份内存作为缓存使 用的申请时,处理所述申请,以决定是否同意所述热备份内存作为所述应用程序的缓存;第 二处理单元,用于在所述第一处理单元同意所述热备份内存作为所述应用程序的缓存时, 将所述热备份内存作为所述应用程序的缓存使用。在本发明中,热备份内存在主内存正常运行期间可以被使用,减少了资源的浪费。
图IA为本发明的一种管理热备份内存的方法的流程图;图IB为本发明的一种电子设备的逻辑结构示意3
图1为本发明的一种热备份内存的处理方法的流程图;图2为本发明的一种热备份内存的处理装置的结构示意图;图3为本发明的一种热备份内存的管理方法的流程图;图4为本发明的一种内存控制器的结构示意图;图5为本发明的另一种热备份内存的处理方法的流程图;图6为本发明的另一种热备份内存的处理装置的结构示意图;图7为本发明的另一种热备份内存的管理方法的流程图;图8为本发明的另一种内存控制器的结构示意图;图9为本发明的第一个优选实施例的流程图;图10为本发明的第二个优选实施例的流程图。
具体实施例方式首先结合图1A,对本发明的一种管理热备份内存的方法进行说明。首先需要说明 的是,这种方法可以应用于一包括主内存及热备份内存的电子设备中。如图IA所示,这种 方法包括SlOlA 检测主内存是否在正常工作;S102A:在所述主内存正常工作时,检测是否有应用程序申请将热备份内存作为缓 存使用的申请;S103A:在检测到有应用程序申请将所述热备份内存作为缓存使用的申请时,处理 所述申请,以决定是否同意所述热备份内存作为所述应用程序的缓存;S104A:在同意所述热备份内存作为所述应用程序的缓存时,将所述热备份内存作 为所述应用程序的缓存使用。在实际应用中,可以有多种方式检测是否有应用程序申请将所述热备份内存作为 缓存使用的申请。例如,检测是否有应用程序提供的标识所需要申请的内存容量的数据。在实际应用中,可以有多种方式实现将所述热备份内存作为所述应用程序的缓存 使用。例如,将允许使用的内存的起始地址提供给所述应用程序,并在用于维护热备份内存 使用情况的状态表中记录分配给所述应用程序使用的内存空间。进一步的,图IA所示的方法还包括禁止所述应用程序继续使用所述热备份内 存。例如,在检测到主内存不能正常工作时,禁止所述应用程序使用所述热备份内存。再例 如,获得所述应用程序发出的不再继续使用所述热备份内存的信息;禁止所述应用程序继 续使用所述热备份内存。本发明还提供一种电子设备,包括主内存及热备份内存。如图IB所示,这种电 子设备还包括第一检测单元101B,用于检测所述主内存是否在正常工作;第二检测单元 102B,在第一检测单元IOlB检测出所述主内存正常工作时,检测是否有应用程序申请将所 述热备份内存作为缓存使用的申请;第一处理单元103B,用于在第二检测单元102B检测 到有应用程序申请将所述热备份内存作为缓存使用的申请时,处理所述申请,以决定是否 同意所述热备份内存作为所述应用程序的缓存;第二处理单元104B,用于在第一处理单元 103B同意所述热备份内存作为所述应用程序的缓存时,将所述热备份内存作为所述应用程 序的缓存使用。
可选的,第二检测单元102B具体可以用于检测是否有应用程序提供的标识所需 要申请的内存容量的数据。可选的,第二处理单元104B具体可以用于将允许使用的内存的起始地址提供给 所述应用程序,并在用于维护热备份内存使用情况的状态表中记录分配给所述应用程序使 用的内存空间。图IB所示的电子设备进一步包括第三处理单元105B,用于禁止所述应用程序继 续使用所述热备份内存。具体的,在第一检测单元IOlB检测到主内存不能正常工作时,第 三处理单元105B可以禁止所述应用程序使用所述热备份内存。另外,第三处理单元105B 获得所述应用程序发出的不再继续使用所述热备份内存的信息后,也可以禁止所述应用程 序继续使用所述热备份内存。实际上,本发明可以从内存控制器、应用程序等多个角度来描述。由于应用程序需 要运行在电子设备的功能单元上,所以,在下面的实施例中,应用程序的功能都由功能单元 来执行。首先从应用程序(功能单元)的角度来描述本发明。如图1所示,一种热备份内 存的处理方法包括SlOl 向控制内存的内存控制器申请使用热备份内存;S102 如果申请成功,则使用热备份内存。SlOl的执行时机既可以是在主内存正常运行期间,也可以是在主内存发生故障期 间,即热备份内存代替主内存工作期间。S102的执行时机可以是在主内存正常运行期间。 SlOl和S102的执行主体可以是电子设备中的某一个功能单元,例如CPU等,再进一步来说, SlOl和S102的执行主体可以是电子设备中的某一个功能单元及运行在功能单元上的计算 机程序。这里的电子设备一般是指服务器。内存控制器上可以设置一个寄存器,为便于下文描述,这里将这个寄存器称为第 一寄存器。当需要申请使用热备份内存时,可以将标识所需要申请的内存容量的数据写入 所述第一寄存器中。例如,假设需要申请1兆字节(1MB)的内存空间,那么就可以将数据 “1”写入第一寄存器中。当然,申请使用热备份内存可以有多种方式来实现,这里不再一一 举例说明。内存控制器收到标识所需要申请的内存容量的数据后,可以判断热备份内存中是 否具有所需容量的内存空间可供使用,如果有,则可以将所需容量的内存空间的起始地址 写入第一寄存器中,如果没有,则可以将用于标识没有合适的内存空间的数据写入第一寄 存器中。需要说明的是,起始地址可以使用偏移量来表示,例如m-i等,用于标识没有合适 的内存空间的数据可以是预先定义的数据。当然,起始地址还可以有其他表示方式,这里不 再一一举例说明。在向控制内存的内存控制器申请使用热备份内存后,可以读取所述第一寄存器中 的由所述内存控制器写入的数据,如果所述数据是一个地址,即上述的起始地址,则表示申 请成功,如果所述数据不是一个地址,例如是标识没有合适的内存空间的数据,则表示申请 失败。申请成功后,就可以使用热备份内存了,具体来说,可以使用分配的热备份内存中 的内存空间。如何使用内存空间可以由本领域技术人员根据实际需要而设计,例如,将所
5申请到的内存空间作为高速缓冲存储器,从所述高速缓冲存储器中读取需要的硬盘中的数 据,如果没有命中,则从硬盘中读取所述需要的数据到所述高速缓冲存储器,再从所述高速 缓冲存储器中读取所述需要的数据。将所申请到的内存空间作为高速缓冲存储器可以加快 运行速度。在所述使用热备份内存后,如果不再需要使用所述热备份内存,则可以将不再需 要使用所述热备份内存的信息通知给所述内存控制器,以便内存控制器维护热备份内存的 使用状态。热备份内存上还可以设置一个寄存器,为便于下文描述,这里将这个寄存器称为 第二寄存器。当将不再需要使用所述热备份内存的信息通知给所述内存控制器时,可以将 在申请使用热备份内存时从所述第一寄存器中读取到的数据写入到所述第二寄存器中。当 然,将不再需要使用所述热备份内存的信息通知给所述内存控制器可以有多种方式来实 现,这里不再一一举例说明。对应于图1所示的方法,本发明还提供一种热备份内存的处理装置。如图2所示, 所述装置包括申请单元201,用于向控制内存的内存控制器申请使用热备份内存;使用单 元202,用于如果申请成功,则使用热备份内存。申请单元201向内存控制器申请使用热备份内存的时机既可以是在主内存正常 运行期间,也可以是在主内存发生故障期间,即热备份内存代替主内存工作期间。使用单元 202使用热备份内存的时机可以是在主内存正常运行期间。内存控制器上可以设置一个寄存器,为便于下文描述,这里将这个寄存器称为第 一寄存器。当申请单元201需要申请使用热备份内存时,申请单元201可以将标识所需要 申请的内存容量的数据写入所述第一寄存器中。例如,假设申请单元201需要申请1兆字 节(1MB)的内存空间,那么申请单元201就可以将数据“1”写入第一寄存器中。当然,申请 单元201申请使用热备份内存可以有多种方式来实现,这里不再一一举例说明。内存控制器收到标识所需要申请的内存容量的数据后,可以判断热备份内存中是 否具有所需容量的内存空间可供使用,如果有,则可以将所需容量的内存空间的起始地址 写入第一寄存器中,如果没有,则可以将用于标识没有合适的内存空间的数据写入第一寄 存器中。需要说明的是,起始地址可以使用偏移量来表示,例如m-i等,用于标识没有合适 的内存空间的数据可以是预先定义的数据。当然,起始地址还可以有其他表示方式,这里不 再一一举例说明。申请单元201在向控制内存的内存控制器申请使用热备份内存后,可以读取所述 第一寄存器中的由所述内存控制器写入的数据,如果所述数据是一个地址,即上述的起始 地址,则表示申请成功,如果所述数据不是一个地址,例如是标识没有合适的内存空间的数 据,则表示申请失败。可选的,图2所示的装置还可以包括读取单元(图2中未绘示)和判 断单元(图2中未绘示),当申请单元201在向控制内存的内存控制器申请使用热备份内存 后,读取单元可以读取所述第一寄存器中的由所述内存控制器写入的数据,并将读取的数 据提供给判断单元,判断单元可以判断读取单元提供的数据是否是一个起始地址,如果是, 则可以向使用单元202提供这个起始地址,使用单元202按照这个起始地址使用热备份内 存,否则,判断单元既可以向使用单元202通知热备份内存不可用或申请使用热备份内存 不成功等信息,也可以不向使用单元202发送任何信息。当然,读取单元和判断单元的工作可以由申请单元201完成。申请单元201申请成功后,使用单元202就可以使用热备份内存了,具体来说,使 用单元202可以使用分配的热备份内存中的内存空间。使用单元202如何使用内存空间可 以由本领域技术人员根据实际需要而设计,例如,使用单元202将所申请到的内存空间作 为高速缓冲存储器,从所述高速缓冲存储器中读取需要的硬盘中的数据,如果没有命中,则 从硬盘中读取所述需要的数据到所述高速缓冲存储器,再从所述高速缓冲存储器中读取所 述需要的数据。将所申请到的内存空间作为高速缓冲存储器可以加快运行速度。图2所示的装置还可以包括释放单元203,在使用单元202使用热备份内存后,如 果使用单元202不再需要使用所述热备份内存,则释放单元203可以将不再需要使用所述 热备份内存的信息通知给所述内存控制器,以便内存控制器维护热备份内存的使用状态。热备份内存上还可以设置一个寄存器,为便于下文描述,这里将这个寄存器称为 第二寄存器。当释放单元203将不再需要使用所述热备份内存的信息通知给所述内存控制 器时,释放单元203可以将在申请使用热备份内存时从所述第一寄存器中读取到的数据写 入到所述第二寄存器中,当然,在此之前,申请单元201或者使用单元202需要将从所述第 一寄存器中读取到的数据提供给释放单元203。当然,释放单元203将不再需要使用所述热 备份内存的信息通知给所述内存控制器可以有多种方式来实现,这里不再一一举例说明。在图2所示的装置中的每个单元上都运行有计算机程序,这些单元都可以设置或 应用于电子设备中的某一个功能单元上,例如CPU等。这里的电子设备一般是指服务器。图1所示的方法及图2所示的装置是从应用程序(电子设备中除内存控制器之外 的其他功能单元)的角度来描述本发明的,实际上,本发明还可以从内存控制器的角度来 描述。对此,本发明还提供了图3所示的热备份内存的管理方法和图4所示的内存控制器。如图3所示,一种热备份内存的管理方法,包括S301 获得电子设备中的一个功能单元发出的使用热备份内存的申请;S302:如果符合预先设置的第一条件,则允许所述功能单元使用热备份内存。S301和S302的执行时机既可以是在主内存正常运行期间,也可以是主内存发生 故障期间,即热备份内存代替主内存工作期间。S301和S302的执行主体可以是内存控制 器。内存控制器可以是指电子设备中的内存控制器,这里的电子设备一般是指服务器。获得电子设备中的一个功能单元发出的使用热备份内存的申请可以有多种实现 方式,例如,获得所述功能单元提供的标识所需要申请的内存容量的数据。内存控制器上可 以设置一个寄存器,为便于下文描述,这里将这个寄存器称为第一寄存器。电子设备中的某 个功能单元可以将标识所需要申请的内存容量的数据写入所述第一寄存器中,这样,内存 控制器就获得了标识这个功能单元需要申请的内存容量的数据,实际相当于获得了使用热 备份内存的申请。内存控制器获得使用热备份内存的申请后,可以判断当前的状态是否符合预先设 置的第一条件,如果是,则允许所述功能单元使用热备份内存,否则,不允许所述功能单元 使用热备份内存。判断当前的状态是否符合预先设置的第一条件例如为,热备份内存是否 正在代替主内存工作、热备份内存当前可以使用的内存空间是否能够满足申请使用的内存 容量等。当然,预先设置的第一条件或者判断当前的状态是否符合预先设置的第一条件还 可以有其他表现或实现方式,本领域技术人员可以根据实际需要而设计预先设置的第一条件或如何判断当前的状态是否符合预先设置的第一条件,这里不再一一举例说明。如果确定符合预先设置的第一条件,就可以允许申请使用热备份内存的功能单元 使用热备份内存。允许功能单元使用热备份内存可以有多种实现方式,例如,将允许使用的 内存的起始地址提供给所述功能单元。具体来说,可以将允许使用的内存的起始地址写入 到第一寄存器中。当然,允许功能单元使用热备份内存还可以有其他实现方式,本领域技术 人员可以根据实际需要而设计允许使用的内存的起始地址写入到第一寄存器的实现方式, 这里不再一一举例说明。在实际实现时,内存控制器可以维护一个热备份内存使用情况的状态表,这个状 态表可以记录例如热备份内存的哪些内存空间可以使用、哪些内存空间正在被使用、什么 时间开始被使用等信息。这个状态表既可以共享给电子设备中的其他功能单元,也可以不 共享给电子设备中的其他功能单元。表1即为一个状态表或者是状态表的一部分。
权利要求
一种管理热备份内存的方法,所述方法应用于一包括主内存及热备份内存的电子设备中,其特征在于,包括检测所述主内存是否在正常工作;在所述主内存正常工作时,检测是否有应用程序申请将所述热备份内存作为缓存使用的申请;在检测到有应用程序申请将所述热备份内存作为缓存使用的申请时,处理所述申请,以决定是否同意所述热备份内存作为所述应用程序的缓存;在同意所述热备份内存作为所述应用程序的缓存时,将所述热备份内存作为所述应用程序的缓存使用。
2.如权利要求1所述的方法,其特征在于,所述检测是否有应用程序申请将所述热备 份内存作为缓存使用的申请具体为检测是否有应用程序提供的标识所需要申请的内存容 量的数据。
3.如权利要求1所述的方法,其特征在于,所述将所述热备份内存作为所述应用程序 的缓存使用具体为将允许使用的内存的起始地址提供给所述应用程序,并在用于维护热 备份内存使用情况的状态表中记录分配给所述应用程序使用的内存空间。
4.如权利要求1-3任意一项所述的方法,其特征在于,进一步包括禁止所述应用程序 继续使用所述热备份内存。
5.如权利要求4所述的方法,其特征在于,所述禁止所述应用程序继续使用所述热备 份内存具体为在检测到主内存不能正常工作时,禁止所述应用程序使用所述热备份内存。
6.如权利要求4所述的方法,其特征在于,所述禁止所述应用程序继续使用所述热备 份内存具体为获得所述应用程序发出的不再继续使用所述热备份内存的信息;禁止所述应用程序继续使用所述热备份内存。
7.一种电子设备,包括主内存及热备份内存,其特征在于,还包括第一检测单元,用于检测所述主内存是否在正常工作;第二检测单元,在所述第一检测单元检测出所述主内存正常工作时,检测是否有应用 程序申请将所述热备份内存作为缓存使用的申请;第一处理单元,用于在所述第二检测单元检测到有应用程序申请将所述热备份内存作 为缓存使用的申请时,处理所述申请,以决定是否同意所述热备份内存作为所述应用程序 的缓存;第二处理单元,用于在所述第一处理单元同意所述热备份内存作为所述应用程序的缓 存时,将所述热备份内存作为所述应用程序的缓存使用。
8.如权利要求7所述的电子设备,其特征在于,所述第二检测单元具体用于检测是否 有应用程序提供的标识所需要申请的内存容量的数据。
9.如权利要求7所述的电子设备,其特征在于,所述第二处理单元具体用于将允许使 用的内存的起始地址提供给所述应用程序,并在用于维护热备份内存使用情况的状态表中 记录分配给所述应用程序使用的内存空间。
10.如权利要求7-9任意一项所述的电子设备,其特征在于,进一步包括第三处理单 元,用于禁止所述应用程序继续使用所述热备份内存。
全文摘要
本发明提供一种管理热备份内存的方法,所述方法应用于一包括主内存及热备份内存的电子设备中,包括检测所述主内存是否在正常工作;在所述主内存正常工作时,检测是否有应用程序申请将所述热备份内存作为缓存使用的申请;在检测到有应用程序申请将所述热备份内存作为缓存使用的申请时,处理所述申请,以决定是否同意所述热备份内存作为所述应用程序的缓存;在同意所述热备份内存作为所述应用程序的缓存时,将所述热备份内存作为所述应用程序的缓存使用。本发明还提供一种电子设备。在本发明中,热备份内存在主内存正常运行期间可以被使用,减少了资源的浪费。
文档编号G06F12/08GK101937400SQ20091008676
公开日2011年1月5日 申请日期2009年6月29日 优先权日2009年6月29日
发明者张建辉, 柯海滨 申请人:联想(北京)有限公司