怎样处理硬件故障引起的GP错误 何宗琦 1997-01-01   在使用Windows的过程中,最常见的错误就是GP错误(General Protection Fault),意思是“一般性保护错误”。Windows是多任务系统,内存中允许有多个程序共存。各程序只能在分配给自己的内存区域内运行,并且受到系统的保护,这就是所谓的保护方式。如果一个应用程序试图读写不属于自己的内存区域时,就会发生GP错误。   从定义上来说,GP错误是由非法访问存储器造成的。因此,一般认为GP错误都是由于软件的原因所造成。的确,当有多个程序驻留内存时,一个应用程序有可能对那些已经分配给其它程序的内存区域进行读写,因此造成GP错误。例如:系统程序或应用程序安装不正确、选择了不合适的设备驱动程序、运行了与系统不兼容的TSR(内存驻留程序)程序等都可能引起GP错误的发生。   此外,系统资源不足也是造成GP错误的重要原因。例如:临时文件空间(TEMP子目录)太小、允许打开文件的数量太少等也容易引起GP错误的发生。一般说来,打开程序管理器中“帮助”菜单的“关于程序管理器”选项,如果系统资源<25%,则应减少活动的窗口或应用程序。   除了软件的原因外,一些由于硬件原因引起的故障,也会给出GP错误的提示。尽管GP错误就其定义来说与硬件出错关系不大(资源不足引起的GP错误暂不归入硬件故障),但是,的确有一些是由于硬件引起的故障,给出了GP错误的提示。下面举两例说明。   一台Pentium100微机,在DOS环境下工作正常,而在Windows 3.2环境下执行Word或其它应用程序却频繁出现GP错误后死机。重新安装Windows系统和Word等应用软件均无济于事。反复调整系统配置文件Config.sys仍然不能排除故障。经仔细观察,该机的GP错误总是发生在读写硬盘的时候。原来该机为了防止C盘染上病毒,安装了硬盘保护卡,成为读写硬盘的瓶颈。找到原因后,试调整CMOS参数,把Block Mode(块模式)均设为OFF,把PIO模式改设为2(原为4),问题得以解决。这说明在高档机器上由于速度很快,一旦由于某些原因造成速度上的失配,使得读数据出错,系统也将按照GP错误处理。   另一台Pentium133多媒体机,16MB内存、1.2GB硬盘。在DOS下工作正常,在Windows 3.2和Windows 95环境下,播放CD和VCD也没有任何问题,但是无论在Windows 3.2、中文之星2.0、Word 6.0下还是在Windows 95、中文之星2.5、Word 7.0下打字则频繁出现GP错误,有时死机,而有时又能退回Windows或者退回DOS。由于该机装有声卡,开始怀疑声卡驱动程序、显示驱动程序、Windows系统、中文之星、Word之间有冲突。反复检查并且多次重新安装系统、各个驱动程序和应用程序,问题仍然未能解决。鉴于该机在DOS下正常工作,并能播放VCD和CD,估计主板上的主要部分无问题,故怀疑内存条性能不良。经检查该内存条虽为EDO内存,但是质量不高,存取速度较低。重新设置内存的读写周期,把自动设置改为手动设置,增加读写等待状态,增加延时的时间,问题得以解决。这说明内存条速度响应不够时,影响了读写的正常进行,也将产生GP错误。   如何判别GP错误是由硬件还是由软件产生的呢?建议从以下几点来分析:   ·由软件产生的GP错误,一般可以通过清除内存驻留程序,减少活动窗口,调整配置程序或重新安装系统和应用程序来解决。而由硬件引起的GP错误,用以上方法不能解决。   ·由硬件引起的GP错误在使用任何大型软件时都会发生,而且发生得比较频繁。而由软件产生的GP错误不一定在每个应用程序的使用中都会发生。   ·软件产生GP错误后,一般可以退回到操作系统。而硬件产生GP错误后,经常死机,必须重新启动系统。   ·有些硬件引起的GP错误有一定的规律。例如由于硬盘或者读写通道故障出现的GP错误都发生在读写硬盘的过程中,这有助于诊断故障的原因。   为了分析GP错误的原因,可以借助于Windows中的一个实用程序Drwatson,它位于Windows子目录下,文件名是Drwatson.exe。如果在发生GP错误时,Dr Watson已在运行,那么这个程序将尽可能多的搜集系统发生GP错误时的系统状态信息,并把这些信息登录到一个名为Drwatson.log的文件中供进一步分析使用。   当然,对于GP错误最好是防患于未然,一般说来可以采取以下措施:   ·保证CMOS参数设置正确。应按实际的硬件配置、硬件参数去设置。如果自动设置方式效果不好,应在手动方式下逐步试验,取得正确的设置值。   ·尽可能多配置一些内存。在8M内存以上时,GP错误可明显减少。   ·系统安装时,应保证设备的驱动程序与实际设备一致。   ·保证TEMP子目录所在的硬盘有足够使用空间。因为很多Windows的应用程序在遇到“磁盘满”情况时,没有考虑处理办法,如果TEMP子目录所在的硬盘空间不足,该应用程序只能崩溃。   ·在运行大的应用程序时,应保证有足够的系统资源。资源不足也是造成非法访存的原因之一,从而导致GP错误。   ·为了保证大型应用程序有足够多的可用文件句柄数,以便能够打开足够多的文件,应设置Config.sys文件中的File值为60以上。并建议增加以下命令行:   FILE=60   STACKES=9,256   SHELL=C:\DOS\COMMANDCOM /E:2048 /P   ·Windows系统文件最好是用安装盘进行安装,不要用拷贝的办法安装。   最后应该说明的是,不同微机系统配置的硬件、软件都有很大的差别,引起GP错误的原因也就十分复杂。在具体处理时,应该按具体情况仔细分析,才能找到合理的解决方案。