在计算机系统破坏时保存易失性内存的制作方法

文档序号:14203783阅读:271来源:国知局
在计算机系统破坏时保存易失性内存的制作方法



背景技术:

计算机系统包括多个计算机程序进程。当计算机程序进程开始执行时,计算机程序进程在内存中建立数据以执行计算机实施的任务。计算机程序进程对数据集合进行工作以执行计算机实施的任务。数据集合存储用于计算机程序进程的信息。

附图说明

附图图示出在本文描述的原理的各种示例并且是说明书的一部分。示例不限制权利要求的范围。

图1是根据在本文描述的原理的一个示例的、在计算机系统破坏时保存易失性内存的图。

图2是根据在本文描述的原理的另一个示例的、在计算机系统破坏时保存易失性内存的图。

图3是根据在本文描述的原理的又一个示例的、在计算机系统破坏时保存易失性内存的系统的图。

图4是根据在本文描述的原理的一个示例的、在计算机系统破坏时保存易失性内存的方法的流程图。

图5是根据在本文描述的原理的一个示例的、在计算机方法统破坏时保存易失性内存的方法的流程图。

图6是根据在本文描述的原理的一个示例的、在计算机系统破坏时保存易失性内存的计算机程序产品的图。

遍及附图,相同的附图标记指定类似的、但是不一定相同的要素。

具体实施方式

计算机程序进程表示当由处理器执行时执行特定任务的代码集合。计算机程序进程以数据集合的方式工作。数据集合用于跟踪计算机程序进程的状态。当计算机程序进程开始执行时,其建立数据集合。建立数据集合可能花时间,使计算机程序进程的启动和执行慢下来。此外,随着计算机程序进程运行,数据集合可能增长并且被修改。建立大的数据集合花费更长时间,使得由计算机程序进程执行的任务在一段时间不可用。把数据集合存储在稳定贮存器上引起不良读出时间,降低计算机程序进程的性能。

计算机程序进程的可用性的延迟可能干扰由计算设备提供的服务的可用性。已经实施若干不同的方法来降低数据的持续性和无效性,以及降低计算机程序进程的启动成本。在一个示例中,计算机程序进程可以把与计算机程序进程相关联的数据写入稳定贮存设备。与把数据写入易失性内存(volatilememory)相比,把数据写入稳定贮存器花费更多时间。该方法保存数据,但是计算机程序进程招致把数据写入稳定贮存设备的处理开销。处理开销可以使系统减速。在另一个示例中,计算设备使用非易失性ram(nvram),允许计算机程序进程看起来把数据存储在易失性内存中。与易失性内存相比,nvram更昂贵,使得该解决方案代价高。在又一个示例中,当系统中断发生时,系统把易失性内存拷贝到稳定贮存器。当系统从中断恢复时,其把稳定贮存器的副本恢复到易失性内存。该方法招致用于将数据从易失性内存移动到稳定贮存器的开销。此外,该方法可以复原导致系统中断的数据。

因此,本说明书描述用于在计算机系统破坏时保存易失性内存的系统和方法。系统和方法允许计算机程序进程识别易失性内存中的数据。在系统破坏时保存被识别的数据。系统和方法允许计算机程序进程在不周期性地把数据写入稳定贮存器的情况下保存数据的一部分。系统和方法允许计算机程序进程把内存作为易失性内存来处置。计算机程序进程保存很少会引起系统破坏的数据。

本公开描述用于在计算机系统破坏时保存易失性内存的方法。根据该方法,识别易失性内存的集合。易失性内存的集合表示在系统破坏期间要保存的易失性内存中的数据的一部分。根据该方法,接收系统事件。系统事件指示计算机系统破坏将发生以及易失性内存的集合将被写入到稳定贮存设备。根据该方法,把易失性内存的集合写入稳定贮存设备以创建存储的数据集合。

本公开描述用于在计算机系统破坏时保存易失性内存的系统。系统包括处理器、通信地连接到处理器的内存、通信地连接到处理器的稳定贮存器,以及内存保存系统。内存保存系统包括识别引擎、接收引擎、写入引擎、复原引擎,以及通知引擎。识别引擎识别易失性内存的集合。易失性内存的集合表示在系统破坏期间要保存的内存中的数据的一部分。接收引擎接收系统事件。系统事件指示计算机系统破坏将发生以及易失性内存的集合将被写入到稳定贮存设备。写入引擎把易失性内存的集合写入到稳定贮存设备以创建存储的数据集合。当系统恢复时,复原引擎把所存储的数据集合复原到易失性内存。通知引擎向数据消费者通知所存储的数据集合可用于供使用。

本公开描述用于在计算机系统破坏时保存易失性内存的计算机程序产品。计算机程序产品包括非暂时性有形计算机可读贮存介质。有形计算机可读贮存介质包括计算机可读程序代码。计算机可读程序代码包括当被执行时使处理器识别易失性内存的集合的程序指令。易失性内存的集合表示在系统破坏期间要保存的易失性内存中的数据的一部分。计算机可读程序代码包括当被执行时使处理器接收系统事件的程序指令。系统事件指示计算机系统破坏将发生以及易失性内存的集合将被写入到稳定贮存设备。计算机可读程序代码包括当被执行时使处理器把易失性内存的集合写入稳定贮存设备以创建存储的数据集合的程序指令。

所描述的系统和方法在系统破坏时数据被保留时在其被写入易失性内存中时允许数据被使用。易失性内存的数个部分被写入稳定贮存器。系统和方法允许系统得到在没有把所有数据移动到稳定贮存器的开销的情况下以及在没有使用诸如nvram之类的技术的花费的情况下将数据存储在稳定贮存器中的好处。

如在本说明书中并且在所附权利要求中所使用的,术语“内存”指的是随机存取内存。当至内存的电力被移除时,内存可能丢失存储在内存中的数据。当系统重启时,至内存的电力被移除。当电力被移除时频繁地改变并且丢失状态的内存被称为“易失性内存”。

如在本说明书中并且在所附权利要求中所使用的,术语“稳定贮存器”指的是当电力被移除时维持数据的数据贮存机构。稳定贮存设备的示例包括硬盘驱动器、闪速内存,和非易失性随机存取内存(nvram)。

如在本说明书中并且在所附权利要求中所使用的,术语“一部分”指的是集合的一部分,但是可以不是集合的所有。例如,内存的一部分表示内存的一部分、但不是所有。

如在本说明书中并且在所附权利要求中所使用的,术语“破坏”指的是使计算设备上的活动中断的扰动或问题。破坏可以造成计算设备上的活动的一部分中的扰动。破坏可以造成计算设备上的所有活动的扰动。

如在本说明书中并且在所附权利要求中所使用的,术语“系统事件”指的是影响计算设备上的多个活动的计算设备上的意外发生的事。系统事件包括破坏。系统事件可以包括不造成破坏的活动。例如,备份事件可以是系统事件。

如在本说明书中并且在所附权利要求中所使用的,术语“恢复”指的是计算机设备返回到功能状态。恢复指示计算设备在发挥作用。计算设备可以在进行恢复以达到类似于破坏前状态的状态之后继续建立数据或进程。

如在本说明书中并且在所附权利要求中所使用的,术语“主电源”指的是在正常工作期间由计算设备使用的电源。主动力源可以是交流电源。主电源可以是在正常工作期间使用的电池。

如在本说明书中并且在所附权利要求中所使用的,术语“辅助电源”指的是除主电源之外所使用的备用电源。当主电源中存在破坏时,辅助电源向计算设备提供电力。辅助电源可以是与计算设备相关联的电池。辅助电源可以是用作为主电源的电池中的保留功率量。

如在本说明书中并且在所附权利要求中所使用的,术语“电力中断”指的是主电源的中断或破坏。经历电力中断的系统可以使用辅助电源工作一段时间。

如在本说明书中并且在所附权利要求中所使用的,术语“系统关闭”指的是禁止系统上的活动的计算设备上的一系列工作。系统关闭可以故意地把主电源关掉。

如在本说明书中并且在所附权利要求中所使用的,术语“系统中断”指的是计算设备上的活动的弥漫性破坏。系统中断影响计算设备上的任何活动。

如在本说明书中并且在所附权利要求中所使用的,术语“系统故障”指的是由于计算设备上的错误引起的、频繁地造成系统中断的意想不到的且意外的系统事件。系统故障可能由系统设备上的硬件的故障引起。系统故障可能由计算设备上的软件错误引起。

如在本说明书中并且在所附权利要求中所使用的,术语“系统睡眠”指的是当未使用时计算设备可以进入的功率节省状态。当计算设备进入睡眠模式时,计算设备的一些部分不接收电力,而内存接收足够电力来维持数据。

如在本说明书中并且在所附权利要求中所使用的,术语“系统休眠”指的是其中计算设备保留其状态的计算设备上的掉电状态。当计算设备进入休眠时,计算设备把内存的内容保存到稳定贮存设备。在重新开始时,计算设备看起来处于如进入系统休眠之前相同的状态中。

更进一步,如在本说明书中并且在所附权利要求中所使用的,术语“多个”或类似的语言可以包括包含1至任何有限正数;零不是数量,而是数量的缺乏。

在以下描述中,为了解释目的,阐述多个的特定细节以便提供对本发明的系统和方法的彻底的理解。然而,对于本领域技术人员将明显的是,可以在没有这些特定细节的情况下实践本发明的装置、系统和方法。在说明书中对“示例”或者类似的语言的引用意指与示例结合描述的特定特征、结构或特性如所描述的那样被包括,但在其他的示例中可以不被包括。

现在参考各图,图1是根据在本文描述的原理的又一个示例的、在计算机系统破坏时保存易失性内存的系统的图。如所图示出的,计算设备(100)包括处理器(102)、易失性内存(120)、稳定贮存器(125)、系统事件生成器(107),以及内存保存器(110)。易失性内存(120)具有与多个进程相关联的多个进程内存(121)段。进程内存(121)段具有持久数据段(122)。建立持久数据段(122)以在系统破坏时保存持久数据段(122)。内存保存器(110)中的引擎(114)使处理器(102)把持久数据(122)写入稳定贮存器(125)。

多个进程存储在易失性内存(120)中的进程内存(121)中的数据。进程内存(121)表示与进程相关联的数据以存储与进程相关联的状态。进程可以包括在系统破坏时存留的进程内存(121)的一部分。如所图示出的,进程内存a(121-1)包括在系统破坏时存留的数据的一部分,持久数据a(122-1)。

当系统事件生成器(107)向处理器(102)通知系统事件发生时,处理器(102)执行计算机程序代码以确定系统破坏是否将发生。当处理器确定系统事件将造成系统破坏时,内存保存器(110)进行动作以使用稳定贮存器(125)来保存易失性内存(120)的数个部分。当系统被复原时,内存保存器(110)把稳定贮存器(125)中的持久副本(126)复原到易失性内存(120)。

内存保存器(110)进一步包括内存保存器(110)的实施中所使用的多个引擎。内存保存器(110)内的各个引擎包括可以通过处理器(102)单独地执行的可执行的程序代码。在该示例中,各个引擎可以被存储为单独的计算机程序产品。在另一个示例中,可以在多个计算机程序产品内将内存保存器(100)内的各个引擎组合;每个计算机程序产品包括多个引擎。引擎可以包括硬件和计算机程序代码的组合。引擎(114)可以包括处理器以在当由处理器执行时使任务发生。内存保存器(110)包括识别引擎(114-1)、接收引擎(114-2)、写入引擎(114-3)、复原引擎(114-4),以及通知引擎(114-5)。

内存保存器(110)包括识别引擎(114-1)来识别易失性内存的集合。易失性内存的集合表示在系统破坏期间要保存的内存中的数据的一部分。当电力被移除时,易失性内存丢失状态。被保存的易失性内存被移动到非易失性存储位置。如所图示出的,内存保存器(110)识别持久数据a(122-1)、持久数据b(122-2)、持久数据c(122-3)和持久数据d(122-4)。

内存保存器(110)包括接收引擎(114-2)来接收系统事件。系统事件指示计算机系统破坏将发生以及易失性内存的集合将被写入到稳定贮存设备。可以通过系统事件生成器(107)来生成系统事件。在一个示例中,系统事件生成器(107)可以是计算设备(100)上的硬件单元。在另一个示例中,系统事件生成器(107)可以是在计算设备上执行的软件的一部分。在又一个示例中,系统事件生成器(107)可以是硬件和软件的组合。系统事件可以是来自主电源的电力的损耗。系统事件可以是电力中断、系统关闭、系统故障、系统睡眠和系统休眠中的一个。

内存保存器(110)包括写入引擎(114-3)来把易失性内存的集合写入稳定贮存设备以创建存储的数据集合。写入引擎(114-3)可以写入在辅助电源下可以被存储的一数量的内存。写入引擎(114-3)可以基于在辅助电源中所测量的电力量来进行动作。在一个示例中,计算设备在辅助电力下工作一段时间。辅助电力可以是允许计算设备继续工作的电池。随着计算设备继续工作,为辅助电力存储的电力被消耗。当辅助电力达到所配置的量时,系统关闭。内存保存器(110)可以在辅助电力下作为关闭进程的一部分来写入易失性内存的集合。

内存保存器(110)包括复原引擎(114-4)来在系统恢复时把所存储的数据集合复原到易失性内存。复原引擎(114-4)从稳定贮存器(125)读取数据的持久副本并且把数据的副本写入易失性内存(120)。在一个示例中,复原引擎(114-4)读取持久数据a(126-1)并且把数据拷贝到持久数据a(122-1)的位置。复原引擎(114-4)允许进程继续利用易失性内存(120)中的数据工作。

内存保存器(110)包括通知引擎(114-5)来向数据消费者通知所存储的数据集合可用于供使用。当代码在处理器(102)上被执行时然后可以对持久数据(122)进行工作。

现在将描述根据图1的总体示例。多个进程存储段包括进程内存a(121-1)、进程内存b(121-2)、进程内存c(121-3),和进程内存d(121-4)。每个进程内存(121)段包括持久数据(122)。持久数据(122)表示被识别为在系统破坏时存留的数据。可以通过多个源——诸如识别数据的用户、识别数据的系统配置、或者数据的类似的识别来识别在系统破坏时存留的数据。

识别引擎(114-1)识别持久数据a(122-1)、持久数据b(122-2)、持久数据c(122-3),和持久数据d(122-4)作为要被移动到稳定贮存器(125)的数据。持久数据(122)表示在系统破坏之后将是可用的数据。不是持久数据(122)的易失性内存(120)将在破坏之后不可用。在一个示例中,持久数据(122)可以表示用于存储被使用的信息的集合的数据库中的数据。诸如程序变量或内存地址之类的其他数据不被识别为要在系统破坏时存留。通过保存诸如数据库之类的数据、而不保存程序变量和内存地址,在系统中断时保存较少数据。由于较少数据被保存,所以这允许系统在较少的时间恢复。另外,当程序变量不在系统破坏时存留时,其降低程序变量中的错误将在系统破坏时存留的概率。在另一个示例中,诸如用户信息之类的分配的数据被识别为在系统破坏时存留。诸如函数的自变量的值之类的堆栈数据不被识别。分配的数据可以很可能在系统破坏之后为有效。如同在很少会在系统破坏之后有关的数据的情况下,通过把分配的数据识别为在系统破坏时存留,有关的数据可以在破坏时存留。在又一个示例中,在计算机程序进程之间共享的数据在系统中断时存留。独立的进程很少会只是负责在进程之间共享的数据。在进程之间共享的数据可以在系统破坏时存留并且被透明地复原并且在系统破坏之后由进程来使用。作为有选择地识别在系统破坏时存留的数据的结果,可以看到附加的益处。

接收引擎(114-2)从系统事件生成器(107)接收系统事件发生的通知。在该示例中,系统事件生成器(107)生成指示系统已经经历了终端故障并且将被重新启动的事件。

写入引擎(114-3)把持久数据(122)作为持久副本(126)写入稳定贮存器(125)。把持久数据a(122-1)作为持久副本a(126-1)来写入。把持久数据b(122-2)作为持久副本b(126-2)来写入。把持久数据c(122-3)作为持久副本c(126-3)来写入。把持久数据d(122-4)作为持久副本d(126-4)来写入。即使当电力被移除时,稳定贮存器(125)维持中的持久副本(126)也维持数据。

在系统破坏之后,复原引擎(114-4)把持久数据副本(126)复原到易失性内存(120)。复原引擎(114-4)从稳定贮存器(125)中读取持久数据并且把数据复原到易失性内存(120)。持久副本a(126-1)被复原到持久数据a(122-1)的位置。持久副本b(126-2)被复原到持久数据b(122-2)的位置。持久副本c(126-3)被复原到持久数据c(122-3)的位置。持久副本d(126-4)被复原到持久数据d(122-4)的位置。

通知引擎(114-5)向多个进程通知持久数据(122)已经被复原到易失性内存(120)。多个进程是已经被复原到的持久数据(122)的消费者。通知包括向进程发送持久数据准备好供使用的消息。

图2是根据在本文描述的原理的另一个示例的、在计算机系统破坏时保存易失性内存的系统的图。如所图示出的,计算设备(200)包括处理器(102)、易失性内存(120)、稳定贮存器(125)、系统事件生成器(107),以及内存保存器(110)。如上所述,易失性内存(120)具有与多个进程相关联的多个进程内存(121)段。如上所述,内存保存器(110)中的引擎(114)使处理器(102)把持久数据(122)写入稳定贮存器(125)。计算设备(200)包括主电源(218)和辅助电源(209)。

现在将描述根据图2的示例。内存保存器(110)进行动作以在没有对进程的改变的情况下保存持久数据(122)和持久内存(123)。在该示例中,内存保存器(110)充当运行于计算设备(200)上的计算机工作系统的一部分。内存保存器在没有与被保存的内存相关联的进程的程序改变的情况下进行动作。如上所述,识别引擎(114-1)识别持久数据a(122-1)和持久数据b(122-2)在系统破坏时存留。此外,持久内存e(222-1)和持久内存f(222-2)被识别我在系统破坏时存留。持久数据(122)与进程内存(121)相关联。例如,持久数据(122)可以是作为进程内存地址空间的一部分被分配的数据。持久内存(222)不是进程内存的一部分。持久内存可以是存储段被多个进程共享的存储段、可以是与工作系统相关联的存储段,或者是不附接到进程内存的其他类型的内存。例如,持久内存(222)可以被分配为被多个进程共享的、在进程外部的共享内存段。以与持久数据(122)相同的方式,由内存保存器(110)把持久内存(222)移动到稳定贮存器(125)。

接收引擎(114-2)从系统事件生成器(107)接收系统事件。在该示例中,系统事件指示主电源(218)已经出故障以及计算设备(200)运行于辅助电力(219)上。计算设备具有足够的辅助电力以将计算设备(200)关闭,但是易失性内存(120)将丢失电力,造成易失性内存(120)中的数据丢失。内存保存器(110)将保存内存,直到系统从主电源(218)的损耗中恢复。

在使用辅助电力(219)时,写入引擎(214-3)把持久数据(122)和持久内存(222)写入稳定贮存器(125)。持久数据a(122-1)被拷贝为持久副本a(126-1)。持久数据b(122-2)被拷贝为持久副本b(126-2)。持久内存e(222-1)被拷贝为持久副本e(126-5)。持久内存f(222-2)被拷贝为持久副本f(126-6)。写入引擎(214-3)在使用辅助电力(219)时完成写入。

当主电源(218)被复原时,计算设备(200)恢复。计算设备(200)使系统在处理器(102)上执行软件。计算设备(200)使用内存保存器(110)来在破坏之后复原内存。复原引擎(114-4)把持久副本(126)复原到易失性内存(120)。复原引擎(114-4)把持久副本a(126-1)复原到持久数据a(122-1)的位置。复原引擎(114-4)把持久副本b(126-2)复原到持久数据b(122-2)的位置。复原引擎(114-4)把持久副本e(126-5)复原到持久内存e(222-1)的位置。复原引擎(114-4)把持久副本f(126-6)复原到持久内存f(222-2)的位置。

通知引擎(114-5)向数据消费者通知持久数据处于易失性内存中并且进行准备好供使用。数据消费者可以使用易失性内存中的数据。

现在参考下一图,图3是根据在本文描述的原理的又一个示例的用于在计算机系统破坏时保存易失性内存的系统的图。如所图示出的,内存保存器(110)是基本输入/输出系统(bios)的一部分。内存保存器(110)进行动作以在引起破坏的系统事件发生时把易失性内存保存在计算系统(300)中。

可以在电子设备中实施计算系统(300)。电子设备的示例包括服务器、台式计算机、膝上型计算机、个人数字助理(pda)、移动设备、智能电话、游戏系统,和平板机,或者其他电子设备。图3的计算系统(300)可以是通用计算机的一部分。然而,在替换示例中,计算系统(300)是专用集成电路的一部分。

在一些示例中,处理器(302)和内存保存器(110)位于诸如服务器或网络组件之类的同一物理组件内。内存保存器(110)可以是物理组件的主内存、高速缓存、寄存器、非易失性内存的一部分或者在物理组件的内存分级体系中的别处。替换地,内存保存器(110)可以通过网络与处理器(302)进行通信。此外,可以在编程指令位于本地时通过网络连接从远程位置访问数据结构。因而,可以在用户设备上、在服务器上、在服务器的聚集上,或者其组合上实施计算系统(300)。

可以在任何数据处理方案——包括独立硬件、移动式应用、计算网络,或者其组合中利用计算系统(300)。此外,可以在计算网络、公共云网络、私有云网络、混合云网络、其他形式的网络,或者其组合中使用计算系统(300)。在一个示例中,例如由第三方通过网络把由计算系统(300)提供的方法作为服务来提供。在该示例中,服务可以例如包括以下:托管多个应用的软件即服务(saas);托管例如包括工作系统、硬件,以及贮存器,等等的计算平台的平台即服务(paas);托管诸如像服务器、存储组件、网络,以及组件等等的装备的基础设施即服务(laas);应用程序接口(api)即服务(apiaas)、其他形式的云服务,或者其组合。可以在一个或多个硬件平台上实施本发明的系统,其中能够在一个平台上或跨多个平台执行系统中的模块。此类模块能够在各种形式的云技术以及混合云技术上运行或者被提供为能够在云上或离开云被实施的saas(软件即服务)。在另一个示例中,由本地管理员来执行由计算系统(300)提供的方法。

以便实现其期望的功能,计算系统(300)包括各个硬件组件。在这些之中,硬件组件可以是多个处理器(302)、内存保存器(110)、多个网络适配器(306)、多个外围设备适配器(304),和多个贮存器适配器(308)。可以通过使用多个总线和/或网络连接来将这些硬件组件互联。在一个示例中,处理器(302)、内存保存器(314)、外围设备适配器(304)、网络适配器(306),和贮存器适配器(308)可以经由总线通信地连接。

处理器(302)可以包括硬件体系结构来从内存保存器(110)中调取可执行代码并且执行可执行代码。可执行代码可以在由处理器(302)执行时使处理器(302)实施至少在系统破坏时保存易失性内存的功能。计算系统(300)的功能依照在本文描述的本说明书的方法。在执行代码的过程中,处理器(302)可以从多个其余硬件单元接收输入并且向其提供输出。

内存管理器(305)可以与包括易失性和非易失性内存的各种类型的内存对接。例如,目前示例的内存管理器(305)可以包括易失性随机存取内存(易失性ram)(316)、只读内存(rom)(318),和非易失性随机存取内存(非易失性ram)(320)。也可以利用多个其他类型的内存,并且本说明书预期多个变化的类型(多个)的内存的使用,因为可以适合在本文描述的原理的特定应用。在某些示例中,不同的类型的内存可以用于不同的数据贮存需要。例如,在某些示例中,处理器(302)可以从只读内存(rom)(318)启动、把非易失贮存器维持在非易失性ram(非易失性ram)(320)中,并且执行存储在易失性随机存取内存(易失性ram)(316)中的程序代码。

通常,内存管理器(305)可以包括计算机可读介质、计算机可读存储介质,或者非暂时性计算机可读介质,等等。例如,内存管理器(305)可以包括电子、磁性、光学、电磁、红外,或者半导体系统、装置,或设备,或者上文的任何适当的组合。计算机可读存储介质的更多特定示例例如可以包括以下:具有多个布线的电气连接、便携式计算机磁盘、硬盘、易失性随机存取内存(ram)(316)、只读内存(rom)(318)、非易失性ram(nvm)(320)、可擦除可编程序只读内存(eprom或闪速内存)、便携式光盘只读内存(cd-rom)、光贮存设备、磁贮存设备,或上文的任何适当的组合。在本文档的上下文中,,计算机可读存储介质可以是能够包含或存储计算机可用的程序代码以供指令执行系统、装置,或设备使用或与其有关的任何有形介质。在另一个示例中,计算机可读存储介质可以是能够包含或存储程序以供指令执行系统、装置,或设备使用或与其有关的任何非暂时性介质。

计算系统(300)中的适配器(304、306、308)使得处理器(302)能够与计算系统(300)外部和内部的各种其他硬件元件对接。例如,外围设备适配器(304)可以提供与诸如像显示设备(324)、鼠标、硬盘驱动器(hdd)、固态驱动器(ssd)或键盘的输入/输出设备的接口。外围设备适配器(304)也可以提供对诸如外部存储设备之类的其他外部设备,诸如像服务器、交换机和路由器的多个网络设备,客户端设备,其他类型的计算设备,和其组合的访问。可以提供显示设备(324)以允许计算系统(300)的用户与计算系统(300)的功能交互并且实施计算系统(300)的功能。网络适配器(306)可以提供与例如网络内的其他计算设备的接口,因此实现计算系统(300)和位于网络内的其他设备之间的数据传输。

计算系统(300)包括内存保存器(110)。内存保存器(110)可以包括能够存储诸如由计算设备(300)使用的编程指令或数据结构之类的数据的任何内存。内存保存器(110)可以存储诸如由处理器(302)或其他处理设备执行的可执行的程序代码之类的数据。如将讨论的,内存保存器(110)可以具体地存储表示处理器(302)执行以实施至少在本文描述的功能的多个应用的计算机代码。

内存保存器(310)包括多个引擎。计算系统(300)内的各个引擎包括可以被单独地执行的可执行的程序代码。在该示例中,各个引擎可以被存储为单独的计算机程序产品。在另一个示例中,计算系统(300)内的各个引擎可以在多个计算机程序产品内组合;每个计算机程序产品包括多个引擎。

如上所述,识别引擎(114-1)识别易失性内存的集合。易失性内存的集合表示在系统破坏期间要保存的内存中的数据的一部分。

如上所述,接收引擎(114-2)接收系统事件。系统事件指示计算机系统破坏将发生以及易失性内存的集合将被写入到稳定贮存设备。如上所述,写入引擎(114-3)把易失性内存的集合写入稳定贮存设备以创建存储的数据集合。如上所述,当系统恢复时,复原引擎(114-4)把所存储的数据集合复原到易失性内存。如上所述,通知引擎(114-5)向数据消费者通知所存储的数据集合可用于供使用。

图4是根据在本文描述的原理的一个示例的、在计算机系统破坏时保存易失性内存的方法(400)的流程图。方法(400)包括识别(框401)易失性内存的集合。易失性内存的集合表示在系统破坏期间要保存的易失性内存中的数据的一部分。易失性内存的集合可以是内存的适当子集。

方法(400)还包括接收(框402)系统事件。系统事件指示计算机系统破坏将发生以及易失性内存的集合将被写入到稳定贮存设备。系统事件可以是诸如系统关闭、系统睡眠和系统休眠中的一个之类的系统控制事件。系统事件可以是系统控制不了的事件,诸如电力中断或系统故障。系统事件可以是可用于写入数据的一数量的辅助电力的通知。例如,系统事件可以通知可用于把数据存储在稳定贮存器中的一数量的辅助电力的方法。

该方法还包括(框403)把易失性内存的集合写入到稳定贮存设备以创建存储的数据集合。把易失性内存的集合写入(框403)稳定贮存器可以写入可以在辅助电源下存储的量的内存。可以基于在辅助电源中测量的一数量的电力来执行把易失性内存的集合写入(框403)稳定贮存器。

图5是根据在本文描述的原理的一个示例的、在计算机系统破坏时保存易失性内存的方法(500)的流程图。如在图4中所描述的,方法(500)包括识别(框501)易失性内存的集合、接收(框502)系统事件,以及把易失性内存的集合写入(框503)稳定贮存设备以创建存储的数据集合。

该方法(500)还包括当系统恢复时,把所存储的数据集合复原(框504)到易失性内存。可以把所存储的数据集合拷贝或移动回到易失性ram。当所存储的数据集合处于易失性内存中时,计算机程序代码可以使用数据。所存储的数据集合在系统破坏时维持数据的状态。

该方法(500)包括通知(框504)所存储的数据集合可用于供使用的代码的集合。通知(框505)可以由使用信号的消息、进程间通信,或者通信的类似的活动方法组成。通知(框505)可以由设置被数据的消费者监视的值组成以指出数据准备好供使用。通知(框505)向数据的消费者通知数据可用于被消费。通知(框505)可以不传送数据被放置在稳定贮存器中并且被复原到易失性内存。

图6是根据在本文描述的原理的内存保留器(600)的示例的图。在该示例中,内存保存器(600)包括与内存资源(622)进行通信的处理资源(602)。处理资源(602)包括至少一个处理器和用于处理编程指令的其他资源。内存资源(622)表示能够存储诸如由内存保存器(600)使用的编程指令或数据结构之类的数据的任何内存。存储在内存资源(622)中的所示出的编程指令包括内存识别器(614-1)、事件接收器(614-2)、内存写入器(614-3)、内存复原器(614-4),以及数据可用性通知器(614-5)。

内存资源(622)包括包含使任务由处理资源(602)执行的计算机可读程序代码的计算机可读存储介质。计算机可读存储介质可以是有形的和/或物理的贮存介质。计算机可读存储介质可以是并非传输贮存介质的任何适当的贮存介质。计算机可读存储介质类型的非穷尽性列表包括非易失性内存、易失性内存、随机存取内存、只写内存、闪速内存、电可擦可编程序只读内存、其他类型的内存,或者其组合。

内存识别器(614-1)表示当被执行时使处理资源(602)识别在由计算设备提供的服务的破坏时要保存的内存的集合的编程指令。破坏可以造成数据或状态的丢失。内存识别可能丢失状态的易失性内存。被识别的内存表示易失性内存的子集。

事件接收器(614-2)表示当被执行时使处理资源(602)接收事件的编程指令。事件可以是经由事件操纵器作出的通知。可以由在处理资源(602)上的计算机代码的正常执行的异常产生事件。

内存写入器(614-3)表示当被执行时使处理资源(602)把存储在易失性内存中的数据写入稳定贮存设备的编程指令。写入稳定贮存设备的数据是通过内存识别器(614-2)所识别的数据。

内存复原器(614-4)表示当被执行时使处理资源(602)把写入到稳定贮存器的数据复原到易失性内存的编程指令。

数据可用性通知器(614-4)表示当被执行时使处理资源(602)向数据的消费者通知数据已经被复原到易失性内存并且准备好供使用的编程指令。

在本文参考根据在本文描述的原理的示例的方法、装置(系统),和计算机程序产品的流程图图示和/或框图来描述本发明的系统和方法的方面。可以通过计算机可用的程序代码来实施流程图图示和框图中的每个框以及流程图图示和框图中的框的组合。可以向通用计算机的处理器、专用计算机,或者其它可编程数据处理装置提供计算机可用的程序代码以生产机器,使得当计算机可用的程序代码例如经由计算系统(图2,200)的处理器(图2,202)或其它可编程数据处理装置被执行时,来实施在流程图和/或框图块中指定的功能或动作。在一个示例中,计算机可用的程序代码可以被体现在计算机可读存储介质内;计算机可读存储介质是计算机程序产品的一部分。在一个示例中,计算机可读存储介质是非暂时性计算机可读介质。

在系统可用性的破坏时保存易失性内存的子集允许系统维持数据可用性。数据的子集的保存与保存全部易失性内存相比消耗较少的时间。易失性内存的子集的保存允许系统在保存数据时消耗较少辅助电力。另外地,易失性内存的子集的保存允许被识别的数据被保留,同时未被识别的数据被复位。数据的选择性保存减小保存可能已经造成破坏的数据的风险。

已经给出在前的描述以仅仅用于说明和描述所描述的原理的示例。本说明书并不意图是穷尽性的或者将这些原理限制到所公开的任何精确形式。根据以上教导,多个修改和变化是可能的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1