揭秘:你的Windows7系统为什么会崩溃
分类:windows7教程 发布时间:2015-01-15 20:42:10
本文由windows之家提供
一切都很完美;你已升级到了Windows 7系统。系统打上了全部的补丁,所有驱动程序都更新了,安全很到位,说不定你甚至还有新硬件……可是同样的蓝屏死机(BSOD)还是在新的高清屏幕上奚落你。
好消息是,你在大多数情况下可以迅速解决这个问题,只要使用Windows调试工具。这个工具简单又免费。
针对不一样的Windows版本,解决崩溃的方法是否也不一样?
微软公司的主要开发负责人Andre Vachon表示,解决系统崩溃的同一种方法适用于许多的Windows版本。“微软Windows的最新版本使用同样的操作系统内核,同样的主界面,驱动程序在服务器和客户机上工作,调试器使用同样的调试文件。此外,我们都使用同样的代码库和源代码树来编译32 版本和64位版本。”
考虑到这一点,为了简单起见,我会以Windows 7为例。然而,这些要点不仅适用于其他当前的版本,大部分还适用于像Windows 2000这么久远的老版本。
Windows 7为什么会崩溃?
Windows在不断成熟,随之变得更稳定。而且,在这款操作系统从16位变成32位,再变成现在64位的过程中,功能特性也变得更丰富,占用的资源也要多得多——它实际上更难崩溃。
尽管如此,它的确会崩溃。然而,这类系统故障的原因自XP时代以来就没有发生化变化。
Windows采用了一种保护机制,让多个应用程序可以同时运行,又不会互相干扰。这种机制名为用户模式(User Mode)或内核模式(Kernel Mode),最初名叫环保护(Ring Protection)方案。
内核模式
内核模式(环0)软件可以不受限制地全面访问硬件。这种模式下运行的软件通常最值得信赖,因为它可以执行任何指令,访问系统中的任何地址。内核模式下的崩溃是彻底的系统故障,需要重新启动。你在这里可以找到操作系统的内核代码和大多数驱动程序。
用户模式
用户模式(环3)软件无法直接访问硬件,也无法随意访问任何地址。它必须通过调用应用编程接口(API),来传送指令(可能更准确的说法是请求)。这项特性能够保护系统的整体运行,不管应用程序是进行错误的调用,还是访问不合适的地址。用户模式下的崩溃通常是可以恢复的,需要重新启动应用程序,但不需要重新启动整个系统。你在这里可以找到在电脑上运行的大多数代码,包括Word、单人纸牌戏和一些驱动程序等。
由于如今大多数软件在用户模式下运行,应用程序破坏系统级软件,以及破坏其他应用程序的机会完全变少了。可是,并不保护内核模式软件不受其他内核模式软件的影响。比如说,如果某个视频驱动程序错误地访问了分配给另一个程序的某部分内存(或者没有标为驱动程序可以访问的内存),Windows就会终止整个系统。这种机制叫作错误检查(Bug Check),众所周知的蓝屏死机就会显示。
透过数字看崩溃原因
虽说数字不一样,但相差不大。如果汇总几个来源报告的数据(包括本人自己20年来在预防和解决崩溃方面的经验数据),一个趋势浮出水面:大约70%的 Windows系统崩溃是由内核模式下运行的第三方驱动程序引起的;15%是由未知因素引起的;10%是由有缺陷的硬件(其中一半多归咎于不良内存)引起的,只有约5%是由有缺陷的微软代码引起的。
并不广为人知的重要一点是,大多数崩溃是重复性崩溃。之所以这样,是因为大多数管理员都无法立即解决系统崩溃。因而遗憾的是,那些崩溃往往一再发生。这些事件在得到解决之前,多半会在几星期内、许多情况下会在几个月内重复发生。当崩溃首次出现时,如果使用我在下一篇文章中介绍的方法来解决,就能防止崩溃以后多次出现。