经由来自运行系统的存储器写入的存储器图像捕获的制作方法_2

文档序号:9620861阅读:来源:国知局
入被配置到经由显示设备124显示的图形用户接口。
[0032]已经描述了在其中可以操作本文描述的技术的示例环境,现在考虑根据一个或者多个实施例的一些不例程序。
[0033]示例稈序
以下的讨论描述根据一个或者多个实施例的针对经由来自运行系统的存储器写入进行存储器图像捕获的一些示例程序。示例程序可以被用于图1的环境100中、图6的系统600中和/或任何其他适当环境中。
[0034]图2是描述根据一个或者多个实施例的方法中的步骤的流程图。步骤200接收捕获存储器的一部分的图像的请求。如上文所提及的,存储器图像可以对应于在特定时间所捕获的存储器快照,诸如存储器的一部分的位图。例如,存储器110的存储器图像可以对应于内核空间存储器112、用户空间存储器114和/或存储器110的其它部分的存储器页面的位图。
[0035]捕获存储器图像的请求可以响应于各种各样的事件而被接收。例如,应用和/或服务可以诸如响应于应用和/或服务的崩溃和/或故障而请求存储器图像。用于硬件设备的驱动器例如可以检测到该设备没有适当地起作用。作为响应,驱动器可以请求针对不适当地起作用发生时的存储器图像。
[0036]作为另一个示例,请求可以是用户启动的,诸如通过管理员和/或其它人员。例如,用户可以注意到特定设备、软件、服务等等没有适当地起作用。因此,用户可以提供请求存储器图像的输入,诸如经由到针对存储器成像器模块120的图形用户接口的输入。
[0037]作为又一个示例,对于存储器图像的请求可以由诊断和/或安全服务来实施,诸如进一步定位不想要的和/或恶意的过程。因此,可以将所捕获的存储器图像提交给安全服务,以使得其可以针对外来的、不想要的和/或恶意的代码来被监测。如果检测到这样的代码,则可以将该代码移除。
[0038]步骤202确认是否经由到存储器的中间写入或者到存储装置的直接写入而捕获了存储器的一部分的图像。到存储器的中间写入例如可能涉及在将存储器图像随后存储在数据存储介质108上之前,将所述存储器图像写入到缓冲器116。替代性地,直接到存储装置的捕获可能涉及将存储器图像直接写入到数据存储介质108,而不写入到缓冲器116。下面讨论确认是利用到存储器的中间写入还是到存储装置的直接写入的各种方式。
[0039]如果存储器图像将经由到存储器的中间写入(“中间写入”)而被捕获,则步骤204捕获存储器图像并且将存储器图像写入到存储器的一部分。存储器图像例如可以被写入到缓冲器116。步骤206将来自存储器的该部分的存储器图像写入到存储介质。例如,存储器图像可以从缓冲器116被写入到数据存储介质108的存储器图像122。
[0040]如果存储器图像将被直接捕获到存储装置(“直接到存储装置”),则步骤208捕获存储器图像,并且将存储器图像存储在数据存储装置中。存储器图像例如可以从存储器110中捕获,并且被存储在存储器图像122中,而没有存储器图像到缓冲器116和/或存储器110的其它部分的中间写入。关于这个方法的实施方式的另外细节将在下文中描述。
[0041]在至少一些实施例中,应用和/或过程可以利用本文所讨论的技术作为用于从差错和/或故障状况中恢复的“自愈”过程的一部分。例如,应用可以启动上文描述的方法,并且可以利用所捕获的存储器图像的内容来识别和修理经由图像而检测到的程序错误。
[0042]图3是描述根据一个或者多个实施例的方法中的步骤的流程图。在至少一些实施例中,该方法描述用于确定是经由到存储器的中间写入还是直接到存储装置来捕获存储器图像。例如,该方法描述了上文参考图2讨论的步骤202的实施方式。
[0043]步骤300确定针对存储器图像的请求是否指定了到存储器的中间写入或者到存储装置的直接写入中的一个。例如,正在请求存储器图像的应用和/或服务可以被预先配置成利用到存储器的中间写入或者到存储装置的存储器图像的直接写入。
[0044]如果请求指定了到存储器的中间写入或者到存储装置的直接写入中第一个(“是”),则步骤302利用所指定的到存储器的中间写入或者到存储装置的直接写入。例如,请求可以包括应用编程接口(API)函数调用(例如,对存储器成像器模块120),其指定到存储器的中间写入或到存储装置的直接写入中的一个。
[0045]如果请求没有指定到存储器的中间写入或到存储装置的直接写入中的一个(“否”),则步骤304确认请求是否指定了要经由存储器图像捕获的存储器的部分。例如,请求可以指定与特定过程、服务、应用、设备、线程等等相关联的存储器的部分的图像。
[0046]如果请求指定了要经由存储器图像捕获的存储器的部分(“是”),则步骤306确定是否存在足够的存储器空间来对所指定的存储器的部分的图像进行缓冲。例如,存储器管理器模块118可以识别要被成像的存储器110的部分。存储器110的部分可以例如基于与在请求中所指定的特定过程、服务、应用、设备、线程等等相关联的存储器地址而被识别。存储器管理器模块118可以例如以千比特、兆比特、千兆比特等等为单位来估计存储器的部分的大小。存储器管理器模块118可以确定存储器110上是否存在足够的空闲空间(例如,当前没有被过程使用的空间)来存储存储器的部分的图像。
[0047]如果存在足够的存储器空间来缓冲所指定的存储器的部分的图像(“是”),则步骤308利用到存储器的中间写入来捕获存储器图像。如果不存在足够的存储器空间来缓冲所指定的存储器的部分的图像(“否”),则步骤310利用到存储装置的直接写入来捕获存储器图像。
[0048]在至少一些实施例中,如果不存在足够的存储器空间来缓冲所指定的存储器的部分的图像,则要被成像的所指定的存储器的部分可以被过滤以减少存储器大小,从而适用于可用的空闲存储器空间内。例如,存储器的部分可以基于各种因素(诸如最近哪些部分被访问、哪些部分与被指派为比其他过程更重要的过程相关联等等)而按优先级排序。因此,存储器的部分可以从那些被指派将被成像那些部分中消除,诸如从最低优先级的过程开始,直到要被成像的存储器大小将适用于在存储器中可用的空闲空间。
[0049]因此,在至少一些实施例中,在不存在足够的存储器空间来缓冲所指定的存储器的部分的图像的情况下,替代于切换到针对存储器图像进行到存储装置的直接写入,存储器的部分可以从那些被指派为要被成像的那些部分中消除。
[0050]返回步骤304,如果请求没有指定要经由存储器图像捕获的存储器的部分(“否”),则步骤312识别要经由存储器图像捕获的存储器的有关部分。例如,存储器成像器模块120可以指定已经在某个时间帧内被访问的存储器的部分被认为是有关的。例如,已经在某个时间阈值(例如,前500毫秒、1秒等等)内被写入和/或读出的存储器的部分可以被认为是存储器的有关部分。存储器管理器模块118可以跟踪存储器访问信息,并且因此可以使得存储器的这样的部分能够被识别。
[0051]步骤314确定是否存在足够的存储器空间来缓冲所识别的存储器的部分的图像。如上文所提及的,存储器管理器模块118可以确定针对存储器图像的存储器大小,以及在存储器中是否存在足够的空闲空间来存储存储器图像。
[0052]如果存在足够的存储器空间来缓冲所识别的存储器的部分(“是”),则步骤308利用到存储器的中间写入来捕获存储器图像。如果不存在足够的存储器空间来缓冲所识别的存储器的部分(“否”),则步骤310利用到存储装置的直接写入来捕获存储器图像。
[0053]图4是描述根据一个或者多个实施例的方法中的步骤的流程图。在至少一些实施例中,该方法描述了用于使用到存储器的中间写入而捕获存储器的部分的图像的示例技术。
[0054]步骤400接收捕获存储器的一部分的图像的请求。上文讨论了请求可以被接收的各种方式。在至少一些实施例中,请求可以指定内核空间存储器、用户空间存储器的部分和/或存储器的其他部分。请求可以附加地或者替代性地基于存储器的哪些部分是最活跃的,例如,哪些部分在特定时间段内被最近地访问。
[0055]步骤402估计存储器的部分的大小。例如,大小可以基于被包括在存储器的部分中的存储器页面的数量而被估计。附加地或者替代性地,可以基于针对存储器的部分而被识别的存储器地址而估计大小,例如通过存储器管理器模块118。
[0056]步骤404分配其中将存储存储器的部分的图像的存储器中的缓冲区域。例如,缓冲区域可以被分配以使得足够的空间可用于存储存储器的部分的图像(例如,位图)。
[0057]步骤406收集针对存储器的部分的地址。针对被识别的存储器的(多个)部分的存储器地址可以例如由针对存储器110的存储器控制器来聚集。
[0058]步骤408暂停不与捕获相关的计算活动(例如,中断)。例如,对于处理器的中断可以被暂停。存储器成像器模块120例如可以与相关联于处理器的操作系统内核交互,以暂时地中止对处理器的中断。进一步地,不与捕获过程相关的、对存储器(例如,存储器110)的访问可以在捕获过程期间被阻止。
[0059]虽然在此没有被明显地图示,但是在至少一些实施例中,在不与捕获相关的计算活动被暂停之后,可以收集附加的存储器地址,以用于存储器成像操作。
[0060]步骤410将存储器的部分的图像写入到被分配的存储器的缓冲区域。针对存储器110的存储器控制器例如可以使用所收集的存储器地址来读取所识别的存储器110的部分,例如从内核存储器空间112、用户存储器空间114和/或存储器
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1