首页 / 专利库 / 电脑编程 / 高级配置与电源接口 / 使用非易失性RAM的内核软重置

使用非易失性RAM的内核软重置

阅读:199发布:2020-05-13

专利汇可以提供使用非易失性RAM的内核软重置专利检索,专利查询,专利分析的服务。并且所描述的技术准许 内核 更新或 固件 修复并且包括在不丢失已经由服务、 虚拟机 或用户应用创建的用户上下文信息的情况下内核数据结构的重新初始化。 服务器 或其他计算系统中的定制代码设置内核软重置(KSR)指示器并将用户上下文保存到非易失性存储装置。当KSR正在进行时,引导代码跳过上电自检和类似的初始化(从而减少停机时间),加载内核映像,初始化内核数据结构,恢复用户上下文,并将控制传递给初始化的内核以利用相同用户上下文继续计算系统操作。设备 驱动器 也可以被重新初始化。例如,加载的内核可以使用新修复的固件,或者可以使安全 补丁 被安装。非易失性存储装置可以以RAM速度操作,例如,它可以包括NVDIMM 存储器 。内核可以在接收控制之前被验证。,下面是使用非易失性RAM的内核软重置专利的具体信息内容。

1.一种支持内核软重置以用于在不丢失用户上下文的情况下更新内核的计算系统,所述系统包括:
内核映像A;
在所述系统在内核映像A的控制下的操作期间被生成的用户上下文;
与内核映像A不同的内核映像B;
至少一个处理器;
与所述处理器处于可操作通信的操作存储器,所述操作存储器包括易失性随机存取存储器(RAM)并且包含所述用户上下文和所述内核映像A的至少一部分;
内核重置存储器,所述内核重置存储器包括包含所述内核映像B的非易失性存储装置;
内核软重置指示器;以及
引导软件,所述引导软件包括在执行时检查所述内核软重置指示器的代码,并且当所述内核软重置指示器指示内核软重置正在进行时,所述代码:(a)将所述内核映像B从所述内核重置存储器加载到所述操作存储器中,(b)初始化所述内核映像B的内核数据结构,以及(c)将控制传递给初始化的所述内核映像B,以在内核映像B的控制下而不是在内核映像A的控制下,利用相同用户上下文继续所述系统的操作,并且当所述内核软重置指示器指示内核软重置未正在进行时,所述代码不将控制传递给内核映像B以利用相同用户上下文继续所述系统的操作。
2.根据权利要求1所述的计算系统,其中所述内核软重置指示器包括以下中的至少一项:存储在硬盘上的标志、平台通信信道共享存储器区域中的标志、高级配置和电源接口标志。
3.根据权利要求1所述的计算系统,其中所述计算系统包括以下中的至少一项:服务器计算机、服务器、数据中心服务器、被配置为运行多个虚拟机的服务器、智能电话、平板计算机、膝上型计算机、台式机、工作站、视频游戏系统、虚拟现实系统、增强现实系统、交通工具、自动化制造系统、过程控制系统、机器人系统、嵌入式系统
4.根据权利要求1所述的计算系统,其中所述内核重置存储器还包括包含所述用户上下文的副本的非易失性存储装置,并且所述引导软件还包括代码,所述代码在执行时在将所述内核映像B从所述内核重置存储器加载到所述操作存储器中之后并且在初始化的所述内核映像B的控制下利用相同用户上下文继续所述系统的操作之前,将所述用户上下文从所述内核重置存储器复制到所述操作存储器中。
5.根据权利要求1所述的计算系统,其中所述引导软件还包括对以下中的至少一项执行验证测试的代码:所述内核映像B、所述用户上下文的副本。
6.一种内核软重置方法,包括:
设备的引导软件检查内核软重置指示器;
在发现所述内核软重置指示器指示内核软重置正在进行时,将内核映像B加载到所述设备的操作存储器中;
初始化所加载的所述内核映像B的内核数据结构;
将控制传递给初始化的所述内核映像B;以及
在初始化的所述内核映像B之上,执行用户上下文中的至少一个用户程序的至少一部分,所述用户上下文先前在所述设备在内核映像A的控制下的操作期间被创建;
由此所述方法将所述设备从内核映像A更新到内核映像B,而不丢失所述用户上下文并且使值在内核数据结构中被更新。
7.根据权利要求6所述的内核软重置方法,还包括在将控制传递给初始化的所述内核映像B之前,验证所述内核映像B。
8.根据权利要求6所述的内核软重置方法,
其中所述方法还包括在所述设备的所述引导软件检查所述内核软重置指示器之前被执行的以下操作:将在内核映像A下被创建的所述用户上下文的副本保存到非易失性存储装置,以及将所述内核软重置指示器设置为指示内核软重置正在进行;并且其中所述方法还包括在将控制传递给初始化的所述内核映像B之前被执行的以下步骤:将所述用户上下文从所述非易失性存储装置恢复到所述操作存储器。
9.根据权利要求6所述的内核软重置方法,其中所述方法避免执行在所述设备的冷引导期间被执行的上电自检。
10.根据权利要求6所述的内核软重置方法,其中从重置命令到所述方法将控制传递给初始化的内核映像B时所经过的时间不多于从断电状态到执行所述设备的冷引导所经过的时间的70%,所述冷引导将控制传递给初始化的内核映像B。
11.根据权利要求6所述的内核软重置方法,其中所述方法包括以下中的至少一项:
应用安全补丁以从内核映像A产生内核映像B;
将修复应用于所述设备的固件并且使用内核映像A作为内核映像B;或
改变与至少一个芯片组粘滞寄存器相关联的平台策略。
12.根据权利要求6所述的内核软重置方法,其中所述方法包括以下中的至少一项:
通过在传递给内核映像B而不是内核映像A时保留或恢复所述用户上下文,避免对服务进行重新初始化;
通过在传递给内核映像B而不是内核映像A时保留或恢复所述用户上下文,避免对虚拟机进行重新初始化;
通过在传递给内核映像B而不是内核映像A时保留或恢复所述用户上下文,避免对应用进行重新初始化。
13.一种数据中心或云计算设施中的服务器,所述服务器包括:
内核映像A;
在所述服务器在内核映像A的控制下的操作期间生成的用户上下文;
内核映像B;
至少一个处理器;
与所述处理器处于可操作通信的操作存储器,所述操作存储器包括易失性随机存取存储器(RAM)并且包含所述用户上下文和所述内核映像A的至少一部分;
内核重置存储器,所述内核重置存储器包括包含所述内核映像B的非易失性存储装置;
内核软重置指示器,所述内核软重置指示器包括以下中的至少一项:存储在硬盘上的标志、平台通信信道共享存储器区域中的标志、高级配置和电源接口标志;以及引导软件,所述引导软件包括基本输入/输出(BIOS)软件或统一可扩展固件接口(UEFI)软件或两者,所述引导软件包括在执行时检查所述内核软重置指示器的代码,并且当所述内核软重置指示器指示内核软重置正在进行时,所述代码:(a)将所述内核映像B从所述内核重置存储器加载到所述操作存储器中,(b)初始化所述内核映像B中的内核数据结构,以及(c)将控制传递给初始化的所述内核映像B,以在内核映像B的控制下利用相同用户上下文继续所述服务器的操作,并且当所述内核软重置指示器指示内核软重置未正在进行时,所述代码不将控制传递给内核映像B以利用相同用户上下文继续所述系统的操作。
14.根据权利要求13所述的服务器,其中所述内核重置存储器非易失性存储装置包括NVDIMM或NVRAM存储器或两者,并且所述引导软件还包括代码,所述代码在执行时在将所述内核映像B从所述内核重置存储器加载到所述操作存储器中之后并且在初始化的所述内核映像B的控制下利用相同用户上下文继续所述系统的操作之前,将所述用户上下文从所述内核重置存储器非易失性存储装置复制到所述操作存储器中。
15.根据权利要求13所述的服务器,其中以下特征中的至少三项是正确的:
内核映像B与内核映像A的不同在于安全补丁;
内核映像B是内核映像A的磁盘大小的至多90%;
内核映像B包括纠正内核映像A中存在的错误的代码;
在所述用户上下文的创建之后并且在控制向初始化的所述内核映像B的传递之前,修复被应用于所述服务器的固件;
内核映像B与内核映像A的不同至多在于内核初始化或驱动器初始化或两者;
所述用户上下文包括初始化的服务;
所述用户上下文包括初始化的虚拟机;
所述用户上下文包括初始化的应用;
在不执行上电自检的情况下从重置命令到控制传递给初始化的内核映像B时所经过的时间不多于从断电状态到执行所述服务器的冷引导所经过的时间的65%,所述冷引导在上电自检之后将控制传递给初始化的内核映像B。

说明书全文

使用非易失性RAM的内核软重置

背景技术

[0001] 在使用计算机之前的某个时刻通常引导计算机。计算机引导通常涉及一系列步骤。这些步骤可以包括:被执行以标识硬件可用并对其进行初始化的上电自检和平台初始化;定位和加载引导管理器,该引导管理器定位并运行定位和运行内核的系统加载器;对设备驱动器进行初始化;以及其他步骤。在内核和基本驱动器被初始化并运行之后,用于利用计算机的另外步骤可以包括初始化和运行虚拟机和支持服务,诸如存储、联网、目录和其他服务。虚拟机可以继而运行它们自己的操作系统,这继而又支持诸如用户应用之类的应用来执行事务、科学计算、模拟、数据库以及许多其他类型的计算工作。发明内容
[0002] 本文描述的一些技术涉及在不丢失已经由虚拟机或用户应用创建的用户上下文的情况下更新计算系统中的内核的技术活动。本文的一些技术涉及在不重新启动虚拟机或用户应用的情况下重新初始化内核数据结构。一些涉及减少在计算系统重置之后所执行的操作,从而减少停机时间,同时保留由虚拟机或用户应用创建的用户上下文。与本文的教导相关的其他技术活动对于本领域技术人员而言也将变得显而易见。
[0003] 在一些实施例中,服务器或其他计算系统支持内核软重置以用于在不丢失用户上下文的情况下更新内核。计算系统包括内核映像A、在系统在内核映像A的控制下的操作期间生成的用户上下文、以及可以与内核映像A不同的内核映像B(也可以在不改变内核的情况下对固件进行更新)。存在至少一个处理器,并且存在操作存储器并且操作存储器与处理器可操作地通信。操作存储器包括易失性随机存取存储器(RAM)并且包含用户上下文和内核映像A的至少一部分。还存在内核重置存储器,其中非易失性存储装置包含内核映像B。内核重置存储器可以以RAM速度操作,例如,它可以包括NVDIMM或类似的存储器。还存在位标志、变量或另一内核软重置指示器。
[0004] 在操作中,在该实施例中,引导软件代码检查内核软重置指示器。当内核软重置指示器指示内核软重置正在进行时,代码:(a)将内核映像B从内核重置存储器加载到操作存储器中,(b)初始化内核映像B的内核数据结构,以及(c)将控制传递给初始化的内核映像B以在内核映像B的控制下而不是在内核映像A的控制下利用相同用户上下文继续系统的操作。当内核软重置指示器指示内核软重置未进行时,引导软件代码不将控制传递给内核映像B以利用相同用户上下文继续系统的操作。相反,它可以将控制传递回内核映像A,或者它可以将控制传递给内核映像B而不保留用户上下文。
[0005] 本文描述的一些实施例提供或使用内核软重置方法,其包括设备的引导软件检查内核软重置指示器。在发现内核软重置指示器指示内核软重置正在进行时,则将内核映像B加载到设备的操作存储器中,初始化加载的内核映像B的内核数据结构,并且将控制传递给初始化的内核映像B。然后,在初始化的内核映像B之上,在用户上下文中执行至少一个用户程序的至少一部分;用户上下文先前在设备在内核映像A的控制下的操作期间被创建。因此,该方法将设备从内核映像A更新到内核映像B而不丢失用户上下文并且在内核数据结构中更新值。
[0006] 给出的示例仅是说明性的。本发明内容不旨在标识所要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求保护的技术方案的范围。相反,提供本发明内容是为了--以简化的形式--介绍将在下面的具体实施方式中进一步描述的一些技术概念。该创新是以权利要求来定义的,并且在本发明内容与权利要求冲突时,应以权利要求为准。附图说明
[0007] 将参考附图给出更具体的描述。这些附图仅图示了所选择的方面并且因此未完全确定覆盖范围或范围。
[0008] 图1是图示具有在软件的控制下彼此交互的至少一个处理器和至少一个存储器的计算机系统、并且还图示了一些配置的存储介质示例的框图
[0009] 图2是图示包括内核软重置(KSR)技术的示例服务器计算架构的方面的框图;
[0010] 图3是图示诸如图2中所示的计算系统中的引导软件的示例的框图;
[0011] 图4是图示诸如图2中所示的计算系统中的内核重置存储器的方面的框图;
[0012] 图5是图示可以被提供有KSR技术的计算系统的示例的框图;
[0013] 图6是图示不采用完全KSR技术的重置序列的流程图
[0014] 图7是图示避免上电自检但不采用完全KSR技术的重新引导序列的流程图;
[0015] 图8是图示KSR技术的方面及其在重置序列中避免的项的流程图;
[0016] 图9是图示不采用完全KSR技术的引导序列的流程图;
[0017] 图10是图示KSR技术的各方面及其在引导序列中避免的项的流程图;以及
[0018] 图11是进一步图示被配置用于与KSR技术一起使用的一些过程和配置的存储介质的方面的流程图。

具体实施方式

[0019] 概述
[0020] 高可用性(例如,99.999%或更长的正常运行时间(uptime))是针对一些提供商的关键SLA度量,并且还可以是用于其他目的的数据中心的目标。系统重置可能非常昂贵并影响SLA目标。然而,由于各种原因,诸如应用安全补丁、进行系统固件修复以及对在固件中或在内核中操作的可执行代码、配置值或数据结构进行其他改变,系统重置可能是期望的或甚至是需要的。此外,与诸如常规的软重置之类的提供相对,对与芯片组粘滞寄存器相关联的平台策略的改变可能需要完全系统重置。由于系统重置控制流程通常遵循传统的预引导流程,因此来自最近的在先引导的存储器映射受到损害。BIOS操作将在由先前OS引导实例拥有的存储器区域上影响预引导代码。
[0021] 省略传统引导流程的一部分以便优化计算系统的正常运行时间或其他特性可能导致数据损坏,这是不期望的并且有时难以检测。然而,一些有限的优化是已知的。例如,一些优化在S3睡眠状态期间保留易失性存储器中的OS上下文,然后通过一个或多个唤醒向量恢复OS上下文。这可以有助于功率管理,但它不准许对内核的升级或者对在固件中或内核中操作的可执行代码、配置值或数据结构进行其他改变。也可以将系统上下文存储到磁盘,但存储和恢复操作以通常比RAM速度慢得多的磁盘速度发生,因此降低了计算机用于运行用户应用的可用性。
[0022] 一些系统准许内核的所谓的“实时引导”或“实时修补”。这将控制传递给替代内核而无需完全重新引导,这允许对某些内核代码的升级,但不像完全引导那样的方式重新初始化内核数据结构。完全重新引导允许对在固件中或在内核中操作的可执行代码、配置值或数据结构进行改变,但也会破坏应用和虚拟机中的用户上下文。完全重新引导还执行上电自检和其他平台发现、测试和初始化操作,这可能占用重新引导所花费的时间的四分之一或更多,从而减少了系统正常运行时间。
[0023] 本公开描述并图示了内核软重置(KSR)技术。不管在本公开之外可能发生的任何用法如何,术语“内核软重置”在本文中具有特定含义。除非本文另有明确说明,否则“内核软重置”和“KSR”指的是如下的技术,其支持对在固件中或在内核中操作的可执行代码、配置值或数据结构的改变,同时保留应用上下文并且避免在常规的完全引导期间所执行的上电自检和其他平台发现、测试和初始化操作的至少一部分。技术人员将理解,给定的KSR技术或其性能因此具有以下特性中的一个或多个特性:
[0024] ·执行KSR与休眠之后重新开始不同,因为KSR允许引导不同的内核,但重新开始将重新开始相同的内核。
[0025] ·执行KSR与重新引导不同,因为KSR维护用户上下文(VM、应用、服务),但重新引导不会。
[0026] ·KSR比重新引导快,部分地因为KSR避免了上电自检。
[0027] ·执行KSR与实时修补或实时引导不同,因为KSR重新初始化内核的内部数据结构,但实时修补和实时引导不会。
[0028] ·虽然它保留了用户上下文,但无论是否将用户上下文保存到非易失性存储装置,在某些实施例中都可以进行KSR,因为KSR可以使用保留在RAM中的用户上下文,或者KSR可以从NVDIMM或HDD中恢复用户上下文。
[0029] ·可以在各种设备上进行KSR,以出于各种原因高效地重新引导内核。
[0030] 通过参考如图1中所图示的计算系统102中使用的现有过程,可以更好地理解KSR技术。稍后将在本文中更详细地讨论系统102。这里需要注意几个组件的存在。存在至少一个处理器110,其与易失性工作存储器112(例如RAM)处于可操作的通信,易失性工作存储器112在RAM被供电时保持加载的OS 120、加载的app 124和其他数据,并且当对RAM的电丢失时其丢失该信息。存在电源128,具有机械开关并且还可能受软件控制。非易失性引导存储器112保持BIOS或EFI或UEFI代码122。引导存储器保持其内容而不管其是否具有电力。引导存储器代码至少可以做两件事情:执行POST并加载引导加载器(bootloader)。POST包括基本检查,以查看存在什么硬件以及它是否通过了某些功能性测试。引导加载器是加载操作系统的代码。非易失性工作存储器112,例如硬盘,也存在于大多数系统中;它保持OS、app和数据,而不管它是否具有电力。通常还存在外围设备106。它们通常包括至少一个输入设备和一个输出设备,它们可以是同一设备,例如触摸屏
[0031] 在这样的系统102中,一些现有过程确定所使用的内核、内核数据结构值和用户上下文。下面讨论几个这样的过程。
[0032] 常规的工厂重置。此过程将系统的存储器恢复到其原始制造状态。在原始制造之后添加的app、数据、偏好、设备驱动器、OS补丁等都从系统中被移除,并且OS、app、偏好等的所有原始版本被恢复到系统。
[0033] 常规的有序关闭。基本上,这通过保存目录、分配表和描述数据组织的其他结构的当前版本来使运行软件有机会防止数据损坏,并有机会保存数据本身。例如,关闭命令会命令app和其他进程关闭,这进而使这些进程有机会将数据冲刷到非易失性存储器并关闭任何打开的文件,并有机会将分配的存储器释放回到OS。关闭命令还命令设备驱动器将I/O数据和当前目录信息冲刷到所附接的设备。在ACPI兼容系统上,关闭命令可能导致Power命令的发出,这使得NVDIMM将数据从其易失性部分保存到其非易失性部分。
[0034] 常规的休眠。这将加载的OS代码、OS上下文、加载的应用代码和应用上下文从易失性工作存储器(RAM)保存到非易失性工作存储器(例如,磁盘)中的休眠文件中。然后切断到系统的电力。RAM内容丢失,但磁盘上的副本存活。为了从休眠唤醒,恢复电力并将保存的代码和上下文从休眠文件加载到RAM中,覆盖其中的任何内容。
[0035] 常规的睡眠。这切断到显示器和处理器以及磁盘的电力,但维持对易失性工作存储器(RAM)的电力。如果切断电力,则数据丢失。如果没有切断电力,那么为了从睡眠唤醒,将电力恢复到显示器和处理器以及磁盘;RAM中的代码和上下文仍然在那里。
[0036] 常规的休眠-睡眠-混合。这将加载的代码和上下文从易失性工作存储器(RAM)保存到非易失性工作存储器(例如,磁盘)中的休眠文件中。然后系统切断到显示器和处理器以及磁盘的电力,但维持到易失性工作存储器(RAM)的电力。如果切断电力,则RAM内容丢失,但磁盘上的副本存活。
[0037] 常规的硬重新引导。以没有电力开始,除了可能的电源按钮。给系统供电。引导存储器代码(BIOS/EFI/UEFI)执行POST。然后,引导存储器代码将引导加载器从引导设备加载到RAM中。引导加载器将OS从非易失性工作存储器或通过网络连接加载到RAM中。硬重新引导开始时在RAM中的任何内容都可能被覆盖。
[0038] 常规的软重新引导。从给系统供电开始。POST被跳过。引导存储器代码将引导加载器从引导设备加载到RAM中。引导加载器将OS从非易失性工作存储器或通过网络连接加载到RAM中。软重新引导开始时在RAM中的任何内容都可能被覆盖。
[0039] 一些KSR技术可以在系统102被供电或未被供电的情况下启动。如果系统未被供电,则为系统供电并执行POST。在任一情况下(最初被供电或最初未被供电),引导存储器代码都将KSR修改的引导加载器从引导设备加载到RAM中。修改的引导加载器检查以查看修改的(即KSR)关闭是否被执行。可以例如使用ACPI PCC邮箱进行该检查。如果未执行修改的关闭,则修改的引导加载器将OS从例如磁盘的非易失性存储器加载到RAM中,从而覆盖RAM中的任何内容。必须重新加载并重新启动app。这与常规的重新引导(硬或软)相匹配。
[0040] 然而,如果修改的关闭被执行,则修改的引导加载器试图验证修改的关闭的结果。如果它们通过,则它们被加载;这将OS上下文、已关闭的任何app以及那些app上下文从NVDIMM或对于常规的引导过程不可见的其他非易失性存储加载到RAM中。OS从引导设备加载,如在常规的重新引导中那样。这类似于从休眠中唤醒,但加载的上下文信息从专用的非易失性存储装置(KSR重置存储器)进入到RAM中,而不是从磁盘进入到RAM中。可以针对KSR修改有序关闭,以具有将OS上下文、已关闭的任何app以及那些app上下文从操作存储器RAM保存到NVDIMM或其他非易失性存储装置中的选项,并且以然后设置修改的关闭被执行的指示器(例如,ACPI标志)。
[0041] 可以在更宽泛的上下文中查看本文所描述的一些实施例。例如,诸如引导、上下文、初始化、保留和升级之类的概念可以与特定实施例相关。然而,从宽泛上下文的可用性来看并不是在本文中寻求抽象概念的专有权;它们不是。相反,本公开关注于提供适当的特定实施例,其技术效果完全或部分地解决特定技术问题。涉及引导、上下文、初始化、保留或升级的其他介质、系统和方法在本发明的范围之外。因此,在正确理解本公开的情况下,也避免了模糊性、纯粹的抽象性、技术特征的缺乏以及伴随的证据问题。
[0042] 本文描述的实施例的技术特征对于本领域普通技术人员来说是显而易见的,并且也将以若干方式对于广泛的细心读者来说是显而易见的。首先,一些实施例涉及植根于计算技术的技术活动,诸如定位、加载、初始化和运行引导软件、内核和应用。其次,一些实施例包括诸如计算硬件之类的技术组件,其以超出通用计算机内的典型交互的方式与软件交互。例如,除了诸如一般的存储器分配、一般的存储器读取和写入、一般的指令执行以及某种I/O之类的正常交互之外,本文描述的一些实施例利用ACPI邮箱或其他KSR标志,并且一些实施例利用由操作系统和应用使用的操作存储器之外的非易失性存储器。第三,由一些实施例提供的技术效果包括减少用于对在固件中或在内核中操作的可执行代码、配置值或数据结构的改变的停机时间,同时保留应用上下文并且避免在常规的完全引导期间执行的上电自检和其他平台发现、测试和初始化操作中的至少一部分。第四,一些实施例包括技术适应,诸如KSR指示器和KSR适应的引导软件。第五,一些实施例通过添加备用控制流程来修改计算环境的技术功能性,该备用控制流程从非易失性存储装置恢复用户上下文、重新初始化内核数据结构并且避免至少部分的常规引导流程。第六,一些实施例的技术优点包括减少用于对在固件中或在内核中操作的可执行代码、粘滞芯片组策略或数据结构进行改变的停机时间。根据所提供的描述,其他优点对于技术人员也将是显而易见的。
[0043] 首字母缩略词和缩写
[0044] 以下定义了一些首字母缩略词和缩写。其他的可以在本文其他地方进行定义,或者不需要定义而由技术人员理解。
[0045] ACPI:高级配置和电源接口
[0046] ALU:算术和逻辑单元
[0047] API:应用程序接口
[0048] APP:应用
[0049] BIOS:基本输入/输出系统
[0050] CD:压缩碟
[0051] CPU:中央处理单元
[0052] DC:数据中心
[0053] DVD:数字通用盘或数字视频碟
[0054] EFI:可扩展固件接口
[0055] FPGA:现场可编程阵列
[0056] FPU:浮点处理单元
[0057] GPU:图形处理单元
[0058] GUI:图形用户界面
[0059] HDD:硬盘驱动(例如,固态、机电、光学)
[0060] KSR:内核软重置
[0061] NUMA:非均匀存储器访问
[0062] NVDIMM:非易失性双列直插式存储器模
[0063] OS:操作系统
[0064] PCC:平台通信信道
[0065] PCI:外围组件互连
[0066] POST:上电自检
[0067] QPI:快速的路径互连,即快速路径互连
[0068] RAM:随机存取存储器
[0069] ROM:只读存储器
[0070] SLA:服务等级协议
[0071] SPI:串行外围接口
[0072] UEFI:统一可扩展固件接口
[0073] VM:虚拟机
[0074] 附加术语
[0075] 在本文中参考诸如附图中所图示的那些之类的示例性实施例,并且在本文中使用特定语言来描述它们。但是,本文中所图示的特征的改变和进一步修改以及由本文的特定实施例所图示的、由(一个或多个)相关领域的技术人员想到的并且拥有本公开的抽象原理的附加技术应用应当被认为在权利要求的范围内。
[0076] 在本公开中阐明了术语的含义,因此应该在仔细关注这些说明的情况下来阅读权利要求。给出了具体示例,但是(一个或多个)相关领域的技术人员将理解,其他示例也可以落入所使用的术语的含义内,并且落入一个或多个权利要求的范围内。这里的术语不一定与它们在一般用法(特别是非技术用途)中或在特定工业使用中、或在特定字典或字典集中具有相同的含义。附图标记可以与各种措辞一起使用,以帮助示出术语的广度。从给定文本中省略附图标记不一定意味着文本没有讨论附图的内容。发明人声称并行使他们对其自己的词典编纂的权利。带引号的术语是明确定义的,但也可以隐含地定义术语而不使用引号。可以在具体实施方式中和/或申请文件中的其他地方明确地或隐含地定义术语。
[0077] 如本文所使用的,“计算机系统”可以包括例如一个或多个服务器、主板、处理节点、个人计算机(便携式或非便携式)、个人数字助理、智能电话、智能手表、智能带、蜂窝或移动电话、具有至少一个处理器和存储器的其他移动设备、和/或提供至少部分地由指令控制的一个或多个处理器的(一个或多个)其他设备。指令可以是存储器和/或专用电路中的固件或其他软件的形式。特别地,尽管可能发生许多实施例在服务器计算机上运行的情况,但是其他的一些实施例可以在其他计算设备上运行,并且任何一个或多个这样的设备可以是给定实施例的一部分。
[0078] “多线程”计算机系统是支持多个执行线程的计算机系统。术语“线程”应该被理解为包括能够或受到调度(并且可能是同步)的任何代码,并且例如还可以通过诸如“任务”、“进程”或“协程”之类的另一名称而被知晓。线程可以并行运行、顺序运行、或者以并行执行(例如,多处理)和顺序执行(例如,时间分片)的组合运行。已经在各种配置中设计了多线程环境。执行线程可以并行运行,或者可以将线程组织起来以进行并行执行,但实际上轮流按顺序执行。例如,可以通过在多处理环境中的不同核上运行不同的线程,或者通过对单个处理器核上的不同线程进行时间分片,或者通过时间分片和多处理器线程的某种组合来实现多线程。线程上下文切换可以例如由内核的线程调度器、由用户空间信号或由用户空间和内核操作的组合来发起。例如,线程可以对共享数据轮流操作,或者每个线程可以对其自己的数据进行操作。
[0079] “逻辑处理器”或“处理器”是单个独立的硬件线程处理单元,诸如同时多线程实现中的核。作为另一示例,每个核运行两个线程的超线程四核芯片具有八个逻辑处理器。逻辑处理器包括硬件。术语“逻辑”用于强调给定芯片可以具有一个或多个处理器;“逻辑处理器”和“处理器”在本文中可互换地使用。处理器可以是通用的,或者它们可以针对诸如图形处理、信号处理、浮点算术处理、加密、I/O处理等等之类的特定用途而被定制。
[0080] “多处理器”计算机系统是具有多个逻辑处理器的计算机系统。多处理器环境在各种配置中出现。在给定配置中,所有处理器可以在功能上相等,而在另一配置中,借助于具有不同的硬件能力、不同的软件分配或两者,一些处理器可以与其他处理器不同。取决于配置,处理器可以在单个总线上彼此紧密耦合,或者它们可以松散耦合。在一些配置中,处理器共享中央存储器,在一些配置中它们各自具有它们自己的本地存储器,并且在一些配置中,共享和本地存储器两者都存在。
[0081] “内核”包括操作系统、管理程序和类似的硬件接口软件。BIOS代码和EFI或UEFI代码可以被认为在功能上是内核的一部分,但是在本文中也被单独调出,因为它们通常在引导或重置过程中比内核代码更早执行,内核代码更大并且是从引导设备中而不是从主板或通常为BIOS/EFI/UEFI代码而保留的类似存储装置中加载的。
[0082] “代码”意指处理器指令、数据(其包括常数、变量和数据结构)、或指令和数据两者。“代码”和“软件”在本文中可互换使用。可执行代码、解释代码和固件是代码的一些示例。
[0083] “逻辑”可以包括例如专用硬件或软件或固件。
[0084] “容量”意指一个或多个计算资源的使用或控制。
[0085] “优化”意指改进,不一定是完美的。例如,可以在已经被优化的程序或算法中进行进一步的改进。
[0086] 本文中广泛使用“程序”来包括应用、内核、驱动器、中断处理程序、固件、状态机、库以及由编程者(也称为开发人员)编写和/或自动生成的其他代码。
[0087] “例程”意指经由跳转和上下文保存来接收控制的函数、过程、异常处理程序、中断处理程序或另一指令块。上下文保存推送堆栈上的返回地址或以其他方式保存返回地址,并且还可以保存在从例程返回时要被恢复的寄存器内容。
[0088] “服务”意指计算环境中的程序,其向多个应用程序提供功能性或计算资源访问。
[0089] “IoT”或“物联网”意指可寻址的嵌入式计算节点的任何联网集合。这样的节点是本文所定义的计算机系统的示例,但是它们还具有以下特征中的至少两个:(a)没有本地的人类可读显示器;(b)没有本地键盘;(c)主要输入源是跟踪非语言数据源的传感器;(d)没有本地旋转磁盘存储装置--RAM芯片或ROM芯片提供唯一的本地存储器;(e)没有CD或DVD驱动器;(f)嵌入家用电器中;(g)嵌入植入式医疗设备中;(h)嵌入交通工具中;(i)嵌入过程自动化控制系统中;或(j)关注于以下之一的设计:环境监测、公民基础设施监测、工业设备监测、能源使用监测、人类或动物健康监测、或物理运输系统监测。
[0090] “管理程序”是运行虚拟机的软件平台。一些示例包括 (思杰系统公司的商标)、Hyper- (微软公司的商标)和KVM(基于内核的虚拟机)软件。
[0091] 除非另有说明,否则如本文所使用的,“包括”允许附加的元件(即,包括意指包含)。“由...组成”意指基本上由或完全由......组成。在涉及所讨论的权利要求的情况下,当X的非Y部分(如果有的话)可以自由地改变、移除和/或添加而不改变所要求保护的实施例的功能性时,X基本上由Y组成。
[0092] “进程”有时在本文中用作计算科学领域的术语,并且在该技术意义上涵盖资源用户,即,例如协程、线程、任务、中断处理程序、应用进程、内核进程、过程和对象方法。“过程”在本文中也用作专利法术语,例如,在描述与系统权利要求或制品(配置的存储介质)权利要求相对的过程权利要求时。类似地,“方法”在本文中有时用作计算科学领域中的技术术语(一种“例程”),并且还用作专利法术语(“过程”)。本领域技术人员将理解在特定实例中所意图的含义,并且还将理解给定的要求保护的过程或方法(在专利法意义上)有时可以使用一个或多个进程或方法(在计算科学意义上)来实现。“过程”与“进程”可互换使用。
[0093] “自动地”意指与没有自动化相对,通过使用自动化(例如,为了本文所讨论的特定操作和技术效果而由软件配置的通用计算硬件)。特别地,“自动地”执行的步骤不是通过手工在纸上或在人的头脑中执行的,尽管它们可以由人发起或由人交互地引领。利用机器执行自动步骤,以便获得在没有如此提供的技术交互的情况下将无法实现的一个或多个技术效果。
[0094] 技术人员理解,技术效果是技术实施例的推定目的。例如,实施例中涉及计算以及某些计算也可以在没有技术组件的情况下执行(例如,通过纸和笔或者甚至作为精神步骤)的事实并不去除技术效果的存在或改变该实施例的具体和技术性质。诸如定位、验证、加载和运行代码以及标识和初始化系统硬件之类的操作在本文中被理解为除了它们固有的数字性质之外还要求并提供通过人类心理步骤无法获得的速度和准确性。这是本领域技术人员所理解的,但有时可能需要将该事实通知或提醒他人。
[0095] “计算地”同样意指正在使用计算设备(至少处理器加存储器),并且排除仅通过人类思想或单独地通过人类动作获得结果。例如,如本文所理解的那样,用纸和笔进行算术不是计算地进行算术运算。计算结果更快、更广泛、更深入、更准确、更一致、更全面、和/或以其他方式提供超出单独人类表现范围的技术效果。“计算步骤”是被计算地执行的步骤。“自动地”和“计算地”都不一定意指“立即”。“计算地”和“自动地”在本文中可互换使用。
[0096] “主动地”意指没有来自用户的直接请求。实际上,用户可能甚至没有意识到由实施例进行的主动步骤是可能的,直到步骤的结果已经被呈现给用户。除非另有说明,否则本文描述的任何计算和/或自动步骤也可以主动完成。
[0097] “语言上”意指通过使用自然语言或在面对面的人与人通信中常常采用的另一种形式的通信。语言上通信包括例如说话、打字、或用一个人的手指、手、脸和/或身体打手势。
[0098] 贯穿本文档,使用可选的复数“(一个或多个)”意指存在一个或多个所指示的特征。例如,“(一个或多个)处理器”意指“一个或多个处理器”或等价地意指“至少一个处理器”。
[0099] 出于美国法律和实践的目的,在权利要求书或其他地方,本文中的“步骤”一词的使用并非旨在引用装置加功能、步骤加功能或美国法典第35章第112条第6款/第112(f)条权利要求解释。特此明确驳回任何此类推定。
[0100] 出于美国法律和实践的目的,权利要求不旨在引用装置加功能解释,除非它们使用短语“用于......的装置”。旨在被解释为装置加功能语言的权利要求语言(如果有的话)将通过使用短语“用于......的装置”来明确地记载该意图。当装置加功能解释适用时,无论是通过使用“用于......的装置”和/或通过法院的权利要求语言的法律结构,针对给定名词或给定动词的说明书中记载的装置应当被理解为通过以下任何一种方式链接到权利要求语言并且在本文中链接在一起:在附图的框图中出现在同一框内,由相同或相似的名称表示,由相同的附图标记表示。例如,如果权利要求限制记载了“zac小部件”并且该权利要求限制变得受装置加功能解释的约束,则至少在说明书中在任何图框、段落或示例中在任何地方标识的提到“zac小部件”或者通过分配给zac小部件的任何附图标记绑定在一起的所有结构将被视为在zac小部件应用中标识的结构的一部分,并且将帮助定义zac小部件结构的等价物的集合。
[0101] 贯穿本文档,除非另有明确说明,否则对过程中的步骤的任何提及都假定该步骤可以由感兴趣一方直接执行和/或由该方通过中间机制和/或中间实体间接地执行,并且仍然在该步骤的范围内。也就是说,除非直接执行是明确说明的要求,否则不需要由感兴趣一方直接执行步骤。例如,涉及感兴趣一方关于目的地或其他主体的动作的步骤(诸如改变、检查、清除、复制、创建、执行、生成、指示、初始化、加载、传递控制、保存、设置、恢复、更新、验证或避免或应用它们(和改变、被改变、检查、被检查等))可以涉及某个其他方的中间动作,诸如转发、复制、上载、下载、编码、解码、压缩、解压缩、加密、解密、验证、调用等,但是仍然被理解为由感兴趣一方直接执行。
[0102] 无论何时提及数据或指令,应当理解这些项配置计算机可读存储器和/或计算机可读存储介质,从而将其转换为特定物品,而不是简单地例如存在于纸上、在一个人的思想中、或者仅仅是在电线上传播的信号。出于美国专利保护的目的,存储器或其他计算机可读存储介质不是在美国专利商标局(USPTO)对In re Nuijten案件的解释下的可专利技术方案的范围之外的传播信号或载波。在美国,任何权利要求都不覆盖信号本身,并且以其他方式主张的任何权利要求解释在其表面上都是不合理的。除非在美国之外授权的权利要求中另有明确规定,否则权利要求不覆盖信号本身。
[0103] 此外,尽管本文中其他地方有任何明显相反的情况,但应当理解在一方面(a)计算机可读存储介质和计算机可读存储器与在另一方面(b)传输介质(也称为信号介质)之间的明确区分。传输介质是传播信号或载波计算机可读介质。与之相比,计算机可读存储介质和计算机可读存储器不是传播信号或载波计算机可读介质。除非在权利要求中另有明确说明,否则“计算机可读介质”表示计算机可读存储介质,而不是传播信号本身。
[0104] 本文中的“实施例”是示例。术语“实施例”不能与“本发明”互换。实施例可以自由地共享或借用方面以创建其他实施例(假定结果是可操作的),即使本文中未明确描述所得到的方面组合。要求明确描述每个允许的组合对于本领域技术人员来说是不必要的,并且将违背认识到专利说明书是为作为本领域技术人员的读者而编写的策略。关于由甚至少量可组合特征引起的可能组合的数量的正式组合计算和非正式的共同直觉也将指示对于本文中描述的方面存在大量的方面组合。因此,要求对每种组合进行明确的记载将违背要求专利说明书简洁并且使读者了解相关技术领域的策略。
[0105] 附图标记列表
[0106] 提供以下列表是为了方便和支持附图并且作为说明书文本的一部分,其通过参考多个项来描述创新。此处未列出的项可能仍然是给定实施例的一部分。为了文本的更好的易读性,在文本中引用的项的一些但不是全部的记载附近记载给定的附图标记。可以参考给定项的不同示例或不同实例来使用相同的附图标记。附图标记列表是:
[0107] 100 操作环境
[0108] 102 计算机系统
[0109] 104 用户
[0110] 106 外围设备
[0111] 108 网络
[0112] 110 处理器
[0113] 112 计算机可读存储介质,例如RAM、硬盘
[0114] 114 可移除的配置的计算机可读存储介质
[0115] 116 可用处理器执行的指令
[0116] 118 数据
[0117] 120 内核
[0118] 122 固件
[0119] 124 应用
[0120] 126 显示屏幕
[0121] 128 其他硬件
[0122] 202 服务器计算机
[0123] 204 内核重置存储器
[0124] 206 非易失性存储装置
[0125] 208 内核映像
[0126] 210 内核数据结构
[0127] 212 操作存储器
[0128] 214 RAM,例如,易失性随机存取存储器
[0129] 216 用户上下文,例如,用户进程中的状态信息
[0130] 218 内核软重置指示器,例如,位标志或其他标志
[0131] 220 适于执行内核软重置操作的引导软件
[0132] 222 平台通信信道
[0133] 224 高级配置和电源接口
[0134] 226 硬盘,即,格式化以操作为盘(可以是固态盘、光盘、机电或其他方式)的非易失性存储装置
[0135] 302 基本输入/输出系统软件
[0136] 304 统一可扩展固件接口软件
[0137] 306 内核映像验证代码
[0138] 502 云服务器(服务器202的一个示例)
[0139] 504 数据中心服务器(服务器202的一个示例)
[0140] 506 运行一个或多个虚拟机的服务器;可以是云服务器或数据中心服务器或其他服务器
[0141] 508 智能电话
[0142] 510 平板计算设备
[0143] 512 膝上型计算机
[0144] 514 台式计算机
[0145] 516 工作站计算机
[0146] 518 视频游戏系统
[0147] 520 虚拟现实系统
[0148] 522 增强现实系统
[0149] 524 交通工具,例如汽车卡车、火车、飞机、直升机船舶、潜艇、航天器、导弹、无人驾驶飞机或运输(一个或多个)人或物理货物或数据或其组合的其他交通工具
[0150] 526 自动制造系统或其他机器人系统或工业过程控制系统,例如机器人手术系统、机器人搜索和救援设备、机器人探索设备、机器人安全设备、机器人监视设备、工厂中的机器人制造系统、核或化学或半导体或其他过程控制系统
[0151] 528嵌入式系统,例如智能家电或其他物联网设备;可以包括机器人或过程控制系统526
[0152] 600 正常计算机系统重置序列
[0153] 602 由人类用户或通过自动化过程对关闭的发起
[0154] 604 将用户从系统中注销
[0155] 606 例如通过将数据保存到磁盘、释放用户数据结构的已分配的存储器、关闭文件和套接字来关闭包括可启动应用、虚拟机的用户进程
[0156] 608 关闭系统进程,包括到文件系统和可启动应用的图形用户界面、会话管理器、安全管理器、任务调度器等
[0157] 610 关闭设备驱动器和I/O系统
[0158] 612 运行固件,可以包括运行BIOS或UEFI固件
[0159] 614 执行平台初始化或上电自检或两者
[0160] 616 运行引导管理器(616也指代引导管理器,取决于引用的上下文)
[0161] 618 运行系统加载器(618也指代系统加载器,取决于引用的上下文)
[0162] 620 加载和初始化设备驱动器和内核
[0163] 622 在启动入口点将控制传递给内核
[0164] 700 用于重新引导的控制流程,其中操作系统被保留在存储器中(由系统加载器确认)
[0165] 800 使用NVDIMM或其他非易失性存储装置来保留用户上下文的内核软重置序列[0166] 802 将用户上下文保存到NVDIMM或其他非易失性存储装置
[0167] 804 将KSR标志设置为指示KSR正在进行
[0168] 806 将用户上下文从非易失性存储装置恢复到操作存储器
[0169] 808 初始化内核和设备驱动器
[0170] 810 在重新开始点将控制传递给替代内核,恢复用户上下文并且替代内核的数据结构和设备驱动器被初始化
[0171] 812 系统存储器映射,指示存在哪些存储器部分以及哪些软件可以使用给定部分[0172] 814 NVDIMM或以RAM速度操作以进行读取和写入的其他非易失性存储装置
[0173] 816 可用于由内核使用的存储器,包括操作存储器
[0174] 818 保持BIOS或UEFI代码和数据的存储器
[0175] 900 常规引导流程,即,不使用内核软重置技术
[0176] 902 接通到计算系统的电力
[0177] 904 运行BIOS代码或UEFI代码或两者
[0178] 906 运行操作系统
[0179] 908 服务器或其他计算设备主板,即主处理器和操作存储器的至少一部分的位置,通常也是BIOS代码或UEFI代码的位置
[0180] 910 SPI闪存或其中存储的代码,或存储在SPI闪存中的运行代码,取决于上下文[0181] 912 重置向量,指示在系统被重置之后要执行的第一代码的默认位置
[0182] 914 CPU初始化代码或其他逻辑
[0183] 916 QPI/存储器初始化代码或其他逻辑
[0184] 918 芯片组初始化代码或其他逻辑
[0185] 920 高级CPU初始化代码或其他逻辑
[0186] 922 高级芯片组初始化代码或其他逻辑
[0187] 924 PCI枚举代码或其他逻辑
[0188] 926 平台初始化代码或其他逻辑
[0189] 928 引导设备选择代码或其他逻辑
[0190] 930 内核初始化代码或其他逻辑
[0191] 932 设备驱动器初始化代码或其他逻辑
[0192] 934 服务初始化代码或其他逻辑
[0193] 936 一个或多个虚拟机的启动或托管(或两者)
[0194] 938 应用的启动
[0195] 1000 使用内核软重置技术的引导流程
[0196] 1100 图示在关闭、重置、重新引导和类似过程期间可能发生的动作的流程图[0197] 1102 清除KSR指示器,从而指示内核软重置未正在进行
[0198] 1104 检查KSR指示器以确定内核软重置是否正在进行
[0199] 1106 验证内核映像,例如,检查映像的真实性、检查权限、检查数据损坏、检查篡改
[0200] 1108 将内核映像加载到操作存储器中
[0201] 1110 执行特定用户上下文中的用户程序的至少一部分
[0202] 1112 更新系统中的内核而不丢失系统中的应用的用户上下文
[0203] 1114 避免执行上电自检或其他平台初始化,即使计算机系统已被重置并且在重置之后正在将控制传递给用户应用
[0204] 1116 减少与重置相关的停机时间,即,系统不能运行应用或虚拟机的时间[0205] 1118 将安全补丁应用于内核或操作系统的其他部分
[0206] 1120 安全补丁
[0207] 1122 将修复应用于系统中的固件
[0208] 1124 将要应用于固件的修复,或被应用于固件的修复
[0209] 1126 改变平台策略
[0210] 1128 至少部分地由操作系统强制执行的平台策略
[0211] 1130 避免在系统重置之后重新初始化服务
[0212] 1132 至少部分地由内核支持或提供的服务,例如,执行警报、认证、授权、容量供应、内容递送、数据库操作、部署、故障重新开始、基础设施即服务操作、负载平衡、消息传递、监控、联网、并行处理、支付处理、平台即服务操作、软件即服务操作、存储管理或其他操作的服务
[0213] 1134 避免在系统重置之后重新初始化虚拟机
[0214] 1136 虚拟机
[0215] 1138 避免在系统重置之后重新初始化应用
[0216] 1140 通过将控制传递给重置向量或通过重置向量来重置系统
[0217] 1142 设备驱动器
[0218] 操作环境
[0219] 参考图1,可以是云或数据中心或其他计算设施的一部分的用于一个实施例的操作环境100包括至少一个计算机系统102。计算机系统102可以是或不是多处理器计算机系统。操作环境可以包括在给定计算机系统中的一个或多个机器,其可以在云100内是集群的、客户端-服务器联网的和/或对等联网的。个体机器是计算机系统,并且协作机器的组也是计算机系统。给定计算机系统102可以被配置用于最终用户,例如使用应用,用于管理员,作为服务器,作为分布式处理节点,和/或以其他方式。
[0220] 人类用户104可以通过使用显示器、键盘和其他外围设备106,经由键入的文本、触摸、语音、移动、计算机视觉、手势和/或其他形式的I/O来与计算机系统102交互。用户接口可以支持实施例与一个或多个人类用户之间的交互。用户接口可以包括命令行接口、图形用户界面(GUI)、自然用户接口(NUI)、语音命令接口和/或其他用户接口(UI)呈现。例如,自然用户接口(NUI)操作可以使用语音识别、触摸和手写笔识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪、话音和语音、视觉、触摸、手势和/或机器智能。例如,可以在本地台式计算机上或在智能电话上生成用户接口,或者可以从web服务器生成用户接口并将其发送到客户端。用户接口可以作为服务的一部分而生成,并且可以与诸如社交联网服务之类的其他服务集成。
[0221] 系统管理员、开发者、工程师和最终用户均是特定类型的用户104。代表一个或多个人进行动作的自动代理、脚本、回放软件等也可以是用户104。存储设备和/或联网设备在一些实施例中可以被认为是外围设备,并且在其他的一些实施例中可以被认为是系统102的一部分。例如,图1中未示出的其他计算机系统可以以技术方式与计算机系统102交互,或者使用经由网络接口设备到网络108的一个或多个连接来与另一系统实施例交互。
[0222] 每个计算机系统102包括至少一个逻辑处理器110。与其他合适的系统一样,计算机系统102还包括一个或多个计算机可读存储介质112。介质112可以是不同的物理类型。介质112可以是易失性存储器、非易失性存储器、固定就位介质、可移除介质、磁介质、光学介质、固态介质和/或其他类型的物理持久存储介质(与仅是传播信号相对)。特别地,诸如便携式(即,外部)硬盘驱动器、CD、DVD、记忆棒或其他可移除非易失性存储器介质的配置的介质114在插入或以其他方式安装时可以在功能上成为计算机系统的技术部分,以使其内容可访问以与处理器110交互和由处理器110使用。可移除的配置的介质114是计算机可读存储介质112的一个示例。计算机可读存储介质112的一些其他示例包括内置RAM、ROM、硬盘和不容易由用户104移除的其他存储器存储设备。为了符合当前的美国专利要求,在美国待决或授权的任何权利要求下,计算机可读介质、计算机可读存储介质和计算机可读存储器都不是任何信号本身。
[0223] 介质114被配置有由处理器110可执行的二进制指令116;例如,“可执行”在本文中在广义上被用来包括在虚拟机上运行的机器代码、可解释代码、字节代码和/或代码。介质114还被配置有数据118,数据118通过指令116的执行而被创建、修改、引用和/或以其它方式用于技术效果。指令116和数据118配置其驻留在其中的存储器或其他存储介质114;当该存储器或其他计算机可读存储介质是给定计算机系统的功能部分时,指令116和数据118也配置该计算机系统。在一些实施例中,数据118的一部分表示现实世界项,诸如产品特性、库存、物理测量、设置、图像、读数、目标、体积等。这样的数据也通过备份、恢复、提交、中止、重新格式化、重新引导和/或其他技术操作来转换。
[0224] 尽管可以将一个实施例描述为被实现为由计算设备(例如,通用计算机、服务器或集群)中的一个或多个处理器执行的软件指令,但是这样的描述并不意味着穷尽所有可能的实施例。本领域技术人员将理解,相同或类似的功能通常也可以直接用硬件逻辑全部或部分地实现,以提供相同或相似的技术效果。备选地,或者除了软件实现之外,本文中描述的技术功能性可以至少部分地由一个或多个硬件逻辑组件128来执行。例如,并且不排除其他实现,实施例可以包括硬件逻辑组件,诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统组件(SOC)、复杂可编程逻辑器件(CPLD)和类似硬件逻辑组件。除非另有说明,否则本文中的固件122包含这样的硬件逻辑组件。例如,可以基于实施例的组件的输入、输出和/或其技术效果将实施例的组件分组为交互功能模块。
[0225] 例如,除了处理器110(CPU、ALU、FPU和/或GPU)、存储器/存储介质112之外,操作环境还可以包括其他硬件128,诸如显示器126、电池、总线、电源、有线和无线网络接口卡、加速器、机架和网络电缆。显示器126可以包括一个或多个触摸屏、响应于来自笔或平板计算机的输入的屏幕、或者操作仅用于输出的屏幕。
[0226] 在一些实施例中,诸如人类用户I/O设备(屏幕、键盘、鼠标、平板计算机、麦克、扬声器、运动传感器等)之类的外围设备106将与一个或多个处理器110和存储器可操作地通信。然而,一个实施例也可以深深地嵌入技术系统中,诸如物联网的一部分,使得没有人类用户104直接与该实施例交互。软件过程可以是用户104。
[0227] 在一些实施例中,该系统包括通过网络108连接的多个计算机。例如,联网接口设备可以使用诸如分组交换网络接口卡、无线收发器或电话网络接口之类的可以存在于给定计算机系统中的组件来提供对网络108的访问。然而,一个实施例还可以通过直接存储器访问、可移除非易失性介质或其他信息存储检索和/或传输方法来传送技术数据和/或技术指令。
[0228] 内核120、固件122、应用124以及附图中示出和/或在文本中讨论的其他项可以各自部分地或完全地驻留在一个或多个硬件介质112内,从而将这些介质配置用于超越所有硬件软件协作操作中固有的“正常”(即最小公分母)交互的技术效果。
[0229] 技术人员将理解,本文中在“操作环境”下呈现的前述方面和其他方面可以形成给定实施例的一部分。该文档的标题不旨在将特征严格分类为实施例和非实施例特征集。
[0230] 一个或多个项在附图中以轮廓形式示出,或者在括号内列出,以强调它们不一定是所示操作环境或所有实施例的一部分,但是可以与本文中所讨论的操作环境或一些实施例中的项互操作。并不意味着,不是轮廓或括号形式的项在任何图或任何实施例中都是一定需要。特别地,为了方便而提供图1;包含图1中的项并不暗示在当前创新之前已知该项或该项的所述用途。
[0231] 以虚线轮廓形式的项,诸如外围设备106和屏幕126,可以或可以不在给定实施例中单独地或以任何可操作的组合物理地存在。以点划线轮廓形式的项,诸如热重置700和重置矢量912,可以物理存在但是未被特定实施例使用。以点线轮廓形式的项,诸如图10的服务实例934、启动/主机虚拟机936和启动应用,通过备选操作(保存802和恢复806)来有效地执行或消除。
[0232] 服务器架构
[0233] 图2图示了包括内核软重置(KSR)技术的示例服务器计算架构的方面。服务器202是计算系统102的一个示例。服务器202包括内核重置存储器204,其具有包含内核映像B 210的非易失性存储装置206,内核映像B 210具有内核数据结构210,诸如包含内核操作所假定在内核初始化之后的内核执行期间恒定的值的系统表。具有易失性存储装置214的操作存储器212包含另一内核映像208,被指定为内核映像A。操作存储器还包含用户上下文信息216,被指定为用户上下文A,其是在内核映像A的执行期间在服务器202的操作期间被创建的。
[0234] 在内核映像之间可能发生各种关系。通常,它们甚至可以是相同的映像(例如,当固件修复导致重置时)。但是在该示例中可以将内核映像B视为内核映像A的替代。内核映像B可以与内核映像A完全不同,例如,一个可以来自厂商A而另一个可以来自厂商B。或者例如,内核映像B可以是将错误修复或安全补丁应用于内核映像A的结果。或者内核映像B可以是内核映像A的缩减或部分残缺的版本,或者内核映像B可以是内核映像A的增强版本。
[0235] 所图示的服务器202还包括内核软重置指示器218,其可以使用位标志、变量、ACPI 224邮箱、PCC 222变量或另一存储元件来实现。例如,KSR指示器218可以驻留在非易失性存储装置206中,例如,在NVDIMM存储器112中或在硬盘226上。
[0236] 内核软重置引导软件220存在于所图示的服务器202中。除了常规的引导功能性之外,KSR引导软件220还提供用于以下项的功能性:设置KSR指示器218以指示KSR正在进行中,保存用户上下文A,通过将控制传递回重置向量来进行重置,在KSR指示器218被检查之后跳过POST,以及将控制传递给内核映像B。KSR引导软件220还恢复用户上下文B。内核映像B得到初始化,但是有助于用户上下文A的应用从它们中断的地方继续,而不是被重启。
[0237] 如图3中所示,KSR引导软件220可以包括BIOS代码302、UEFI代码304和验证代码306。BIOS代码302或UEFI代码304可以如在常规系统中那样起作用,具有修改以设置/检查/清除KSR标志218,保存/恢复用户上下文,跳过POST,以及以其他方式执行如本文所述的KSR操作。验证码306可以位于BIOS/UEFI中以增强安全性,但也可以是分开的,例如位于引导加载器中。例如,验证代码306可以通过计算和比较校验和(checksum)或散列来验证内核映像B。
[0238] 如图4中所示,在一些情形中,将在内核映像A(图2)下创建的用户上下文A复制到内核重置存储器204中。然后,在重置之后使该用户上下文A可用以在内核映像B下继续应用的执行。
[0239] 图5图示了计算系统102的许多示例中的一些。其中有服务器计算机202、云服务器502、数据中心服务器504和运行虚拟机的服务器506。技术人员理解给定的机器或系统可以对应这些类别中的一个或多个。例如,服务器可以位于数据中心中,也可以作为云服务器可用于按需第三方用途,并且可以在提供云计算服务时代表一个或多个第三方运行虚拟机。
其他图示的示例包括智能电话508、平板计算机510、膝上型计算机512、台式机514、工作站
516、视频游戏系统518、虚拟现实系统520、增强现实系统522、交通工具524、自动过程控制或机器人系统526、以及嵌入式系统528。
[0240] 一些实施例使用或提供计算系统102,其支持内核软重置以用于在不丢失用户上下文的情况下更新内核,该系统包括:内核映像A;在系统在内核映像A的控制下的操作期间生成的用户上下文216;与内核映像A不同的内核映像B;至少一个处理器110;与处理器处于可操作通信的操作存储器212、112,操作存储器包括易失性随机存取存储器(RAM)并包含用户上下文和内核映像A的至少一部分;内核重置存储器204、112,内核重置存储器包括包含内核映像B的非易失性存储装置;内核软重置指示器218;和引导软件220。引导软件包括在执行时检查内核软重置指示器的代码,并且当内核软重置指示器指示内核软重置正在进行时,该代码:(a)将内核映像B从内核重置存储器加载到操作存储器中,(b)初始化内核映像B的内核数据结构,以及(c)将控制传递给初始化的内核映像B,以在内核映像B的控制下而不是在内核映像A的控制下利用相同的用户上下文继续系统的操作,并且当内核软重置指示器指示内核软重置未在进行时,代码不将控制传递给内核映像B以利用相同的用户上下文继续系统的操作。
[0241] 在一些实施例中,内核软重置指示器218包括以下中的至少一项:存储在硬盘226上的标志,平台通信信道222共享存储器区域中的标志,高级配置和电源接口224标志。
[0242] 在一些实施例中,引导软件220包括以下中的至少一项:基本输入/输出(BIOS)软件,统一可扩展固件接口(UEFI)软件。
[0243] 在一些实施例中,计算系统102包括以下中的至少一项:服务器计算机、云服务器、数据中心服务器、被配置为运行多个虚拟机的服务器、智能电话、平板计算机、笔记本计算机、台式机、工作站、视频游戏系统、虚拟现实系统、增强现实系统、交通工具、自动化制造系统、过程控制系统、机器人系统、嵌入式系统。
[0244] 在一些实施例中,内核重置存储器204包括包含用户上下文的副本的非易失性存储装置,并且引导软件包括代码,代码在执行时在将内核映像B从内核重置存储器加载到操作存储器中之后并且在初始化的内核映像B的控制下利用相同用户上下文继续系统的操作之前,将用户上下文从内核重置存储器复制到操作存储器。
[0245] 在一些实施例中,包含用户上下文的副本的内核重置存储器204、112包括以下中的至少一项:NVDIMM-F闪存、NVDIMM-N字节可寻址存储器、在相同设备上具有动态RAM和NAND的NVDIMM-P存储器、NVDIMM-SW存储器、NVRAM非易失性RAM存储器。
[0246] 在一些实施例中,引导软件220包括对以下中的至少一项执行验证测试的代码306:内核映像B、用户上下文的副本。
[0247] 在一些实施例中,内核映像B关于以下特性中的至少一个而与内核映像A不同:安全性、效率、正确性、可用性、大小、连接性。例如,内核映像B可以包括安全补丁,可能需要比内核映像A少的存储空间或者比内核映像A运行得快,可以省略内核映像A中存在的错误,可以具有内核映像A中不存在的API,或者可以支持内核映像A中不支持的联网协议。
[0248] 一些实施例使用或提供数据中心或云计算设施中的服务器202,其中服务器包括:内核映像A;在服务器在内核映像A的控制下的操作期间生成的用户上下文216;内核映像B;
至少一个处理器110;与处理器处于可操作通信的操作存储器212,操作存储器包括易失性随机存取存储器(RAM)并包含用户上下文和内核映像A的至少一部分;内核重置存储器204,内核重置存储器包括包含内核映像B的非易失性存储装置;内核软重置指示器218,包括以下至少之一:存储在硬盘上的标志、平台通信信道共享存储器区域中的标志、高级配置和电源接口标志;和引导软件220。引导软件220包括基本输入/输出(BIOS)软件或统一可扩展固件接口(UEFI)软件或两者,并且引导软件包括在执行时检查内核软重置指示器的代码,并且当内核软重置指示器指示内核软重置正在进行时,代码:(a)将内核映像B从内核重置存储器加载到操作存储器中,(b)初始化内核映像B中的内核数据结构,以及(c)将控制传递给初始化的内核映像B,以在内核映像B的控制下利用相同用户上下文继续服务器的操作,并且当内核软重置指示器指示内核软重置未正在进行时,代码不将控制传递给内核映像B以利用相同用户上下文继续系统的操作。
[0249] 在一些实施例中,内核重置存储器非易失性存储装置包括NVDIMM或NVRAM存储器或两者,并且引导软件还包括代码,代码在执行时在将内核映像B从内核重置存储器加载到操作存储器中之后并且在初始化的内核映像B的控制下利用相同用户上下文继续系统的操作之前,将用户上下文从内核重置存储器非易失性存储装置复制到操作存储器中。
[0250] 在一些实施例中,以下特征中的至少指定数目(例如,两个、三个、四个、五个或六个)的特征是正确的:内核映像B与内核映像A的不同之处在于安全补丁;内核映像B是内核映像A的磁盘大小的至多90%;内核映像B包括纠正内核映像A中存在的错误的代码;在创建用户上下文之后并且在将控制传递给初始化的内核映像B之前,将修复应用于服务器的固件;内核映像B与内核映像A的不同至多在于内核初始化或驱动器初始化或两者;用户上下文216包括初始化的服务;用户上下文216包括初始化的虚拟机;用户上下文216包括初始化的应用;在不执行上电自检的情况下从重置命令到控制传递给初始化的内核映像B时所经过的时间不多于从断电状态到执行服务器的冷引导所经过的时间的65%,冷引导在上电自检之后将控制传递给初始化的内核映像B。
[0251] 过程
[0252] 示例在本文中被提供以帮助说明技术的方面,但在本文档中给出的实施例未描述所有可能的实施例。实施例不限于本文所提供的特定实现、布置、序列、流程、特征、方法或场景。给定的实施例可以包括例如附加或不同的技术特征、机制或数据结构,并且可以以其他方式脱离本文所提供的示例。
[0253] 图6图示了不采用完全KSR技术的重置序列。在框602处,自动或手动发起计算系统102的关闭。在框604处,用户被注销。在框606处,关闭诸如应用和用户发起的服务之类的用户进程。在框608处,关闭诸如操作系统进程之类的系统进程。在框610处,关闭设备驱动器和I/O系统。在框612处,控制传递给固件,固件通常驻留在系统102的主板上的非易失性存储装置中。在框614处,发生上电自检(POST)和其他平台初始化。在框616处,控制传递给引导管理器,并且然后在框618处传递给系统加载器。在框620处,加载并初始化内核和设备驱动器。然后,在框622处,控制传递给内核代码中的启动位置处的初始化内核。
[0254] 不同系统102在其重置序列600中的给定点处执行不同的操作,但是技术人员将认识到给定系统102中的所图示的操作的方面。例如,在使用Microsoft 操作系统的系统102中(微软公司的商标),可以通过调用ExitWindowsEx()例程来统一发起按框
604的用户注销和按框606的用户进程关闭以及按框608的系统进程关闭。在这样的系统102上,按框618运行系统加载器还可以包括将控制传递给Winload.exe或Winload.efi代码,并且将控制传递给在启动位置处的初始化的内核可以包括跳转到ntoskrnl.exe中的
KiSystemStartup。这些仅仅是示例。技术人员还将认识到重置序列600的方面不是特定于特定操作系统的。例如,可以在特定系统102上使用相同的固件和POST和引导管理器,无论该系统引导至Microsoft 操作系统、 操作系统(Linus Torvalds的商
标)、 操作系统(美国甲骨文公司的商标)还是其他一些操作系统。无论如何,紧接在关闭发起602之前存在于系统的操作存储器中的任何用户上下文216被重置序列600损害并且变得不可靠。
[0255] 图7图示了重新引导序列700,其避免了上电自检614,但没有采用完全KSR技术。紧接在关闭发起602之前存在于系统的操作存储器中的用户上下文216被保留,因此应用可以在框622之后继续执行,而不是重新启动。然而,紧接在关闭发起602之前运行的相同内核映像在框622处接收控制。内核的数据结构未被重新初始化,并且设备驱动器未被重新初始化。而且,流程700没有提供对固件进行任何修复的机会。
[0256] 图8图示了KSR技术的方面,并且突出了在执行重置序列800时使用KSR技术可以避免的一些项。步骤602到610可以如熟悉的序列600和700那样进行。然而,用户上下文216被保存802,因此,它可以在进行诸如将内核映像B替换为内核映像A、安装固件修复、改变芯片组级别的策略、或改变系统102配置在内核被(重新)初始化808时将更新的方面之类的一次或多次改变之后被恢复806。此外,设置804KSR标志218,使得诸如POST 614和重新加载预关闭内核映像之类的操作被跳过,并且使得在不使恢复的用户上下文无效的点处将控制传递810给内核。
[0257] 图8还图示了系统存储器映射812,其将系统中可用的各种类型和区域的存储器112指定给各种代码。所图示的系统包括NVDIMM存储器814,其跨重置保持用户上下文,从而保留用户上下文的副本以用于恢复到操作存储器816、212。在一些实现中,操作存储器是在诸如E820表或EFI存储器映射之类的引导固件存储器映射中定义的任何存储器。NVDIMM存储器814是内核重置存储器204中的非易失性存储装置206的一个示例,并且在重置之后的应用的执行期间不可用于应用或内核。将BIOS或UEFI或EFI代码存储在引导ROM或类似的固件存储器818中。
[0258] 图9图示了不采用完全KSR技术的引导序列900,其中不保存和恢复用户上下文216,并且不采用诸如KSR标志218和POST避免之类的机制。在关断到系统的电力的情况下,在步骤610之后关断电力、并且电力将在步骤612之前重新打开的意义上,图9总体上对应于图6的包括框612至框622的部分,并且步骤904和906总体上对应于步骤612至步骤622并且对应于稍微超出步骤622的操作。运行引导管理器616和系统加载器618导致运行906操作系统。内核初始化930和驱动器初始化932总体上对应于步骤620中的初始化,但是在KSR序列的步骤808处被调出以用于单独的执行。在步骤622之后,将发生服务初始化934、虚拟机的启动和托管936、以及应用的启动938。在常规引导900完成之后虚拟机和应用的运行将创建用户上下文216,其可以被保存802并且在随后的重置序列800中被恢复806。
[0259] 更具体地,在上电902之后,图9中所图示的系统运行612位于系统的主板908上的SPI闪存910中的固件122。所图示的序列900包括运行904BIOS固件,其执行以附图标记912到928指示的操作。重置向量912标识在任何系统重置之后要运行的代码。例如,通过对固件以及对引导管理器616进行的修改,诸如设置/检查KSR指示器218和保存/恢复用户上下文216之类的KSR操作被拼接成熟悉的序列。但是在诸如序列900之类的熟悉的引导流程中,执行POST和平台初始化614,诸如以附图标记914到928指示的熟悉的操作版本。在所图示的示例中,这些操作包括CPU初始化914、QPI/存储器初始化916、芯片组初始化918、高级CPU初始化920、高级芯片组初始化922、PCI枚举924、其他平台初始化926和引导设备选择928。
[0260] 图10图示了KSR技术的方面,其中避免了以点划线形式示出的POST和平台初始化步骤,并且以虚线形式示出的用户上下文创建步骤由先前保存的802用户上下文的恢复806来代替。在一些备选方案中,在KSR下仍然遵循重置向量912,但是作为结果而运行的固件适于检查KSR标志并且当设置KSR标志被设置时避免(即,跳过)步骤914到928。在一些备选方案中,仍然在KSR下调用OS加载器618,但OS加载器适于检查KSR标志并且在将继续在恢复的用户上下文下执行的点处将控制传递给OS,而不是像在OS的当前实例下尚未启动任何应用或虚拟机那样操作。
[0261] 图11图示了流程图1100中的一些过程和配置的存储介质实施例。除非另外指出,否则将由例如合适的固件122和内核120软件自动执行附图中所示或以其他方式公开的技术过程。在由人类管理员或其他人类进行的动作被卷入的程度(例如,以发起602关闭或启动938应用)上,还可以部分自动且部分手动地执行过程。没有本文中被认为创新的过程是完全手动的。在给定实施例中,可以重复过程的图示的步骤中的零个或更多个,可能具有不同的参数或数据以对其进行操作。也可以以与图11中布置的从上到下的顺序不同的顺序完成实施例中的步骤。可以以部分重叠的方式连续地或完全并行地执行步骤。遍历流程图1100以指示在过程期间执行的步骤的顺序可以从过程的一个执行到过程的另一执行变化。
流程图遍历顺序也可以从一个过程实施例到另一过程实施例变化。如果所执行的过程是可操作的并且符合至少一个权利要求,则步骤也可以被省略、组合、重命名、重新分组或以其他方式脱离所图示的流程。
[0262] 在一些实施例中,可以通过将用户上下文复制到非易失性存储装置来保存802用户上下文。可以使用硬盘,但是更好的性能将通过使用NVDIMM或以动态RAM速度而不是较慢的硬盘速度运行的其他非易失性存储装置来提供。随后可以通过将用户上下文从非易失性存储装置复制回到操作存储器中来恢复806用户上下文。用户上下文内的地址通常相对于基地址而不是绝对地址,因此如果恢复的位置和保存上下文的位置不相同,则将需要很少或不需要地址调整。
[0263] 在一些实施例中,可以使用熟悉的访问机制来设置804、清除1102或检查1104KSR指示器218。
[0264] 在一些实施例中,可以使用校验和、散列和/或熟悉的机制来验证1106KSR将向其传递控制的内核映像,以检测数据损坏或篡改。可以使用适于在当前重置中加载内核映像而无需在先POST的熟悉的机制来加载1108该内核映像。
[0265] 在一些实施例中,可以使用适于在当前重置中初始化内核映像而无需在先POST的熟悉的机制来初始化内核数据结构930,即,同时避免1114POST,因此减少1116停机时间。
[0266] 在一些实施例中,可以使用适于在当前重置中初始化驱动器而无需在先POST的熟悉的机制来初始化设备驱动器1142。
[0267] 在一些实施例中,可以将控制传递810给内核中的点,该点准许启动的应用的继续执行1110,诸如在内核初始化之后的主循环。例如,通过应用1118安全补丁1120,使用KSR准许更新1112内核而不丢失用户上下文。即使内核未改变,也可以在保存用户上下文之后且在将它恢复之前,将修复1124应用1122到固件122或者可以改变1126平台策略1128。使用具有用户上下文恢复的KSR允许避免1130服务1132重新初始化、避免1134虚拟机1136重新初始化、并且避免1138应用124重新初始化,从而减少了有效停机时间,即,在应用或虚拟机执行中未被花费进行进一步进展的时间。
[0268] 在一些实施例中,可以使用对引导软件和操作系统的修改来实现KSR,其在功能上被拼接成在重置1140之前和之后执行的代码。因此,重置向量本身不变。
[0269] 一些实施例使用或提供内核软重置方法,其包括设备102的引导软件220检查1104内核软重置指示器218。在发现内核软重置指示器指示内核软重置正在进行时,该方法将内核映像B加载1108到设备的操作存储器中,初始化930加载的内核映像B的内核数据结构210,并将控制传递810给初始化的内核映像B。然后,在初始化的内核映像B之上,设备执行
1110用户上下文中的至少一个用户程序的至少一部分,该用户上下文先前已在设备在内核映像A的控制下的操作期间被创建。因此,该方法将设备从内核映像A更新1112到内核映像B,而没有丢失用户上下文并且使值在内核数据结构中被更新。
[0270] 一些实施例包括在将控制传递给初始化的内核映像B之前验证1106内核映像B。
[0271] 一些实施例包括在设备的引导软件检查内核软重置指示器之前执行的以下操作:将在内核映像A下创建的用户上下文的副本保存802到非易失性存储装置,并将内核软件重置指示器设置804为指示内核软重置正在进行。然后在将控制传递给初始化的内核映像B之前执行以下步骤:将用户上下文从非易失性存储装置恢复806到操作存储器。
[0272] 一些实施例避免1114执行在设备的冷引导期间被执行的上电自检614。
[0273] 在一些实施例中,从重置命令到该方法将控制传递给初始化的内核映像B时所经过的时间不多于从断电状态到执行设备的将控制传递给初始化的内核映像B的冷引导所经过的时间的70%。
[0274] 在一些实施例中,内核软重置方法包括以下至少之一:应用1118安全补丁以从内核映像A产生内核映像B;将修复应用1122于设备的固件并使用内核映像A作为内核映像B;或者改变1126与至少一个芯片组粘滞寄存器相关联的平台策略。
[0275] 在一些实施例中,内核软重置方法包括以下中的至少一项:通过在传递给内核映像B而不是内核映像A时保留或恢复用户上下文来避免1130对服务进行重新初始化;通过在传递给内核映像B而不是内核映像A时保留或恢复用户上下文来避免1134对虚拟机1136进行重新初始化;通过在传递给内核映像B而不是内核映像A时保留或恢复用户上下文来避免1138对应用进行重新初始化。
[0276] 配置的介质
[0277] 一些实施例包括配置的计算机可读存储介质112。介质112可以包括盘(磁、光或其他方式)、RAM、EEPROM或其他ROM、和/或其他可配置的存储器,尤其包括计算机可读介质(其不仅仅是传播的信号)。被配置的存储介质尤其可以是可移除存储介质114,诸如CD、DVD或闪存。以从可移除介质114和/或诸如网络连接之类的另一源中读取的数据118和指令116的形式,使用诸如KSR指示器218、用以保存和恢复用户上下文的代码和用以避免POST的代码之类的项,可以是或可以不是可移除的并且可以是或可以不是易失性的通用存储器可以被配置到实施例中,以形成配置的介质。配置的介质112能够使得计算机系统执行如本文所公开的用于KSR重置的技术过程步骤。因此,附图帮助说明配置的存储介质实施例和过程实施例,以及系统和过程实施例。特别地,图8、图10、图11中所图示或本文中以其他方式所教导的任何过程步骤可以用于帮助配置存储介质以形成配置的介质实施例。
[0278] 附加的细节
[0279] 在一些实现中,内核数据结构可以在诸如有效虚拟存储器页表数据结构、活动用户进程的有效列表、活动线程的有效列表、运行或挂起的自动启动服务或驱动器的有效列表、有效任务调度程序队列数据结构、当前时区信息、初始化的文件系统驱动器数据结构、操作存储器硬件已经被初始化的确认或初始化的驱动器之类的数据结构中保持用户上下文的一部分。然而,除非另有说明,否则用户上下文不包括内核数据结构,至少不在虚拟机内的托管的内核之外。
[0280] 在一些实现中,KSR适应的BIOS 302在引导过程1000期间向操作系统加载器618指示NVDIMM邮箱218的存在,从而允许例如服务器、电话、平板计算机等的各种硬件的KSR瞄准(targeting)。
[0281] 在一些实现中,KSR适应的操作系统加载器软件检测(以及可选地验证和/或加密验证)存储在由BIOS指示的预定区域中的OS上下文208,并且如果发现(或发现并验证)则加载该映像,从而允许在各种硬件系统102上运行的软件的KSR瞄准。
[0282] 在一些实现中,KSR适应的操作系统启动过程将系统上下文208或用户上下文216或两者的副本保存到由BIOS指示的NVDIMM位置。
[0283] 在一些实现中,KSR适应的操作系统关闭过程而不是经历完全的关闭,例如通过避免POST部分地执行关闭直到其达到可以用于加速启动时间的状态。
[0284] 在一些实现中,KSR适应的操作系统加载器(启动)过程检测(并且可选地验证或加密验证)存储在由KSR适应的BIOS指示的预定区域中的OS上下文,并且如果发现(或者发现并验证)则加载该上下文。这允许在各种硬件上运行的软件的KSR瞄准。
[0285] 在一些实现中,BIOS是KSR适应的,以检测软NVDIMM邮箱中OS上下文的存在。在一些实现中,BIOS是KSR适应的,以验证邮箱中内容的完整性。在一些实现中,BIOS是KSR适应的,以发布标志(在ACPI或等价物中),KSR适应的OS加载器可以使用该标志来确定是否应该尝试OS上下文恢复。
[0286] 在一些实现中,OS是KSR适应的。在关闭或热重置流程期间,KSR适应的OS将应用上下文保存到软件NVDIMM区域(例如)。在重新启动序列期间,KSR适应的OS将指向ACPI标志(例如)并确定是否应该由OS恢复1000代替OS引导900。
[0287] 一些实现跨系统重置来保护OS存储器/应用上下文。一些实现使用在预引导和OS之间共享的预引导存储器映射来隔离系统存储器空间中的OS上下文。一些实现将OS上下文保存到软件NVDIMM区域中所托管的专用邮箱中。在一些实现中,OS加载过程通过由KSR适应的BIOS填充的专用标志被控制,并且引导时间被优化。一些实现用OS上下文恢复过程来代替OS加载过程。
[0288] 在一些实现中,虚拟机1136被认为是用户进程。在一些实现中,拆除虚拟机不需要涉及KSR流程;拆除可以在VM级别完成。将仅重新初始化930VM在其上运行的管理程序和基本OS。在一个实现中,还可以将其他VM包括在KSR流程中。在一些实现中,在KSR关闭时,VM在状态被保留的情况下被挂起到存储器,并且管理程序(主机OS)进入到内核软重置中。它关闭驱动器上的处理程序并进行迷你内核关闭,从而进行对其自身进行再次初始化的复位(respawn)。
[0289] 在一些实现中,关闭系统进程608包括诸如冻结与访客VM相关联的存储器的操作。一些实现将设备断电并重新启动新的内核初始化流程。内核初始化流程重新初始化驱动器,然后使被保留在存储器中的VM重新开始。存储器不被拆除或损坏,因此引导时间大大缩短。
[0290] 在一些实现中,在加载和初始化内核和驱动器步骤620期间进行的操作涉及:先前将VM挂起在存储器中,准备新的内核启动和释放的驱动器处理程序(关闭的设备)。通过跳转到新的内核初始化(重新启动),KSR内核重新启动。代替在电力管理状态S3中重新启动,适于KSR的系统可以在NVDIMM保留存储器时断电。在重新启动时,BIOS(UEFI)检测到NVDIMM关闭,并且代替传统加载,切换到作为KSR的一部分而准备的新的内核启动。
[0291] 在一些实现中,在KSR感知流程中被保存到NVDIMM的用户上下文包括除管理程序和基本OS之外的所有应用上下文。这包括与访客VM相关联的所有存储器上下文。
[0292] 在一些实现中,执行热重置700意味着再次执行UEFI上电自检阶段,但有一些例外。因为存储器处于自刷新模式中,所以存储器初始化被优化。出于所有实际的目的,除了NVDIMM-SW区域或其他内核重置存储器之外的存储器映射被拆除并再度重建。强制实施系统引导以从先前的成功引导来引导目标。
[0293] 在一些实现中,在将控制从OS转移回到UEFI之前,从用于OS使用的存储器816到NVDIMM 814的复制发生在KSR感知流程关闭路径中。在一些实现中,它经由在UEFI中实现的知晓由OS上下文发起的热重置请求的专用SMI处理程序来完成。
[0294] 在一些实现中,OS使用系统存储器映射812来标识在OS引导之后针对UEFI运行时功能性保留哪些存储器区域以及回收哪些区以供OS使用。在一些实现中,跨UEFI预引导的所有阶段,开发存储器映射。它随着以及当将存储器分配用于存储代码和数据时改变。存储器分配的类型基于代码和数据的类型而变化,例如,引导服务代码、引导服务数据、运行时代码、运行时数据、ACPI NVS存储器、SMM等。
[0295] 在一些实现中,KSR与休眠的不同在于:KSR允许从一个OS映像引导到另一OS映像;休眠和重新开始是从一个OS映像到相同的OS映像。在一些实现中,KSR保存特定的最终用户上下文(即服务、VM、应用),而休眠保存内核和用户上下文(内核、驱动器、服务、VM、应用)。
在一些实现中,KSR与休眠的不同在于KSR避免POST,而休眠重新开始则不然。在一些实现中,引导的BIOS部分花费大约100秒并且 操作系统引导花费大约额外的30秒,
总重置时间为大约130秒。相比之下,热重置花费大约40秒,然后诸如上下文恢复和内核初始化之类的KSR操作花费大约10秒,总共为大约50秒,小于传统重置时间的一半。
[0296] 在一些实现中,当将OS安全补丁应用于硬盘上的内核映像并且调用KSR来加载新的OS映像时,KSR使用winload.sys驱动器从硬盘加载新的内核上下文,并且内核初始化930和驱动器初始化932被执行。然而,服务、VM和应用不被重新初始化。代之,它们的上下文被恢复806。
[0297] NVDIMM-SW
[0298] 一些实施例使用软件非易失性存储器(NVDIMM-SW)来解决易失性存储器与常规存储设备之间的存储器层级间隙。当系统需要重置时,将诸如VM、数据、代码等的最终用户上下文存储到软件-NVDIMM(Software-NVDIMM)驱动器中。由于这是存储器到软件NVDIMM的副本,因此它以存储器速度发生,并且因此花费非常短的时间。在重置时,系统BIOS可以通过传统的上电自检流程(POST)。由于没有将软件NVDIMM区域映射到系统存储器映射中,因此OS/最终用户数据的数据完整性不受到损害。可以使用ACPI切换机制,由此BIOS将指示软件NVDIMM邮箱的存在,OS加载器可以在早期OS引导流程期间检测软件NVDIMM邮箱的存在。如果OS成功检测到系统上下文,则它恢复OS上下文,而不需要从诸如硬盘之类的物理存储位置加载内核和用户数据的延迟和计算工作。这可以被认为是非灾难性的内核热重置。
[0299] 在一些实施例中,NVDIMM-SW是固件辅助的装置,通过其来通过DIMM和块存储设备(NVMe或SATA等)的耦合来模拟非易失性DIMM。目标是采用标准驱动的方法,并且因此将NVDIMM-SW设备无缝地发布到操作系统。在正常操作模式下,预引导固件将可用的NVDIMM-SW设备发布到操作系统。来自利用NVDIMM-SW的应用的所有WRITE操作都瞄准到与NVDIMM-SW相关联的DIMM区域。在正常或非正常关闭场景期间发起SAVE#(保存#)。在系统关闭和后续重新启动之前完成SAVE#操作。在将控制交还给操作系统之前,由预引导固件发起RESTORE#(恢复#)操作。可以通过耦合DDR4DIMM和板载M.2NVMe模块来构建NVDIMM-SW。NVDIMM-SW范例重新利用传统DIMM来模拟字节可寻址存储器。在一些实现中,系统被填充有DIMM,所有DIMM具有相同的大小和存储器类型。NVDIMM-SW支持两种操作模式,即NVDIMM非交织或NVDIMM交织。NVDIMM非交织,其中插槽1上的DIMM将取决于经由设置选项的选择的非易失性存储器大小而被选择为非易失性NVDIMM(SW)NVDIMM。最大非易失性存储器大小取决于在非正常保存场景期间的电源持续时间。非交织NVDIMM-SW与NVDIMM-N非常相似,除模拟所有I2C_DSM数据之外。在NVDIMM交织中,插座内的所有DIMM将交织在一起以支持NUMA。此外,每个插座的顶部存储器基于所选择的非易失性存储器大小而从系统存储器映射中被划分为NVDIMM-SW。事件处理的目标是尝试将数据从易失性存储器保存到非易失性存储器区域。固件堆栈(UEFI、BMC)还负责记录带内和带外侦听器两者的错误。
[0300] 一些附加的组合和变体
[0301] 代码、数据结构、逻辑、组件、通信和/或它们的功能等价物的这些组合中的任何组合也可以与上述任何系统及其变体相组合。过程可以包括可操作的子集或组合或序列中的本文所描述的任何步骤。每种变体可以单独发生,或与任何一种或多种其他变体组合发生。每个变体可以与任何过程一起发生,并且每个过程可以与任何一个或多个其他过程相组合。每个过程或过程的组合(包括变体)可以与上述介质组合和变体中的任何相组合。
[0302] 结论
[0303] 尽管作为过程、作为配置的介质或作为系统在本文中明确地图示和描述了特定实施例,但是应当理解,对一种类型的实施例的讨论通常也扩展到其他实施例类型。例如,结合图8、图10和图11的过程的描述也帮助描述配置的介质,并且帮助描述系统和制造的技术效果和操作,如结合其他附图所讨论的那些。并不是一个实施例的限制必然被读入另一实施例。特别地,过程不一定限于在讨论诸如配置的存储器之类的系统或制造的同时所呈现的数据结构和布置。
[0304] 本领域技术人员将理解,实现细节可以涉及特定代码,诸如特定API、特定字段和特定样本程序,并且因此不需要出现在每个实施例中。本领域技术人员还将理解,在讨论细节时使用的程序标识符和一些其他术语是特定于实现的,并且因此不需要涉及每个实施例。尽管如此,虽然这里不一定要求它们存在,但是这样的细节可以通过提供上下文来帮助一些读者和/或可以说明本文中所讨论的技术的许多可能实现中的一些。
[0305] 本文中对具有某个特征X的一个实施例的引用和本文中其他地方对具有某个特征Y的实施例的引用并不排除具有特征X和特征Y两者的公开实施例,除非本文中明确说明了这种排除。在被称为实施例的一部分的任何特征也可以明确地从包含在另一实施例中被去除(即使在本文中的任何示例中没有给出特定的排除)的意义上,所有可能的否定权利要求限制都在本公开的范围内。术语“实施例”在本文中仅用作“以与适用法律相一致的方式应用的过程、系统、制品、配置的计算机可读介质和/或本文中教导的其他示例”的更方便的形式。因此,如果给定的实施例与至少一个权利要求相一致,则该“实施例”可以包括本文中公开的特征的任何组合。
[0306] 并非每个实施例中都需要存在附图中所示的每个项。相反,一个实施例可以包含未在附图中明确示出的(一个或多个)项。尽管这里通过具体示例在文本和附图中示出了一些可能性,但是实施例可以脱离这些示例。例如,一个示例的特定技术效果或技术特征可以被省略、重命名、不同地分组、重复、以不同方式在硬件和/或软件中实例化、或者是出现在两个或更多个示例中的效果或特征的混合。在一些实施例中,也可以在不同的位置提供在一个位置处所示出的功能性;技术人员认识到,功能性模块可以在给定实现中以各种方式定义,而不必从作为整体而查看的交互模块的集合中省略期望的技术效果。
[0307] 始终通过附图标记参考附图。在附图或文本中,与给定附图标记相关联的措辞中的任何明显不一致应被理解为简单地扩宽该附图标记所引用的范围。即使使用相同的附图标记,给定附图标记的不同实例也可以指代不同的实施例。类似地,给定的附图标记可以用于指代动词、名词和/或每一个的对应实例,例如,处理器110可以通过执行指令来处理110指令。
[0308] 如本文所使用的,诸如“一个”和“该”之类的术语包括所指示的项或步骤中的一个或多个。特别地,在权利要求中,对项的引用通常意味着存在至少一个这样的项,并且对步骤的引用意味着执行该步骤的至少一个实例。
[0309] 标题仅为了方便;有关给定主题的信息可以在其标题指示该主题的部分之外找到。
[0310] 所提交的所有权利要求和摘要是说明书的一部分。
[0311] 尽管已经在附图中示出并且在上面描述了示例实施例,但是对于本领域普通技术人员显而易见的是,在不脱离权利要求中阐述的原理和概念的情况下可以进行多种修改,并且这样的修改不需要涵盖整个抽象概念。尽管用结构特征和/或程序动作特定的语言描述了本技术方案,但是应理解,所附权利要求书中定义的技术方案不必限于权利要求上面描述的特定技术特征或动作。在给定定义或示例中标识的每个手段或方面或技术效果不必存在或使用于每个实施例中。相反,所描述的具体特征和动作和效果被公开作为在实现权利要求时所考虑的示例。
[0312] 不满足于包含整个抽象概念但落入权利要求的等价物的含义和范围内的所有变化都应当在法律准许的范围内被包含在其范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈