蓝屏原因解读

转载 2009年03月07日 21:53:00

刚才看论坛里有人问蓝屏的问题,稍微搜索了一下,发现两篇文章还不错.转一下

 

-------------------------------------------华丽的分割线1----------------------------------------------------------

 

基于NT架构的Windows 2000/XP系统稳定性已经大大增强,甚至Windows XP号称“从不死机”,但我们仍然会不时看到如图1所示的蓝色警报信息,这就是通常所说的“蓝屏”,究竟是怎么回事呢?  



  一、Windows 2000/XP爆发蓝色警报的原因 

  Windows 2000/XP采用了分层结构,它的两个层又称模式,分别为用户模式(User Mode)和内核模式(Kernel Mode),应用程序是无法直接访问硬件设备的,只有借助驱动程序才能直接访问。   

  不过,即使NT架构再稳定,由于会由于某些原因,例如硬件冲突、硬件产生问题、注册表错误、虚拟内存不足、动态链接库文件丢失、资源耗尽等,此时可能会导致驱动程序或应用程序出现错误,严重时甚至会波及内核层。这种情况下,Windows会中止系统运行,并启动名为KeBugCheck的功能,通过检查所有中断的处理进程,并同预设的停止代码和参数比较后,屏幕将变为蓝色,并显示相应的错误信息和故障提示,由于出现这种现象时实际上就意味着死机,因此常称为“Blue Screen of Death”(BSOD),又称“STOP信息”或“停止信息”。   

  二、认识蓝色警报中隐藏的信息 

  Windows 2000/XP的BSOD窗口与Windows NT4以前的BOSD窗口有着很大的区别,最大的区别是NT的BSOD窗口仅包括一个通用的停止消息代码,但Windows 2000/XP的BSOD包含了停止消息和硬件消息两种类型,前者是发现一个无法恢复的软件错误时产生的错误信息,后者是发现一个严重的硬件错误时产生的错误信息。   

  虽然图1窗口中的信息看起来很复杂,但一般均由以下三部分组成:   

  1.错误信息 

  在“*** Stop:”至“****** wdmaud.sys”之间的这段内容是所谓的错误信息,由出错代码、自定义参数、错误符号等三部分组成,各部分的含义如下:   

  出错代码:STOP后面的16进制数字;   

  自定义参数:出错代码字符的组成,由程序人员定义,一般用户很难理解;    

  错误符号:KMODE_EXCEPTION_NOT_HANDLED 

  在错误符号后面,这里还显示了一个内存位置和文件名,可以了解到发生错误时的内存位置和源文件。对我们来说,其实最有用的还是前面的出错代码信息,在搜索微软知识库时将会用到。   

  2.推荐操作   

  这里显示了系统推荐用户采取的操作措施和步骤,例如在安全模式下卸载程序、回滚驱动程序、更新BIOS、安装补丁等,不过大部分情况下都需要重新启动系统后才能考虑进一步的操作。    

   3.调试端口信息   

  这里会显示应该如何设置内核调试器的信息,包括内存转储映像是否已写入磁盘、使用什么端口来完成这次调试。   

  其实,根据笔者的经验,蓝色警报中除了出错代码比较有用外,对普通用户来说,其余的大部分信息并无多少实际意义,仅供参考而已。   

  为调试系统的需要,Windows在系统出现BSOP错误后,KeBugCheck会自动生成一个名为Memory.dmp的侦错文件,该文件位于C:WindowsMinidump文件夹下,默认设置下,该文件的大小与系统物理内存容量一致,我们可以将该文件压缩后发送给微软的技术支持部门,以获取相应的解决方案,但该文件的容量是如此巨大,如何发送是一个大问题,因此很少有用户真正这样做。 

  提示:打开“系统属性→高级→启动和故障恢复”窗口,如图2所示,在这里可以看到“写入调试信息”的生成方式:小内存转储、核心内存转储、完全内存转储、无,基于上面的分析的原因,建议在这里选择“无”。  

  

三、处理蓝色警报三部曲 

  虽然Windows 2000/XP的蓝色警报窗口显示的信息可能各有不同,或者是硬件原因,或者是驱动程序与系统兼容性方面的问题,或者索性是应用程序的某些Bug。首先当然是排除病毒的原因,然后我们可以按照如下步骤进行处理:   

  第1步:重启系统 

  出现蓝色警报窗口时,我们首先应该考虑的是重新启动系统,大部分情况下重启系统后即可解决问题。不过,一般此时已无法通过“Ctrl+Alt+Del”热启动,而只能按下复位按钮冷启动,或者索性断电后重新开机。    

  


  进入系统时,从“控制面板→管理工具→事件查看器”,或者在“开始→运行”框中键入“eventvwr.msc”命令进入事件查看器界面,如图3所示,在这里根据日期和时间重点检查“系统”和“应用程序”中的类型标志为“错误”的事件,例如图4报告某个服务启动失败的错误。      

  第2步:恢复至最后一次正确的配置  

  Windows 2000/XP出现蓝色警报并不是无缘无故而来,NT架构的操作系统也不会乱发脾气,一般都是由于更新了设备驱动程序或者安装了某些软件而造成,有时甚至是用户自行优化系统或删除了某些重要的系统文件所导致,此时可以重启系统,并快速按下F8键,选择“最后一次正确配置”,这样会恢复注册表中HKEY_LOCAL_MACHINESystemCurrentControlSet项的有效注册表信息,但无法解决驱动程序或文件损坏而导致的错误。   

  或者,你也可以尝试按下F8键选择启动至安全模式,如果能够正常进入安全模式,那么说明可能是驱动程序或系统服务的问题。   

  第3步:查询出错代码 

  记下图1窗口中的英文信息,特别是“0x0000001E”这段出错代码,然后从另外一台计算机上访问http://support.microsoft.com站点,在左上角的“搜索(知识库)”框中键入“stop ***”,这里的“***”表示出错代码,为阅读的便利,一般当然是选择“中文知识库”,不过很多时候我们恐怕只能在“英文知识库”才能找到答案,或者也可以在Google或百度上进行搜索。   

  如果以上几招还是无法解决问题,也许我们应该考虑是否属于硬件方面的问题,Windows XP可以访问http://support.microsoft.com/default.aspx?scid=kb;zh-cn;314062查看硬件兼容列表(HCL),Windows 2000用户可以访问http://winqual.microsoft.com/download/display.asp?FileName=hcl/Win2000HCL.txt查看硬件兼容列表,然后可以考虑重新插拔内存、显卡、网卡,或者用替换法尝试逐个更换,比较常见的是内存问题或电源问题,如果这一招还不行的话,恐怕就只能考虑重新安装系统或格式化硬盘了。 
--------------------------------------------------华丽的分割线2--------------------------------------------------

蓝屏对Windows用户来说,根本就是“灾难”的代名词,尽管Windows 2000/XP比前辈们稳定得多,但有时仍然得屈服于有问题的第三方软件、外围设备的驱动程序、微软的BUG,用蓝色屏幕来宣告自己的崩溃和死机。
大多数用户,甚至是一些高手都不知道蓝屏中提供的信息的含义,如果你幸运,只要重启一下电脑可能一切都恢复正常了,如果你不幸运,那么可能每次启动或进行某个特定操作时(比如:插入新的软盘)就会再次遭遇蓝屏。

要知蓝屏背后事 NT架构必知晓

1.NT基础架构
如果要理解蓝屏,最好首先对NT基础架构有些了解。NT内核的操作系统(Windows 2000/XP)采用的是分层结构,它的两个层又称作模式,分别为:用户模式(User Mode)和内核模式(Kernal Mode)。
为了便于理解,我们可以打个形象的比喻,整个电脑(包括系统、软件和硬件)被NT架构组成了一个有机的社会,用户层是实现各种功能的平台,各种应用程序在这里运行,而电脑硬件就像一个动力和资源库,应用程序必须要从那里取得实现不同功能的资源,但如果没有严格管理,谁都能直接访问和控制硬件,那么肯定会出现混乱,而内核层就担当起了守护、分配硬件资源的职责,在用户层与硬件之间进行隔离,达到保护硬件的目的。它运行的是管理硬件的NT Executive部件。这样,整个电脑才有机、高效地运转起来。
也就是说,内核层具有高特许级别的处理模式,能直接访问所有硬件和内存,而用户层则是相对较低权限的模式,不能直接访问硬件和有限地访问内存,这也正是某些具有直接硬件访问操作的Windows 3.1和DOS的应用程序(比如:某些游戏程序)无法在Windows 2000/XP上运行的原因。
名词解释
NT Executive部件
它是对运行在内核模式下的一些操作系统子系统和部件的统称。主要作用是控制一组基本的操作系统功能,包括:进程和线程管理、输入/输出管理、安全管理、内存管理等。比如:虚拟内存管理器、进程管理器、对象管理器、本地进程调用工具等。

2.应用程序要在盒子里面运行
为了让程序规规矩矩地在用户层运行,只做它该做的事,而不去擅自使用不该它用的硬件和资源,Windows在程序运行时会为它创建一个被严格限制的运行盒子,以实现以下限制:
★内存(物理内存和虚拟内存)该怎么用,以什么方式用。
小提示
Windows对虚拟内存进行了分开管理,低端部分会专门用于应用程序,而高端部分则完全保留给内核层的NT Executive部件,所以应用程序也是被严格禁止访问内核层的虚拟内存的。

★限制程序直接访问硬件设备,尽管有些应用程序本身能够直接访问硬件设备,但Window绝对不允许它这样做,如果要访问,那么只有借助硬件的驱动程序才行。

3.跳出盒子会怎么样?
如果应用程序不听话,跳出盒子并越界直接使用不该它使用的内存或直接访问硬件,一般情况下,Windows内核层的处理管理器或虚拟内存管理器便会发现该程序做了违法的事,并通知我们熟悉的Dr. Watson,让它弹出提示窗口,并终止那个程序的运行。不过,这一般不会影响我们继续使用Windows。

4.蓝屏:如果内核层也出了问题!
虽然NT架构设计比较合理,但它并不完善,应用程序出错还好办,可怕的是,应用程序、驱动程序等严重出错,导致内核层也会出现问题,并且时有严重到不能自动恢复的情况,在这种情况下,为防止因内核层出错,导致硬件资源失控,Windows就会停止系统运行,并启用名为KeBugCheck的功能,它通过检查所有中断的处理进程,并同预设的停止代码和参数比较后,就会切换显示为著名的蓝屏,其中就包括了对应的停止码和相关信息。因此这条信息意味着死机,所以被称为“致命的蓝色屏幕”(Blue Screen of Death,简写为BSOD),同时由于这条信息中都会包含有“STOP”字样,所以专家们叫它“STOP信息”或“停止信息”。

形象比喻解读蓝屏

为了便于大家理解,首先在这里对原来讲解过的知识进行一下复习。
NT内核的操作系统采用的是分层管理结构(层又称为模式),主要有用户层(User Mode)和内核层(Kernel Mode),我们可以下面这个形象的比喻。
汽车制造厂:整个电脑(包括操作系统、硬件和软件)
厂领导:内核层
生产小组:用户层(软件、驱动程序)
汽车装配零件:电脑硬件
值班员:Dr.Watson
保卫科:KeBugCheck
平时汽车制造厂运行得有序而高效,每个生产小组加班加点制造各种性能的汽车,但工厂里有个极为严格的规定,那就是不管要用什么装配零件,都必须经过直接控制所有零件的厂领导(具有高特许级别,可以直接访问所有硬件和内存)的批准,之后才能到仓库中提取相应零件,而生产小组只负责生产(只拥有较低权限,不能直接访问硬件和有限地利用内存)。
有一天,A生产小组没有经过厂领导批准,偷偷跑到仓库里面想拿一个装配零件,但马上就被年年被评为先进的值班员Dr.Watson发现了,于是Dr.Watson立即通知厂领导,这个生产小组的工作马上被停止,而且还在厂宣传栏贴出一个告示:XXX生产小组出现了错误,厂领导决定马上将其关闭、整顿,并会记录在案,以观后效。
但A生产小组的错误似乎没有引起大家的注意,一天,D生产小组居然闯进仓库哄抢装配零件,为了防止零件资源失控,产生更严重的混乱,厂领导立即决定停止整个工厂的工作,并命令保卫科对所有生产小组进行全面检查,保卫科在检查后为厂领导提交了一份用蓝色纸写的报告(也就是著名的蓝屏信息),这个报告主要分为三部分:
1.故障检查信息
***STOP 0×0000001E(0×c0000005, 0×FDE38AF9, 0×00000001, 0×7E8B0EB4)
KMODE_EXCEPTION_NOT_HANDLED ***
其中错误的第一部分是停机码(Stop Code)也就是0×0000001E(也可以缩写为0×1E),用于识别已发生错误的类型。错误第二部分是被括号括起来的四个数字集,表示随机的开发人员定义的参数(这个参数对于普通用户根本无法理解,只有驱动程序编写者或微软操作系统的开发人员才懂)。第三部分是错误名。信息第一行通常用来识别产生错误的驱动程序或设备。这种信息多数很简洁,但停机码可以作为搜索项在微软知识库和其他技术资料上使用。
2.推荐操作
蓝屏第二部分是推荐用户进行的操作信息。有时,推荐的操作仅仅是一般性建议(比如:到销售商网站查找BIOS的更新等);有时,也就是显示一条与当前问题相关提示。一般来说,唯一的建议就是重启电脑。有时,这些蓝屏似乎是随机的,无规则地被那些难得再现的瞬间不兼容性触发。
3.调试端口信息
告诉用户内存转储映像是否写到磁盘上了,使用内存转储映像可以确实发生的问题性质,还会告诉用户调试信息是否被传到另一台电脑上,以及使用什么端口完成这次通讯。不过,这里的信息对于我们普通用户来说,没有什么意义。
有时候保卫科可以顺利查到是哪个生产小组的问题,会在第一部分明确报告是哪个文件犯的错,但常常它也只能查个大概范围,而无法明确指出问题所在。由于工厂全面被迫停止,只有重新整顿开工,有时,那个生产小组会意识到错误,不再重犯。但有时仍然会试图哄抢零件,于是厂领导不能不重复停工决定(不能启动并显示蓝屏信息,或在进行相同操作时再次出现蓝屏)

 

这是两篇分析的文章,个人觉得写得还不错.

不过从我的经验来看,大部分蓝屏都跟系统文件被删(主要是硬件驱动之类的)或者装了不兼容的驱动等有关

优化软件尤其会造成这种情况.

 

 

相关文章推荐

典型的蓝屏故障的原因和解决办法。

典型的蓝屏故障的原因和解决办法。 一、0X0000000A 这个蓝屏代码和硬件无关,是驱动和软件有冲突造成的,最早发现这个代码是因为公司的DELL机器的USB键盘和QQ2007的键盘加密程序有冲突发现...
  • Lg632
  • Lg632
  • 2016-07-04 14:20
  • 139

Windows 7 蓝屏原因

Windows 7 蓝屏 Microsoft (R) Windows Debugger Version 6.11.0001.404 X86 Copyright (c) Microsoft Corp...

电脑蓝屏原因分析

  • 2014-11-18 17:09
  • 15KB
  • 下载

电脑蓝屏的原因

  • 2013-09-17 09:41
  • 34KB
  • 下载

【浅谈系统蓝屏崩溃的原因及如何解决】

如果要说最让用户困扰的问题之一那应该就是蓝屏了,同样的对于蓝屏,也是困扰windows的一大杀手。蓝屏一来基本让你的爱机数据不保、瞬间瘫痪。   回首windows蓝屏之路,微软数代产品更新,还是没...

windbg 快速找出蓝屏原因

  • 2012-02-12 11:50
  • 16.99MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)