本帖最后由 JillPal 于 2012-8-13 09:09 编辑
“蓝屏”、或“系统崩溃”,外国人又叫它BSOD(Blue Screen of Death)。从专业的角度讲,这一术语被定义为“是指当Microsoft Windows崩溃或停止执行(由于灾难性的错误或者内部条件阻止系统继续运行下去)时所显示的蓝色屏幕”。而我们平常所说的“系统崩溃(system crash)”或者“内核错误(kernel error)”抑或“停止错误(Stop error)”的专业术语为“程序错误检查(Bug Check)”。当系统检测到引发崩溃的致命错误时,Windows自己执行崩溃函数“KeBugCheckEx”。该函数接受一个停止代码(STOP Code,也称为错误检查码“Bug Check Code”),以及四个根据停止代码来解释的参数(下文中会有图例)。在调用KeBugCheckEx之后,首先该系统所有处理器上的所有中断将被屏蔽,然后系统将显示器切换到低分辨率的VGA图形模式(因为这是所有Windows平台显卡均支持的通用模式),绘制一个蓝色背景,然后显示此停止代码,并且后面紧跟一些对用户诊断错误有帮助的关键信息。最后,KeBugCheckEx调用所有已注册的设备驱动程序错误检查回调函数(这种回调函数通过调用KeRegisterBugCheckCallback函数来注册),从而让这些驱动程序停止运行它们所支配的设备(有系统数据结构已经被破坏得太严重以至于蓝屏都显示不出来的可能性)。[截取自百度百科]
上图就是视窗操作系统的基础架构,一般软件的运行被严格限制在用户层内,即使它有访问硬件设备的功能也要借助硬件的驱动才可以,如果应用程序存在问题直接访问不该使用的内存或者硬件,系统内核层的管理系统就会检测到这个错误并拦截,如果错误比较严重影响到内核层并难以自动恢复的时候,Windows就会停止系统运行并按照如上所述进一步切换到蓝屏.费尔的拦截蓝屏大概就是基于上述功能,即通过调用KeBugCheckEx这一函数来达到防止蓝屏出现,保证用户保存工作的效果.
当病毒破坏,仅仅拦截KeBugCheckEx防止是不够的,必须同时拦截病毒的破坏才可能防止系统进一步损坏,这个时候如果费尔能同时拦截病毒的破坏,个人觉得蓝屏防护功能依然有起作用的合理性.如下图:
如果此时无法拦截病毒或是其它硬件或驱动的问题,蓝屏的作用就是提醒用户赶紧中断电脑的运行并进行进行检查,此时继续拦截蓝屏并不能对系统起到保护作用.
根据上面的分析我个人觉得,费尔的蓝屏拦截功能还是有其存在的合理性的,即它拦截的应该都是可以控制的蓝屏,同时我们也应该注意到,很多蓝屏并不能依靠拦截来解决,而且它们也很可能无法被拦截,所以MJ建议的要分析蓝屏原因并找到解决方法的观点是更有效的措施.
PS:虽然我个人对费尔的蓝屏保护持肯定态度,但现代操作系统毕竟越来越安全可靠.比如WinVista/Win7比WinXP/Win2K的内存管理更加先进就是很好的体现,所以我也建议费尔的官人在日后更新版本的改良中能谨慎对待蓝屏保护及相关功能,以使用户获得他们需要的更加安全舒适的体验.
这篇文章是我的匆忙之作,水平所限一定存在不少错误,希望能抛砖引玉得到大家的批评指点.
|