为什么Windows会蓝屏(Blue Screen Of Death)?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

Mar 25.2013

 

 

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

 

 
使用电脑,不可避免会遇到蓝屏,遇见,是一种不幸,也是一种不祥的预兆。

一般对于电脑使用者,只能重新启动电脑,可能会导致数据丢失。

那什么是蓝屏?为什么Windows会蓝屏?蓝屏的来龙去脉是什么?

整理笔记,细心学习,才发现,细看蓝屏,没那么简单……

简单地认识地蓝屏,仅仅是皮毛,扩充点知识而已——

 

 

 什么叫蓝屏?

 
When Microsoft Windows encounters a condition that compromises safe system operation,the system halts.This condition is called a bug check.It is also commonly referred to as a system crash,a kernel error,or a Stop error.                                                                                                                                 ——DDK

 
Windows操作系统的终极错误报告方式,俗称:BSODBlue Screen Of Death),对普通用户来说,只能重新启动电脑,可能有数据丢失。

 
 为什么Windows会蓝屏?

OS(Operate System) 检测到违反系统规则的行为或者危及系统安全的情况

系统有哪些规则

1)保护规则——CPU的保护模式

低特权级的代码不可以直接执行和访问高特权级的代码和数据。

2)异常处理规则

3SDKDDK中定义的操作系统规则

 
 蓝屏的哲学

继续运行可能导致更严重后果

让系统以可控的方式停止运行

在事故的第一现场停止,便于发现问题

蓝屏是操作系统的积极

减少蓝屏机会(提高内核代码质量,加强测试,WHQL测试)

其它操作系统也有类似的机制,如Linux的Panic,也叫Oops

 

 导致蓝屏的常见原因

劣质的驱动程序、软件

硬件错误

病毒

内核代码中残留的BUG

宇宙射线(Cosmic rays)

 

 蓝屏的来龙去脉

蓝屏的过程

1.收集信息和准备参数

处理器状态信息,蓝屏参数,错误模块

2,如果有内核调试器,则中断到调试器

3,关闭中断

4,将当前CPUIRQL设置为HIGH_LEVEL

5,如果是多CPU系统,冻结其它CPU6

6,绘制蓝屏

7,调用注册的Bug Check回调函数

8,如果没有启用内核调试,则调用KdInitSystem初始化内核调试引擎

9,调用loWriteCrashDump处理内核转储(dump

10,如果需要自动重启,则自动重启

11KiBugCheckDebugBreak

 

蓝屏的成因比较复杂,可能是系统漏洞,病毒造成的,也可能是硬件的匹配,兼容性,软、硬件的冲突,以及Ghost系统与电脑的适应性,都能造成蓝屏,如经常蓝屏,建议考虑使用纯净版的操作系统光盘,必要时重新分区格式化重装系统,如还经常出现蓝屏,则需要考虑检查硬件本身的问题,或者兼容性问题了。