发明内容
本发明提供一种系统崩溃时系统信息存储方法及装置,以便在系统崩溃时可以快速高效的存储系统信息。
本发明实施例提供一种系统崩溃时系统信息存储方法,所述的方法包括:在系统启动前对内存进行初始化,并对预先设置的保留内存区域不进行刷新;在系统启动后将存储位置可修改的系统信息的存储位置修改至所述的保留内存区域;在系统崩溃时将系统重新启动;在重新启动系统时对所述的保留内存区域不进行刷新。
一种系统崩溃时系统信息存储方法,所述的方法包括:
在系统启动前对内存进行初始化,并对预先设置的保留内存区域不进行刷新;
在系统崩溃时将存储位置不可修改的系统信息存入所述的保留内存区域中;
在系统崩溃时将系统重新启动;
在重新启动系统时对所述的保留内存区域不进行刷新。
一种系统崩溃时系统信息存储方法,所述的方法包括:
在系统启动前对内存进行初始化,并对预先设置的保留内存区域不进行刷新;
将系统信息中运行状态信息的地址信息存储到所述的保留内存区域的约定位置中,在系统崩溃后系统重新启动前根据所述约定位置中的地址信息将系统信息中运行状态信息存储到所述的保留内存区域中;
在系统崩溃时将系统重新启动;
在重新启动系统时对所述的保留内存区域不进行刷新。
本发明实施例还提供一种系统崩溃时系统信息存储装置,所述的装置包括:初始化单元,用于在系统启动前对内存进行初始化,并对预先设置的保留内存区域不进行刷新;系统信息存储单元,用于在系统启动后将系统信息存入所述的保留内存区域,所述的系统信息存储单元包括存储位置修改模块,用于在系统启动后将存储位置可修改的系统信息的存储位置修改至所述的保留内存区域中;系统重启单元,用于在系统崩溃时将系统重新启动;内存保护单元,用于在重新启动系统时对所述的保留内存区域不进行刷新。
一种系统崩溃时系统信息存储装置,所述的装置包括:
初始化单元,用于在系统启动前对内存进行初始化,并对预先设置的保留内存区域不进行刷新;
系统信息存储单元,用于在系统启动后将系统信息存入所述的保留内存区域,所述的系统信息存储单元包括第一存储模块,用于在系统崩溃时将存储位置不可修改的系统信息存入所述的保留内存区域中;
系统重启单元,用于在系统崩溃时将系统重新启动;
内存保护单元,用于在重新启动系统时对所述的保留内存区域不进行刷新。
一种系统崩溃时系统信息存储装置,其特征在于,所述的装置包括:
初始化单元,用于在系统启动前对内存进行初始化,并对预先设置的保留内存区域不进行刷新;
系统信息存储单元,用于在系统启动后将系统信息存入所述的保留内存区域,所述的系统信息存储单元包括地址信息存储模块,用于在系统启动后将系统信息中运行状态信息的地址信息存储到所述的保留内存区域的约定位置中;
系统信息转存模块,用于在系统崩溃后系统重新启动前根据所述约定位置中的地址信息将系统信息中运行状态信息存储到所述的保留内存区域中;
系统重启单元,用于在系统崩溃时将系统重新启动;
内存保护单元,用于在重新启动系统时对所述的保留内存区域不进行刷新。
由于本发明采用了将系统信息存储在预先设置的内存区域中,克服了现有技术中系统信息过程复杂和成本高的缺陷,可以快速高效的存储系统信息。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
本发明实施例提供一种系统崩溃时系统信息存储方法及装置,可以快速高效的存储系统信息。以下结合附图对本发明实施例进行详细说明。
实施例一
图1是本发明实施例提供的一种系统崩溃时系统信息存储方法流程图。如图1所示,所述的方法包括:
步骤S101,在系统启动前对内存进行初始化,并对预先设置的保留内存区域不进行刷新。
在本发明实施例中,系统在启动时由基本输入输出系统(BIOS,BasicInput/Output System)对系统的各个单元(包括CPU,内存,硬盘等)进行初始化,其中在对内存进行初始化时,根据BIOS中的设置,并对预先设置的保留内存区域不进行初始化。
通常BIOS在进行内存初始化时,会对所有的内存区域均进行初始化,以检测内存是否正常,在本发明实施例中,可以对BIOS对内存进行初始化的过程进行修改,将整个内存区域划分为需要初始化的内存区域和不需要初始化的保留内存区域,并在BIOS进行初始化的过程中仅对需要初始化的内存区域进行初始化,从而将不需要初始化的保留内存区域保护起来不进行刷新,也不提供给系统使用。
在本发明实施例中,保留内存区域的大小,可以由BIOS根据系统的版本确定,如系统为Windows XP时,BIOS可以将保留内存区域设为8M,而系统为Windows Vista时,BIOS可以将保留内存区域设为32M,此处仅作示例性说明,具体保留内存区域的大小可以根据实际需要更改。在本发明实施例中,保留内存区域的大小也可以由用户在BIOS中预先设置,从而满足不同用户的需要。
步骤S102,在系统启动后将系统信息存入所述的保留内存区域。
在本发明实施例中,可以根据系统信息的修改权限,将系统信息分为三类:
图2所示是本发明一实施例提供的将系统信息存入保留内存区域的示意图。
如图2所示,对于可以修改存放位置的系统信息,如系统符号表等,这一部分系统信息在系统启动后,可以由Debug单元将其存放位置改至保留内存区域中,即,将存储位置可修改的系统信息的存放地址改至保留内存区域中;
图3所示是本发明一实施例提供的将系统信息存入保留内存区域的示意图。
如图3所示,对于不可以修改存放位置的系统信息,如日志信息缓冲区等,可以在系统崩溃时由Debug单元将这部分存储位置不可修改的系统信息拷贝至保留内存区域中;
图4-图5所示是本发明一实施例提供的将系统信息存入保留内存区域的示意图。
如图4-图5所示,对于一些运行状态信息,如程序运行堆栈内容等,由于不能采用以上两种方法存储,因此可以在系统启动后,先由Debug单元将这部分系统信息中运行状态信息的存放地址信息写入保留内存区域的约定位置中,继而在系统崩溃后系统重新启动前由BIOS根据保留内存区域约定位置中的存放地址信息,找到存放地址信息对应的系统信息,并将这部分系统信息存储到所述的保留内存区域中。在本发明实施例中,BIOS单元也将一些还未变化的硬件信息(如重启后不丢失信息的寄存器)也存储到所述的保留内存区域中。
步骤S103,在系统崩溃时将系统重新启动。
在本发明实施例中,当故障拦截软件检测到系统崩溃时,Debug单元通知BIOS重新启动系统。故障拦截软件可以是Linux调用的dump函数或注册到panic处理中的处理函数,此部分为现有技术,故在此不再赘述。
步骤S104,在重新启动系统时对所述的保留内存区域不进行刷新。
在本发明实施例中,BIOS重新启动系统,并对保留内存区域不进行刷新。这样除了内存掉电的情况外,保留内存区域存储的系统信息不会丢失也不会被其他软件修改。
步骤S105,将所述的保留内存区域中存储的系统信息输出。
在本发明实施例中,在系统重新启动以后Debug单元将所述的保留内存区域中存储的系统信息输出。输出的方式可以是生成一文本文件,或通过打印机输出,或通过显示器输出。
本发明实施例提供的系统崩溃时系统信息存储方法,克服了现有技术中系统信息过程复杂和成本高的缺陷,可以快速高效的存储系统信息。
实施例二
图6是本发明实施例提供的一种系统崩溃时系统信息存储装置600的框图。如图6所示,所述的装置600包括:
初始化单元601,用于在系统启动前对内存进行初始化,并对预先设置的保留内存区域不进行刷新。
在本发明实施例中,初始化单元601可以是基本输入输出系统(BIOS,Basic Input/Output System),BIOS在系统启动时对系统的各个单元(包括CPU,内存,硬盘等)进行初始化。通常BIOS在进行内存初始化时,会对所有的内存区域均进行初始化,以检测内存是否正常,在本发明实施例中,可以对BIOS对内存进行初始化的过程进行修改,将整个内存区域划分为需要初始化的内存区域和不需要初始化的保留内存区域,并在BIOS进行初始化的过程中仅对需要初始化的内存区域进行初始化,从而将不需要初始化的保留内存区域保护起来不进行刷新,也不提供给系统使用。
在本发明实施例中,保留内存区域的大小,可以由BIOS根据系统的版本确定,如系统为Windows XP时,BIOS可以将保留内存区域设为8M,而系统为Windows Vista时,BIOS可以将保留内存区域设为32M,此处仅作示例性说明,具体保留内存区域的大小可以根据实际需要更改。在本发明实施例中,保留内存区域的大小也可以由用户在BIOS中预先设置,从而满足不同用户的需要。
系统信息存储单元602,用于在系统启动后将系统信息存入所述的保留内存区域。
在本发明实施例中,系统信息存储单元602可以是Debug单元,系统信息根据系统信息的修改权限,可以分为三类:即可以修改存放位置的系统信息、不可以修改存放位置的系统信息及系统信息中的运行状态信息。
图7是本发明实施例提供的系统信息存储单元602的框图。如图7所示,系统信息存储单元602包括:存储位置修改模块701、第一存储模块702、地址信息存储模块703和系统信息转存模块704,其中
存储位置修改模块701用于在系统启动后将存储位置可修改的系统信息的存储位置修改至所述的保留内存区域中。
在本发明实施例中,对于可以修改存放位置的系统信息,如系统符号表等,这一部分系统信息在系统启动后,可以由存储位置修改模块701将其存放位置改至保留内存区域中,即将这部分系统信息的存放地址改至保留内存区域中;
第一存储模块702用于在系统崩溃时将存储位置不可修改的系统信息存入所述的保留内存区域中。
在本发明实施例中,对于不可以修改存放位置的系统信息,如日志信息缓冲区等,可以在系统崩溃时由第一存储模块702将这部分系统信息拷贝至保留内存区域中。
地址信息存储模块703用于在系统启动后将系统信息中运行状态信息的地址信息存储到所述的保留内存区域的约定位置中;
系统信息转存模块704用于在系统崩溃后系统重新启动前根据所述约定位置中的地址信息将系统信息中运行状态信息存储到所述的保留内存区域中。
在本发明实施例中,对于一些运行状态信息,如程序运行堆栈内容等,由于不能采用以上两种方法存储,因此可以在系统启动后,先由地址信息存储模块703将这部分系统信息的存放地址信息写入保留内存区域的约定位置中,继而由系统信息转存模块704在系统崩溃后系统重新启动前由BIOS根据保留内存区域约定位置中的存放地址信息,找到存放地址信息对应的系统信息,并将这部分系统信息存储到所述的保留内存区域中。在本发明实施例中,BIOS单元也将一些还未变化的硬件信息(如重启后不丢失信息的寄存器)也存储到所述的保留内存区域中。
系统重启单元603,用于在系统崩溃时将系统重新启动。
在本发明实施例中,当故障拦截软件检测到系统崩溃时,系统重启单元603通知BIOS重新启动系统,系统重启单元603可以是Debug单元。故障拦截软件可以是Linux调用的dump函数或注册到panic处理中的处理函数,此部分为现有技术,故在此不再赘述。
内存保护单元604,用于在重新启动系统时对所述的保留内存区域不进行刷新。
在本发明实施例中,内存保护单元604可以是BIOS单元,在重新启动系统时对保留内存区域不进行刷新。这样除了内存掉电的情况外,保留内存区域存储的系统信息不会丢失也不会被其他软件修改。
系统信息输出单元605,用于将所述的保留内存区域中存储的系统信息输出。
在本发明实施例中,在系统重新启动以后系统信息输出单元605将所述的保留内存区域中存储的系统信息输出。系统信息输出单元605可以包括:文本生成模块,用于生成一文本文件;打印机输出模块,用于通过打印机输出;显示输出模块,用于通过显示器输出。
本发明实施例提供的系统崩溃时系统信息存储方法,克服了现有技术中系统信息过程复杂和成本高的缺陷,可以快速高效的存储系统信息。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。