致命异常错误0E产生的原因

Author: 王琰 Date: 1998年 第21期 34版

#1  湖北大狼、浙江陈宏宇、陕西曹炳铖等众多读者问:最近我们的Windows 95系统老出现致命异常错误0E,致使IE4.0或其它软件无法安装或正常运行,请问是何原因,该如何处理?
  答:上面的问题是由多封读者来信综合而成的,鉴于提出类似问题的读者太多,而产生该类问题的原因很多并且相当复杂,笔者在此做一个综述,分析可能的原因及相应的对策,供大家参考。
  Windows 95是32位抢先式多任务操作系统,它充分利用80386以上CPU所具有的保护模式功能,为每个WIN32应用程序提供独立的4GB地址空间。因为普通微机的RAM实际上远远小于4GB,Windows 95利用CPU的分页功能来管理内存,虽然地址空间有4GB,但其中多数页面并未分配有物理内存。Windows 95还使用硬盘交换文件来为应用程序提供虚拟内存,当应用程序存取当前不在RAM中而在交换文件中的数据时,CPU就会产生异常0E,也称为页面异常,Windows 95的内存管理程序捕获到该异常后,会把数据从交换文件中读到RAM中,然后继续执行产生异常的指令。由此可见,异常0E在Windows 95的内存管理过程中起到十分重要的作用。但是,如果应用程序存取数据的地址或者将要跳转到的地址根本就没有分配RAM或虚拟内存的话,也即页面无效,Windows 95就知道该程序出现问题了,并提醒用户将之中止。通常当核心驱动程序出现无法处理的异常0E后,Windows 95会在蓝底白字的字符模式下发出警告,而应用程序出现该问题,Windows 95也会在一个窗口中发出警告。另外一个常见的致命异常错误号为0D,也称为普通保护错误,通常是程序执行了一条非法或无效指令而引起的。
  能够引起无效页面异常的原因非常多:1.操作不当。例如开启应用程序太多,系统资源消耗过多,这种情况下偶然会出现异常0E,但重启系统就正常了。2.系统设置冲突。Windows 95中部分参数的设置会影响应用程序的性能,例如显示属性中的字体设置成自定义大小,少数应用程序就可能产生异常0E。另外,中断、DMA或端口出现冲突的话,可能致使少数驱动程序产生异常0E或0D,甚至无法启动Windows 95。3.软件质量不过关。部分程序在编制时没有严格检查对象或内存分配是否成功,在特殊的运行条件下就会频频出错。质量差的盗版软件也容易引起错误。4.版本冲突。多数应用程序都要调用特定版本的动态链接库或者OLE组件,如果在安装某个软件时,老版本的DLL覆盖了同名的但版本较新的DLL,那么使用新版本DLL的软件就可能发出无效的功能调用,从而引起错误。5.注册表出现错误。注册表中保存有Windows 95及应用程序的重要数据,注册表中的错误很容易引发其它问题,包括异常0E和0D。6.软硬件不兼容。某些需要直接控制硬件的软件在编制时考虑不周,只能适用于特殊型号或某一类硬件,遇到其它型号的硬件就会出错。另外,驱动程序与硬件的型号不匹配也属于此种情况。7.硬件质量差或存在故障。少数不法商人在给顾客组装兼容机时使用质量和兼容性差的主板、插卡、内存条,有的甚至出售冒牌主板和Remark过的CPU,这样的机器在运行Windows 95时往往很不稳定,不时会出现各种各样的问题。
  从上面我们可以看出,异常错误0E和0D产生的原因多种多样,解决起来也就比较困难,总的来说,不用担心偶尔出现的错误,如果错误频繁出现,那么首先试着调整Windows 95的各项设置,无效的话再重装应用软件,直至重装Windows 95系统本身,如果重装Windows 95仍然频繁出现错误,那么应怀疑硬件有问题了,条件允许的话,可用替换法和排除法来确定问题所在。