只要是使用过Windows95或Windows98的用户,我估计没有遇到过一般性保护错(GPF)的人几乎没有,
Windows是怎样死掉的
。当一个程序试图访问其内存地址空间之外的内存时,就会引发这种错误,每当发生这种错误,系统就会提示:程序执行了非法操作。这时我们该怎么办呢?下面是针对不同程序的GPF而分别采取的处理办法。1.基于MS-DOS程序中的GP
由于每个MS-DOS程序只在独自的虚拟机上运行,故基于MS-DOS的程序出现一般性保护错后,受影响的仅仅是该MS-DOS程序。因此,当这类程序出现GPF后,用户只须在GPF对话框中单击“关闭”按钮,就将终止该MS-DOS程序以及运行它的虚拟机而收回被该程序调用的系统资源。
点击GPF对话框中的“详细资料”按钮,系统将提供一些堆栈转储数据,这些堆栈转储数据是在程序崩溃时存储在系统寄存器中的消息,该信息一般只对编写程序的人有用。
2.16位Windows程序中的GP
由于基于Windows的所有16位程序享用相同的地址空间,故只要一个16位程序出现GPF,则其他正在运行的16位Windows程序都将因此而终止。只有将出现GPF的16位程序清除后,其他16位程序才能继续读线程中的消息和正常进行操作。
由于所有16位的Windows程序共享相同的资源,因此即使将出现故障的16位程序关闭,通常也不能把资源彻底返回操作系统,而这些不能回收的资源又可能造成另外的16位Windows程序出现GPF。故当16位Windows程序出现GPF时,要彻底收回系统资源,唯一的办法是关闭所有的16位Windows程序。
当16位Windows程序出现故障时,Windows系统也将发出指示故障的程序的GPF对话框,该对话框是基于Windows3.1旧类型的对话框,由“关闭”按钮和“忽略”按钮所构成。用户选择“关闭”按钮后,将看到Windows95/98GPF的对话框。3.32位Windows程序中的GP
虽然所有的32位Windows程序都使用同一个系统虚拟机,但是它们都有单独的虚拟地址空间,所以当32位Windows程序出现GPF故障时,不会对其他任何程序产生影响。
要收回出现GPF故障的32位Windows程序占用的系统资源,用户只须在出现的“Windows95/98GPF”对话框中单击“关闭”按钮,Windows就会关闭出错的程序并把其资源返回操作系统,
电脑资料
《Windows是怎样死掉的》(https://www.unjs.com)。4.设备驱动程序中的GP设备驱动程序中也会出现GPF。由于设备驱动程序能直接访问硬件并作为基本操作系统的一部分运行,所以当设备驱动程序出现GPF故障后,将会影响整个Windows系统的稳定和继续正常运行。因此设备驱动程序出现了一般性保护错后,最好的解决办法就是重新启动系统。将详细讲讲如何跟踪虚拟机,看看理论是否与事实相吻合。
1.点击“开始/附件/系统工具”中的“系统监视器”。
2.打开“系统监视器”中的“编辑”菜单,选择“添加项目(A)”选项。
3.选择“核心”类别中的“虚拟机”项目,单击“确定”按钮,即可利用“系统监视器”查看“虚拟机”的运行状态。
4.从下面的介绍中,我们可以看到Windows程序和MS-DOS程序调用虚拟机的真实情况:程序调用情况:只运行了Windows98系统。
虚拟机运行情况:只调用了系统虚拟机。
说明:Windows系统的系统程序只在系统虚拟机中运行。
程序调用情况:打开了Word97和PhotoShop4.0程序。
虚拟机运行情况:仍然只调用了系统虚拟机。
说明:基于Windows的所有程序(无论是16位还是32位程序)均在系统虚拟机中运行。
程序调用情况:在上个基础上调用了一个MS-DOS程序。
虚拟机运行情况:调用了系统虚拟机和一个MS-DOS虚拟机。
说明:从图中可以看出,MS-DOS程序不在系统虚拟机中运行,而是单独调用一个MS-DOS虚拟机运行,并且一个MS-DOS虚拟机的峰值为1。程序调用情况:在上个基础上再打开了一个MS-DOS程序。
虚拟机运行情况:调用了系统虚拟机和两个MS-DOS虚拟机。
说明:基于MS-DOS的程序并不是在同一个MS-DOS虚拟机中运行。一个MS-DOS虚拟机中只能运行一个MS-DOS程序,而且MS-DOS虚拟机相互之间互不干扰。
总结:Windows系统中的所有程序只能在系统虚拟机和MS-DOS虚拟机中运行!程序的不响应又称为程序被挂起,那么,什么叫程序的不响应呢?形象地说,就是某个正在运行的程序非正常地停留在某一状态,而又不对系统作出相应的反应,就仿佛死了一般。与出现GPF故障的程序不同的是,被挂起的程序并不会被系统强制终止,而是在继续运行,但不会对系统作出响应。