收集内存信息的方法和单元的制作方法

文档序号:6471800阅读:116来源:国知局

专利名称::收集内存信息的方法和单元的制作方法
技术领域
:本发明涉及内存分析
技术领域
,具体涉及收集内存信息的方法和单元。
背景技术
:在应用中,核心专用设备上的系统对稳定性的要求是非常高的,如果发生系统僵死或重启,则是重大事故必须尽快解决。但是,此类问题往往难度很大,个体差别很大,因此,提供通用、快速、有效的分析和诊断方法很有必要。目前,通常采用内存分析方法。该方法的大体思路为收集系统僵死或重启前的内存信息,分析内存信息如任务栈、全局变量、各种数据结构等,以定位故障发生的原因。内存分析方法的关键是内存信息的收集。现有的收集内存信息的方案是通过在计算机的引导软件上增加内存转储功能实现的,具体为在计算机系统重启后运行引导软件,引导软件运行内存转储功能,将内存信息收集到本地的存储设备中。现有的收集内存信息的方案的缺点如下1、内存转储功能必须在内存中运行,现有方案未对运行内存转储功能的内存进行任何限制,这样可能会导致运行内存转储功能的内存覆盖掉待收集的内存信息,使得收集的内存信息不完整。2、由于收集的内存信息是存储到本地存储设备中的,因此,计算机系统必须支持文件系统。这样,对于文件系统存储资源小的嵌入式系统,只能存储部分内存信息,从而使得收集的内存信息不完整;而对于无文件系统的嵌入式系统则无法应用本方案。
发明内容本发明提供收集内存信息的方法和单元,以保证收集的内存信息的完整性。本发明的技术方案是这样实现的一种收集内存信息的方法,在引导软件中增加内存收集功能,该方法包括:设备系统重启,运行引导软件,将内存收集功能加载到内存信息未占用的存储区,运行内存收集功能收集内存信息。所述运行引导软件之后、将内存收集功能加载到内存信息未占用的存储区之前进一步包括将二级高速緩存使能为RAM模式;所述将内存收集功能加载到内存信息未占用的存储区为将内存收集功能加载到所述二级高速緩存中。预先记录空闲内存或未分配的原始内存的索引地址,所述将内存收集功能加载到内存信息未占用的存储区包括根据空闲内存或未分配的原始内存的索引地址,将内存收集功能加载到空闲内存或未分配的原始内存中。在设备中预留专用于加载内存收集功能的内存;所述将内存收集功能加载到内存信息未占用的存储区包括将内存收集功能加载到专用于加载内存收集功能的内存中。预先设置内存收集标志,且,当设备系统异常后,系统将内存收集标志置位,所述运行引导软件之后、将内存收集功能加载到内存信息未占用的存储区之前进一步包括判断内存收集标志是否置位,若置位,则执行所述将内存收集功能加载到内存信息未占用的存储区的动作。所述运行内存收集功能收集内存信息之后进一步包括将收集的内存信息通过网络上传到分析主机上。所述将收集的内存信息通过网络上传到分析主机上包括通过FTP或TFTP或自定义协议将内存信息上传到分析主才几上。一种内存收集单元,该单元包括加载模块,当设备系统重启运行引导软件后,将内存收集功能加载到内存信息未占用的存储区中,加载完毕,向内存收集功能运行模块发送运行指示;内存收集功能运行模块,接收运行指示,在内存信息未占用的存储区中运行内存收集功能收集内存信息。所述单元进一步包括二级高速緩存使能模块,设备系统重启运行引导软件后,将二级高速緩存使能为RAM模式,使能完毕,向加载模块发送加载指示,且所述加载模块将内存收集功能加载到二级高速緩存。所述单元进一步包括未使用内存索引地址记录模块,记录空闲内存或未分配的原始内存的索引地址;且,所述加载模块进一步包括,用于在运行引导软件后,从未使用内存索引地址记录模块获取空闲内存或未分配的原始内存的索引地址,根据该地址找到空闲内存或未分配的原始内存,确定将内存收集功能加载到空闲内存或未分配的原始内存中的模块。所述单元进一步包括专用内存地址记录模块,记录专用于加载内存收集功能的内存地址;且,所述加载模块进一步包括,用于在运行引导软件后,从专用内存地址记录模块获取专用于加载内存收集功能的内存地址,并根据该地址确定将内存收集功能加载到专用于加载内存收集功能的内存中的模块。该单元进一步包括内存收集标志设置模块,当系统异常时,将内存收集标志位置位;且,所述加载模块进一步包括,用于在运行引导软件后,若发现内存收集标志位置位,则确定加载内存收集功能的模块。该单元进一步包括上传模块,接收内存收集功能运行模块发来的内存信息,将该内存信息通过网络上传到分析主机。与现有技术相比,本发明通过将内存收集功能加载到内存信息未占用的存储区,例如未分配的原始内存、空闲内存、预留专用内存、使能为RAM模式的二级cache等,使得运行内存收集功能的内存不会覆盖待收集的内存信息,保证了内存信息的完整性。另外,本发明实施例中,将内存信息上传到分析主机上,使得本地设备不受必须支持文件系统的限制,同时使得本发明实施例适用于嵌入式系统。图1为本发明实施例一提供的收集内存信息的流程图3为本发明实施例提供的采用自定义协议上传内存信息的组网结构图4为本发明实施例二提供的收集内存信息的流程图;图5为本发明实施例三提供的收集内存信息的流程图;图6为本发明实施例一提供的收集内存信息的单元的组成图;图7为本发明实施例二提供的收集内存信息的单元的组成图;图8为本发明实施例三提供的收集内存信息的单元的组成图。具体实施例方式本发明的核心思想是在引导软件中增加内存收集功能,当设备重启后,运行引导软件,将内存收集功能加载到内存信息未占用的存储区,运行内存收集功能收集内存信息。在本发明实施例中,可将内存收集功能加载到二级高速緩存(Cache)或空闲内存或未分配的原始内存或预留的专用于加载内存收集功能的内存中。下面结合附图及具体实施例对本发明再作进一步详细的说明。图1为本发明实施例一提供的收集内存信息的流程图,在本实施例中,将内存收集功能加载到二级Cache中,如图I所示,其具体步骤如下步骤101:在设备系统的引导软件中增加内存收集功能,并默认内存收集功能使能;设置内存收集参数区,将内存收集参数如分析主机的地址、网络上传协议类型等放入内存收集参数区。内存收集功能共包含两种功能一种是,收集内存信息,该功能与现有技术相同;另一种是,根据分析主机的地址和网络上传协议类型,将收集的内存信息上传到分析主机上。步骤102:设备系统重启,运行引导软件,判断内存收集标志位是否为"1",若是,执行步骤104;否则,执行步骤103。这里,内存收集标志位为"1"表示需要收集内存信息,为"0"表示不需要收集内存信息。系统可根据需要设置内存标志位,例如系统在第一次重启后,发现系统仍异常,则可设置内存收集标志位为"1"。步骤103:系统不运行内存收集功能,继续运行引导软件的其它功能,本流禾呈结束。步骤104:系统从内存收集参数区中获取内存收集参数如分析主机的地址,网络上传协议类型等。步骤105:系统将二级Cache使能为随机存取内存(RAM,RandomAccessMemory)模式。对于MIPS或PPC的CPU,当其支持二级cache时,都可通过i殳置特定的寄存器bit位将二级cache使能为ram模式。步骤106:系统将内存收集功能加载到二级Cache中。系统异常前运行的是操作系统,本实施例中系统重启后运行的是引导软件。要收集的内存信息是在运行操作系统的过程中产生的,内存信息收集步骤是在引导软件运行过程中完成的。二级Cache具有两种模式一种是,高速緩存模式,此时,系统运行在操作系统模式下,二级Cache主要作为中间緩存起到加速存储功能,并不存储内存信息;另一种是RAM模式,此时,二级Cache可作为专用存储体使用。本实施例中,将内存收集功能加载到二级Cache中运行,这样就不会覆盖掉需要收集的内存信息。步骤107:系统在二级Cache中运行内存收集功能收集内存信息。步骤108:系统根据网络上传协议类型、分析主机的地址,将收集的内存信息打包后通过网络上传到分析主机。将内存信息上传到分析主机可釆用如下方式1、简单文件传输协议(TFTP,TrivialFileTransferProtocol)方式;2、文件传!命协i义(FTP,FileTransferProtocol)方式;3、自定义的协议方式。其中,TFTP和FTP方式采用标准协议,搭建分析主机非常方便,只要在网络可达的地方搭建分析主机即可。通过TFTP或FTP方式上传内存信息,组网灵活,可以透过广域网或局域网,其组网结构如图2所示。采用TFTP或FTP方式上传内存信息需要在引导软件上实现TFTP或FTP协议栈。对于引导软件未实现TFTP或FTP协议栈的情况,则可以采用自定义协议的方式来上传内存信息。以下给出一个基于以太网的自定义协议方式上传内存信息的实例基于以太网的自定义协议方式来上传内存信息,分析主机和设备需要在同一局域网中,其组网结构如图3所示。具体上传过程为设备的引导软件将收集的内存信息按照如表1所示的格式打包,其中,协议号为自定义的协议号,目的媒体接入控制(MAC,MediaAccessControl)为分析主机的MAC地址,源MAC为设备的MAC地址,长度为内存数据的长度,序列号为数据在内存中的起始地址,CRC为循环校验码,内存数据即打包的内存信息;分析主机收到报文后,根据报文中的序列号和长度,将内存数据从緩存中取出组成一个完整的内存映像文件。<table>tableseeoriginaldocumentpage11</column></row><table>表l自定义协议报文格式表图4为本发明实施例二提供的收集内存信息的流程图,在本实施例中,将内存收集功能加载到未使用内存区中,如图4所示,其具体步骤如下步骤401:在设备系统的引导软件中增加内存收集功能,并默认内存收集功能使能;设置内存收集参数区,将内存收集参数如空闲内存或未分配的原始内存的索引地址、分析主机的地址、网络上传协议类型等放入内存收集参数区。对于未分配的原始内存,操作系统中有一个专门的变量来记录内存未分配区的首地址,可将该变量所在的内存地址作为未分配的原始内存的索引地址,这样,引导软件就可根据该索引地址找到该变量,该变量的值即为内存未分配区的首地址,从而可找到未分配的原始内存。空闲内存指的是已经被分配但处于空闲状态的内存。对于空闲内存,系统会将空闲内存通过链表的方式管理起来。因此,可将空闲内存链表的表头地址作为空闲内存的索引地址,这样,引导软件就可根据该索引地址找到空闲内存。步骤402:设备系统重启,运行引导软件,判断内存收集标志位是否为"1",若是,执行步骤404;否则,执行步骤403。步骤403:系统不运行内存收集功能,继续运行引导软件的其它功能,本流程结束。步骤404:系统从内存收集参数区中获取内存收集参数如空闲内存或未分配的原始内存的索引地址、分析主机的地址、网络上传协议类型等。步骤405:系统根据空闲内存或未分配的原始内存的索引地址找到空闲内存或未分配的原始内存,将内存收集功能加载到空闲内存或未分配的原始内存中。步骤406:系统在空闲内存或未分配的原始内存中运行内存收集功能收集内存信息。步骤407:系统根据网络上传协议类型、分析主机的地址,将收集的内存信息打包后通过网络上传到分析主机。图5为本发明实施例三提供的收集内存信息的流程图,在本实施例中,将内存收集功能加载到预留的专用于加载内存收集功能的内存中,如图5所示,其具体步骤如下步骤501:在设备中预留专用于加栽内存收集功能的内存,在设备系统的引导软件中增加内存收集功能,并默认内存收集功能使能;设置内存收集参数区,将内存收集参数如专用于加载内存收集功能的内存地址、分析主机的地址、网络上传协议类型等放入内存收集参数区。步骤502:设备系统重启,运行引导软件,判断内存收集标志位是否为"r,,若是,执行步骤504;否则,执行步骤503。步骤503:系统不运行内存收集功能,继续运行引导软件的其它功能,本流程结束。步骤504:系统从内存收集参数区中获取内存收集参数如专用于加载内存收集功能的内存地址、分析主机的地址、网络上传协议类型等。步骤505:系统根据专用于加载内存收集功能的内存地址,将内存收集功能加载到专用于加载内存收集功能的内存中。步骤506:系统在专用于加载内存收集功能的内存中运行内存收集功能收集内存信息。步骤507:系统根据网络上传协议类型、分析主机的地址,将收集的内存信息打包后通过网络上传到分析主机。图6为本发明实施例一提供的内存收集单元的组成图,如图6所示,其主要包括内存收集标志设置模块60、二级高速緩存使能模块61、加载模块62和内存收集功能运行模块63,其中内存收集标志设置模块60:设置内存收集标志位,当设备系统异常,需要进行内存信息收集时,将该内存收集标志位置"1";当不需要进行内存信息收集时,将该内存收集标志位置"0"。二级高速緩存使能模块61:设备系统重启运行引导软件后,若发现内存收集标志设置模块60中的内存收集标志位为"l",则将二级高速緩存使能为RAM模式,使能完毕,向加载模块62发送加载指示。加载模块62:接收二级高速緩存使能模块61发来的加载指示,将内存收集功能加载到二级高速緩存中,加载完毕,向内存收集功能运行模块63发送运行指示。内存收集功能运行模块63:接收加载模块62发来的运行指示,在二级高速緩存中运行内存收集功能收集内存信息。图7为本发明实施例二提供的内存收集单元的组成图,如图7所示,其主要包括内存收集标志设置模块70、未使用内存索引地址记录模块71、加载模块72和内存收集功能运行模块73,其中内存收集标志设置模块70:设置内存收集标志位,当设备系统异常,需要进行内存信息收集时,将该内存收集标志位置"1";当不需要进行内存信息收集时,将该内存收集标志位置"0"。未使用内存索引地址记录模块71:记录空闲内存或未分配的原始内存的索引地址。加载模块72:设备系统重启运行引导软件后,若发现内存收集标志设置模块70中的内存收集标志位为'T,,则从未使用内存索引地址记录模块71获取空闲内存或未分配的原始内存的索引地址,根据该地址找到空闲内存或未分配的原始内存,将内存收集功能加载到空闲内存或未分配的原始内存中,加载完毕,向内存收集功能运行模块73发送运行指示。内存收集功能运行模块73:接收加载模块72发来的运行指示,从未使用内存索引地址记录模块71获取空闲内存或未分配的原始内存的索引地址,根据该地址在空闲内存或未分配的原始内存中运行内存收集功能收集内存信息。图8为本发明实施例三提供的内存收集单元的组成图,如图8所示,其主要包括内存收集标志设置模块80、专用内存地址记录模块81、加载模块82和内存收集功能运行模块83,其中内存收集标志设置模块80:设置内存收集标志位,当设备系统异常,需要进行内存信息收集时,将该内存收集标志位置"1";当不需要进行内存信息收集时,将该内存收集标志位置"0"。专用内存地址记录模块81:记录预留的专用于加栽内存收集功能的内存地址。加载模块82:设备系统重启运行引导软件后,若发现内存收集标志设置模块80中的内存收集标志位为"1",则从专用内存地址记录模块81获取专用于加载内存收集功能的内存地址,根据该地址将内存收集功能加载到专用于加载内存收集功能的内存中,加载完毕,向内存收集功能运行^^莫块83发送运行指示。内存收集功能运行模块83:接收加载模块82发来的运行指示,从专用内存地址记录模块81获取专用于加载内存收集功能的内存地址,根据该地址在专用于加载内存收集功能的内存中运行内存收集功能收集内存信息。在实际应用中,图68所示的内存收集单元还可包括上传模块,该模块用于接收内存收集功能运行模块发来的内存信息,将该内存信息通过网络上传到分析主机。同时,内存收集功能运行模块将收集到的内存信息发送给上传模块。以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1、一种收集内存信息的方法,其特征在于,在引导软件中增加内存收集功能,该方法包括设备系统重启,运行引导软件,将内存收集功能加载到内存信息未占用的存储区,运行内存收集功能收集内存信息。2、如权利要求l所述的方法,其特征在于,所述运行引导软件之后、将内存收集功能加载到内存信息未占用的存储区之前进一步包括将二级高速缓存使能为RAM模式;所述将内存收集功能加载到内存信息未占用的存储区为将内存收集功能加载到所述二级高速緩存中。3、如权利要求l所述的方法,其特征在于,预先记录空闲内存或未分配的原始内存的索引地址,所述将内存收集功能加载到内存信息未占用的存储区包括根据空闲内存或未分配的原始内存的索引地址,将内存收集功能加载到空闲内存或未分配的原始内存中。4、如权利要求l所述的方法,其特征在于,在设备中预留专用于加载内存收集功能的内存;所述将内存收集功能加载到内存信息未占用的存储区包括将内存收集功能加载到专用于加载内存收集功能的内存中。5、如权利要求1至4任一所述的方法,其特征在于,预先设置内存收集标志,且,当设备系统异常后,系统将内存收集标志置位,所述运行引导软件之后、将内存收集功能加载到内存信息未占用的存储区之前进一步包括判断内存收集标志是否置位,若置位,则执行所述将内存收集功能加载到内存信息未占用的存储区的动作。6、如权利要求1至4任一所述的方法,其特征在于,所述运行内存收集功能收集内存信息之后进一步包括将收集的内存信息通过网络上传到分析主机上。7、如权利要求6所述的方法,其特征在于,所述将收集的内存信息通过网络上传到分析主机上包括通过FTP或TFTP或自定义协议将内存信息上传到分析主机上。8、一种内存收集单元,其特征在于,该单元包括加载模块,当设备系统重启运行引导软件后,将内存收集功能加载到内存信息未占用的存储区中,加载完毕,向内存收集功能运行模块发送运行指示;内存收集功能运行模块,接收运行指示,在内存信息未占用的存储区中运行内存收集功能收集内存信息。9、如权利要求8所述的单元,其特征在于,所述单元进一步包括二级高速緩存使能模块,设备系统重启运行引导软件后,将二级高速緩存使能为RAM模式,使能完毕,向加载模块发送加载指示,且所述加载模块将内存收集功能加载到二级高速緩存。10、如权利要求8所述的单元,其特征在于,所述单元进一步包括未使用内存索引地址记录模块,记录空闲内存或未分配的原始内存的索引地址;且,所述加载模块进一步包括,用于在运行引导软件后,从未使用内存索引地址记录模块获取空闲内存或未分配的原始内存的索引地址,根据该地址找到空闲内存或未分配的原始内存,确定将内存收集功能加载到空闲内存或未分配的原始内存中的模块。11、如权利要求8所述的单元,其特征在于,所述单元进一步包括专用内存地址记录模块,记录专用于加载内存收集功能的内存地址;且,所述加载模块进一步包括,用于在运行引导软件后,从专用内存地址记录模块获取专用于加载内存收集功能的内存地址,并根据该地址确定将内存收集功能加载到专用于加载内存收集功能的内存中的模块。12、如权利要求8至11任一所述的单元,其特征在于,该单元进一步包括内存收集标志设置模块,当系统异常时,将内存收集标志位置位;且,所述加载模块进一步包括,用于在运行引导软件后,若发现内存收集标志位置位,则确定加载内存收集功能的模块。13、如权利要求8至11任一所述的单元,其特征在于,该单元进一步包括上传模块,接收内存收集功能运行模块发来的内存信息,将该内存信息通过网络上传到分析主机。全文摘要本发明公开了收集内存信息的方法和单元。方法包括在引导软件中增加内存收集功能,当设备系统重启运行引导软件后,将内存收集功能加载到内存信息未占用的存储区中,运行内存收集功能收集内存信息。本发明保证了收集的内存信息的完整性。文档编号G06F11/36GK101419569SQ20081023990公开日2009年4月29日申请日期2008年12月12日优先权日2008年12月12日发明者孙洋建,游瑞川,肖新风申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1