处理cpu异常的方法及系统的制作方法

文档序号:6610212阅读:300来源:国知局
专利名称:处理cpu异常的方法及系统的制作方法
技术领域
本发明涉及计算机操作系统技术领域,尤其涉及一种处理CPU异常的方
法及系统。
背景技术
用户对^t据操作时经常会发生意想不到的情况,比如系统篮屏(blue screen)或者自动重启,所有这些现象都是因为操作系统内核发生了 "异常"。 异常是一个同步事件,它是由CPU执行了某些特定代码产生的,重新执行相 同的代码会重复产生特定的异常。异常种类很多,比如存储器存取违规、除0 或者执行特定调试指令等。
参见图1,为现有操作系统(Operation System, OS)处理CPU异常的流 程图,包括
1、 CPU产生异常;
2、 OS接管异常;
3、 判断异常来源,如果是内核异常,执行步骤4分支,如果是用户模式 异常,执行步骤9分支;
4、 分派异常,即调用负责分派内核态异常的KiDispatchException函数;
5、 搜索内核态的异常处理链表(Structured Exception Handling , SEH);
6、 是否搜索到该异常的处理例程,若是,执行步骤7,否则,执行步骤
8;
7、 运行异常处理例程,然后执行步骤14;
8、 篮屏;
9、 分派异常,即调用负责分派用户态异常的UserExceptionDispatch函数;
10、 搜索用户态的SEH;
11、 是否搜索到该异常的处理例程,若是,执行步骤12,否则,执行步 骤13;
12、 运行异常处理例程,然后执行步骤14;
13、 关闭应用程序,然后执行步骤14;
14、 返回OS。
可见,现有异常处理方法是首先按照内核态和用户态对异常进行区分, 继而釆用不同的方式处理。然而,上述处理方法存在一些不合理之处,比如, 对于内核态异常,会经常出现篮屏,造成数据的丟失,而且需要重启计算机, 给用户带来不便;对于用户态异常,当关闭应用程序时,也会同样造成数据 的丢失。

发明内容
有鉴于此,本发明提供一种处理CPU异常的方法,用以解决现有方案易 蓝屏和数据丢失的问题。
为此,本发明实施例釆用如下技术方案
一种处理CPU异常的方法,包括:在操作系统接管CPU异常之前,判断 该异常是否可以修复,若是,修复异常,否则,备份数据;在修复异常或备 份数据之后,返回到操作系统。
如果所述异常为软件异常,查找预置的异常处理例程,如果查到,则确 定该异常可以修复,否则确定该异常不可修复。
上述方法还包括对所述软件异常进一步判断是否为正常异常,若是, 直接返回操作系统。
如果所述异常为硬件异常,则确定该硬件异常不可以修复。
返回到操作系统之后,操作系统对所述硬件异常按照现有方式再进行处理。
除了所述操作系统外,还运行一个后台操作系统,该后台操作系统监控 操作系统与计算才;u更件的通信;所述修复异常和备份数据是通过所述后台操
作系统完成的。
通过以下步骤完成修复异常在所述操作系统与计算机硬件通信时,所 述后台操作系统存储一份内存数据;所述后台操作系统分析所述异常类型, 在预置的处理例程中查找该异常对应的处理例程;所述后台操:作系统运行所
述处理例程,获知修复异常所需要的内存数据,并所获知的内存数据发送给
所述操作系统;所述操作系统利用所接收的内存数据清除异常。
通过以下步骤完成备份数据在所述操作系统与计算机硬件通信时,所 述后台操作系统存储一份内存数据和用户数据;后台操作系统将存储的内存 数据和用户数据发送给所述操作系统。
一种处理CPU异常的系统,包括面向用户的才喿作系统,还包括后台操作 系统,该后台操作系统包括接口模块,负责后台操作系统与外部的通信, 其中包括在所述操作系统之前接管CPU异常;分析模块,用于分析异常是否 可修复;修复模块,当所述分析模块确定异常可修复时,负责对异常进行修 复;备份模块,当所述分析^f莫块确定异常不可修复时,负责对异常进行备份。 所述分析模块包括:第一判断单元,用于判断异常是否为硬件异常,若 是,确定异常不可修复,发出备份通知;第二判断单元,在所述第一判断单 元确定不是硬件异常时,用于判断该软件异常是否为正常异常,若是,直接 返回操作系统;第三判断单元,在所述第二判断单元确定不是正常异常时, 用于判断所述后台操作系统是否预置有该异常的处理例程,若存在,确定异 常不可修复,则发出修复通知,否则,确定异常可修复,发出备份通知;通 知单元,用于将所述备份通知发送给所述备份模块,将所述修复通知发送给
所述修复模块。
所述修复模块包括存储单元,用于存储所述操作系统与计算机硬件通 信时运行的内存数据;例程运行单元,在接收到修复通知后,用于运行所述 后台操作系统中预置的所述异常对应的处理例程,从而获知修复异常所需要 的内存数据,并通过所述接口模块发送给所述操作系统。
所述备份模块用于存储所述操作系统与计算才/U更件通信时运行的内存数 据和用户数据,并在接收到备份通知后,用于通过所述接口模块将内存数据 和用户数据发送给所述操作系统。
对于上述技术方案的技术效果分析如下
本发明在OS处理CPU异常之前,对异常进行全面分析,对可修复的异 常进行修复,对不可修复的异常进行备份,从而避免给用户带来蓝屏和丢失 数据的损失。 本发明涵盖了各种异常的处理情况,对于硬件异常,为了避免数据丟失, 及时进行数据备份,对于软件异常,则是进一步分析类型,对于可修复的进 行修复处理,对于不可修复的进行备份数据,对于正常异常,则直接返回到
os。应用本发明,能够减少蓝屏次数,而且能够在os崩溃之前,帮助用户 采取有效措施,避免数据丢失。


图1为现有技术处理CPU异常的流程图; 图2为现有技术处理CPU异常系统示意图; 图3为本发明处理CPU异常系统示意图; 图4为本发明处理CPU异常的流程图; 图5为本发明修复数据的流程图; 图6为本发明后台操作系统总体结构示意图; 图7为本发明后台操作系统详细结构示意图。
具体实施例方式
本发明重点改进在于,在OS处理CPU异常之前,对异常进行全面分析,
对可修复的异常进行修复,对不可修复的异常进行备份。
正如前面介绍,现有OS处理方案中,当出现CPU异常时,os直接进行 接管和处理,参见图2,为现有OS处理CPU异常的系统示意图。
而在本发明中,引入一个后台才喿作系统(后文称之为SOS),在os之前, 由SOS接管异常。参加图3,为本发明处理CPU异常的系统示意图,其中, SOS、 OS以及计算机硬件之间通过统一的管理接口 (Hypervisor)通信,该 Hypervisor负责监控系统所有底层硬件设备的通信操作,捕获CPU异常。SOS 提供所有后台服务操作,对用户是不可见的。由于OS和SOS彼此独立,当 出现影响OS正常运行的异常时,SOS还可正常运行,本发明正是利用这一特 点,通过SOS对异常进行修复或备份,概括而言,在OS接管CPU异常之前, SOS判断该异常是否可以修复,若是,修复异常,否则,备份数据;在SOS 修复异常或备份数据之后,返回到OS,从而避免蓝屏或数据的丟失。
参见图4,为本发明处理CPU异常的详细流程图。包括 步骤401: CPU出现异常;
步骤402: hypervisors捕获异常,并交付给SOS;
步骤403: SOS对异常进行分析,判断是否为硬件异常,若是,执行步骤 404分支,否则,执行步骤407分支;
其中,哪些异常属于硬件异常在现有技术中有统一判断标准,比如,总 线异常属于硬件异常,而除O显然不属于硬件异常,属于软件异常。
步骤404:备份数据;
步骤405:返回OS, OS对异常按照现有方案处理; OS对异常的处理参见背景技术及图1,不再赘述。 步骤406:分派异常,
步骤407:判断是否为正常异常,若是,执行,执行步骤412,否则,执 行步骤408;
本领域技术人员都了解,软件异常中有一部分是属于正常的,这类正常 异常类似于硬件中断功能,负责对某些事件的触发。例如,负点运算、除0 运算和内核服务历程调用等都属于系统可以处理的正常异常。
步骤408:搜索SOS预置的异常处理例程列表;
步骤409:是否搜索到,若是,执行步骤410,否则,执行步骤411;
步骤410:修复异常;
步骤411:备份数据;
步骤412:返回OS。
实际上,内核态异常包括硬件异常和软件异常,对于硬件的内核态异常, 现有方案只能蓝屏,容易造成内存数据和用户数据的丟失,对于软件的内核 态异常,很有可能由于没有处理例程也以蓝屏处理。而本发明中,对于硬件 异常,执行备份数据的操作,防止数据丢失;对于软件异常,则进一步区分 类型,对于能修复的,执行修复操作,对于不能修复的,执行备份操作,而 不是简单的蓝屏,从而保证系统正常运行和数据的安全性。
对于SOS完成的修复数据和备份数据的功能,是本发明中新引入的,下 面分别详细介绍。
如图3所示,SOS通过Hypervisor监控OS与计算机硬件的通信。 参见图5,为修复异常流程图。
步骤501:在OS与计算机硬件通信时,所述SOS存储一份OS运行的内 存数据;
步骤502: SOS分析所述异常类型,在预置的处理例程中查找该异常对应 的处理例程;
步骤503: SOS运行所述处理例程,获知修复异常所需要的内存数据,并 所获知的内存数据发送给OS;
步骤504: OS利用所接收的内存数据清除异常。
下面,以一个具体异常的修复过程来进一步描述。
假设Hypervisor捕获到KERNEL-DATA-INPAGE-ERROR异常,该异常 表现为无法从分页文件将内核数据所需的页面读取到内存中,通常是由于OS 在硬盘中的分页文件损坏造成的。
Hypervisor将捕获到的KERNEL-DATA-INPAGE-ERROR异常交接给SOS 后,SOS执行以下步骤实现修复异常
1、 SOS分析该异常类型,确定为可修复的软件类异常;
2、 调用KERNEL-DATA-INPAGE-ERROR异常对应的异常处理例程 KeDatalnpageErrHandler;
3 、 处理例程KeDataI叩ageErrHandler负责分析异常产生原因,通过对
址是数据在Pagefile中的文件偏移地址;
4、 查找SOS存储区中预置的Pagefile文件,从中读取出相应的数据, 并发送给OS;
5、 OS内存接收到数据后,填充CONTEXT结构和ExceptionRecord结 构中,消除异常标志,读取分页文件中的内核数据,继续进行后续 正常工作。
从图4中可知,对于硬件异常以及不可修复的软件异常,都需要作备份 处理。备份的数据包括两部分, 一部分是内存数据,另一部分是用户数据。
本发明提供的备份机制包括
1) 在OS与计算机硬件通信时,SOS存储一份OS运行的内存数据和用 户数据;
2) 当确定所述异常无法修复时,SOS将存储的内存数据和用户数据发送
给os。
本发明中,是通过sos在后台对异常进行分析和处理,不影响用户正常 操作,特别是对于可恢复的异常,sos在后台自行可以解决,用户甚至不知
道曾经出现过异常,而不会像现有方案那样经常出现蓝屏,影响用户的正常操作。
与上述方法相对应,本发明还^是供一种处理CPU异常的系统,参见图3。
如前已述,该系统与现有系统最大不同在于,在os接管异常之前,由sos 对异常进行修复或备份。
参见图6,为SOS内部结构示意图。SOS包括接口模块601、分析模块 602、修复模块603和备份模块604,下面分别介绍
接口模块601主要负责SO与外部的通信,也即与Hypervisor的通信,其 中包括在OS之前接管CPU异常;
分析模块602用于分析异常是否可修复;
修复模块603当所述分析模块602确定异常可修复时,负责对异常进行 修复;
备份模块604当所述分析模块602确定异常不可修复时,负责对异常进 行备份。
参见图7,为SOS各模块内部示意图。 其中,分析模块601包括
第一判断单元6011,用于判断异常是否为硬件异常,若是,确定异常不 可修复,发出^f分通知;
第二判断单元6012,在第一判断单元6011确定不是硬件异常时,用于判 断该软件异常是否为正常异常,若是,直接返回OS; 第三判断单元6013,在第二判断单元6012确定不是正常异常时,用于判 断SOS是否预置有该异常的处理例程,若存在,确定异常不可修复,则发出 修复通知,否则,确定异常可修复,发出备份通知;
通知单元6014,用于将备份通知发送给备份模块604,将所述修复通知 发送给修复模块603。
修复模块603包括
存储单元6031 ,用于存储OS与计算机硬件通信时运行的内存数据; 例程运行单元6032,在接收到修复通知后,用于运行SOS中预置的所述
异常对应的处理例程,从而获知修复异常所需要的内存数据,并通过所述接
口模块发送给OS。
备份模块604用于存储OS与计算机硬件通信时运行的内存数据和用户数 据,并在接收到备份通知后,用于通过接口模块601将内存数据和用户数据 发送给OS。
对于本发明提供的处理CPU异常的系统的一些具体细节,参见方法实施
例,在此不再赘述。
本发明涵盖了各种异常的处理情况,对于硬件异常,为了避免数据丢失, 及时进行数据备份,对于软件异常,则是进一步分析类型,对于可修复的进 行修复处理,对于不可修复的进行备份数据,对于正常异常,则直接返回到
os。应用本发明,能够在os崩溃之前,帮助用户采取有效措施,避免数据丢失。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普 通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润 饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种处理CPU异常的方法,其特征在于,包括在操作系统接管CPU异常之前,判断该异常是否可以修复,若是,修复异常,否则,备份数据;在修复异常或备份数据之后,返回到操作系统。
2、 根据权利要求l所述方法,其特征在于,如果所述异常为软件异常, 查找预置的异常处理例程,如果查到,则确定该异常可以》务复,否则确定该 异常不可修复。
3、 根据权利要求2所述方法,其特征在于,还包括对所述软件异常进 一步判断是否为正常异常,若是,直接返回操作系统。
4、 根据权利要求l所述方法,其特征在于,如果所述异常为硬件异常, 则确定该硬件异常不可以修复。
5、 根据权利要求4所述方法,其特征在于,返回到操作系统之后,操作 系统对所述硬件异常按照现有方式再进行处理。
6、 根据权利要求1至5任一项所述方法,其特征在于,除了所述操作系 统外,还运行一个后台才喿作系统,该后台操作系统监控4乘作系统与计算机硬 件的通信;所述修复异常和备份数据是通过所述后台操作系统完成的。
7、 根据权利要求6所述方法,其特征在于,通过以下步骤完成修复异常 在所述操作系统与计算机硬件通信时,所述后台操作系统存储一份内存数据;所述后台操作系统分析所述异常类型,在预置的处理例程中查找该异常 对应的处理例程;所述后台操作系统运行所述处理例程,获知修复异常所需要的内存数据, 并所获知的内存数据发送给所述操作系统;所述操作系统利用所接收的内存数据清除异常。
8、 根据权利要求6所述方法,其特征在于,通过以下步骤完成备份数据 在所述操作系统与计算机硬件通信时,所述后台操作系统存储一份内存数据和用户数据;后台操作系统将存储的内存数据和用户数据发送给所述操作系统。
9、 一种处理CPU异常的系统,包括面向用户的操作系统,其特征在于, 还包括后台操作系统,该后台操作系统包括接口模块,负责后台操作系统与外部的通信,其中包括在所述操作系统 之前接管CPU异常;分析模块,用于分析异常是否可修复;修复模块,当所述分析模块确定异常可修复时,负责对异常进行修复; 备份模块,当所述分析模块确定异常不可修复时,负责对异常进行备份。
10、 根据权利要求9所述系统,其特征在于,所述分析模块包括 第一判断单元,用于判断异常是否为硬件异常,若是,确定异常不可修复,发出备份通知;第二判断单元,在所述第一判断单元确定不是硬件异常时,用于判断该软件异常是否为正常异常,若是,直接返回操作系统;第三判断单元,在所述第二判断单元确定不是正常异常时,用于判断所 述后台操作系统是否预置有该异常的处理例程,若存在,确定异常不可修复, 则发出修复通知,否则,确定异常可修复,发出备份通知;通知单元,用于将所述备份通知发送给所述备份模块,将所述修复通知 发送给所述修复模块。
11、 根据权利要求9或IO所述系统,其特征在于,所述修复模块包括 存储单元,用于存储所述操作系统与计算机硬件通信时运行的内存数据; 例程运行单元,在接收到修复通知后,用于运行所述后台操作系统中预置的所述异常对应的处理例程,从而获知修复异常所需要的内存数据,并通 过所述接口模块发送给所述操作系统。
12、 根据权利要求9或IO所述系统,其特征在于,所述备份模块用于存 储所述操作系统与计算机硬件通信时运行的内存数据和用户数据,并在接收 到备份通知后,用于通过所述接口模块将内存数据和用户数据发送给所述操 作系统。
全文摘要
本发明公开了一种处理CPU异常的方法,包括以下步骤在操作系统接管CPU异常之前,判断该异常是否可以修复,若是,修复异常,否则,备份数据;在修复异常或备份数据之后,返回到操作系统。本发明在OS处理CPU异常之前,对异常进行全面分析,对可修复的异常进行修复,对不可修复的异常进行备份,从而避免给用户带来蓝屏和丢失数据的损失。与上述方法相对应,本发明还提供一种处理CPU异常的系统。
文档编号G06F11/36GK101373450SQ20071012057
公开日2009年2月25日 申请日期2007年8月21日 优先权日2007年8月21日
发明者凯 王, 军 陈 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1