返 回
1999年8月4日
64MB内存不够?
成都教育学院 傅叔平
我的机器安装的是Windows 98操作系统并作有一个启动菜单,可以在开机时选择进入Win98的图形介面还是进入仿真DOS的字符介面。一日,开机进入仿DOS介面以后启动一个DOS版的扫描仪应用程序,随着“嘟”的一声,屏幕上竟显示出“Not enough memory(内存不足)”。奇怪了,这个程序我经常都在用,从未遇到过内存不够的问题,我的机器装的可是64M内存啊。立即用MEM/C/P命令一查,问题出来了: SYSTEM(系统)竟占了117KB常规内存,常规内存可用空间只剩下457KB(上述扫描仪程序需要500KB常规内存)!再试试DOS版的FOXPRO,也报告内存不够。
我的第一反应是——“病毒”。我给学生讲授的《计算机病毒防治》课程头天刚结束,难道病毒就来给我一个难堪?使用计算机十多年,我对计算机病毒防范甚严,还从来没有哪个病毒能进入我的计算机。不过为防万一,我还是用刚刚给我的学生讲过的各种查病毒的手段对硬盘来了个大清查。结果没有找到病毒的蛛丝马迹,可以确认不是病毒。
是不是程序文件因某种原因损坏了?找出该程序的备份盘,将硬盘上的文件与备份软盘上的文件一比较,答案是:no differences encountered(没有找到不同之处)。重新启动系统并敲F4键进入纯DOS(MS-DOS6.22),运行该程序,正常。可以肯定该程序文件无问题。
是不是内存条有损坏?用Norton的ndiags诊断程序对内存进行诊断——正常;重新启动系统直接进入Windows 98的图形介面,运行多个大型软件——正常。可以断定内存本身无物理损坏或接触不良等硬件问题。
启动Win98直接进入图形介面后再从“MS-DOS方式”进入仿DOS的字符介面,用MEM/C/P命令检查:SYSTEM只占了不到10KB常规内存空间,剩余的常规存空间还有603KB,但若启动Win98时直接进入仿DOS的字符介面,MEM则报告有大量的常规内存被“SYSTEM”所占。因此可以肯定是有DOS下的实模式常驻内存程序占据了过多的常规内存。马上采取措施:反复调整CONFIG.SYS和AUTOEXEC.BAT文件中的各驱动程序的位置和参数——不奏效。单步跟踪启动过程并逐一取消上述两个文件中的常驻内存程序,直至将光驱、鼠标等驱动程序统统取掉——还是不奏效。
没招了。
静下心来仔细想一想,这两天对系统动过什么手脚没有?没有打开过机箱,没有装过软件,也没有异常中断过。真是怪事。再想想,哦,头天启动过Win98的磁盘压缩程序,但最后是“取消”退出的,并没有对磁盘进行压缩。难道系统误以为在启动系统时要装压缩磁盘管理程序,这显然是不可能的嘛。不过这倒提醒了我:系统启动时,在执行CONFIG.SYS文件之前就会调入磁盘压缩管理程序等一些常驻内存程序。马上实验:将C盘根目录下的压缩驱动器管理程序程序程序DBLSPACE.BIN文件改名,使Win98不认识它。重新启动并直接进入Win98的仿DOS字符介面,MEM报告剩余常规内存空间在600KB以上,前述的DOS应用程序都能正常启动了,一切OK!
现在终于搞清了:当以仿DOS的字符介面方式启动Win98时,在执行CONFIG.SYS文件之前,DBLSPACE.BIN之类的常驻内存程序就被调入了内存,这些程序中有的较大,即使安装了EMM386.EXE程序UPPER MEMORY(上端内存块)也装不下它们,只得装到常规内存。而且,用MEM程序检查内存时,报告中并不显示这些程序的名字,只笼统地冠以“SYSTEM”的名字,使人容易忽略真正的问题所在。
最后还是留下一个未解的谜:以前从出现过仿DOS环境下“SYSTEM”占据大量常规内存的现象,真会在启动过一次磁盘压缩程序(并未进行压缩)后发生,抑或是Win98的又一个bug?
返 回