📄 1155.txt
字号:
的视频ROM BIOS等拷贝到系统RAM内存中去运行,其
地址仍使用它们在上位内存中占用的原地址。更确切
地说,是从扩展内存中拿出一部分物理存储空间,而
赋以ROM的原地址,由这部分扩展RAM代替原ROM。由
于ROM采用静态CMOS电路,其存取速度为200ns左
右,而系统存储器RAM采用动态CMOS电路,其存取速
度进几十ns,速度快好几倍,将存放在ROM中的BIOS
代码(基本输入输出例行程序,它们在系统运行期间
非常频繁的被调用)拷贝到系统RAM中去,就可提高
系统运行和显示的速度和效率,它的设置在CMOS中
完成,如Video ROM Shadow C000,32K:Enabled
(对视频BIOS的设置为“打开”),其他设置类
似。另外,386DX以上的机器标准配置均有4MB以上
内存,此时系统一般都自动保留几十KB甚至384KB的
物理内存供“影子”内存使用,即使CMOS中设置为
Disabled,这些物理内存也照样保留,因此,不如
把其选项均设置为Enabled,充分享受“影子”内存
的优越性。
虚拟内存:
由于计算机的主存一般是由半导体存储器件构
成的,受其成本和工艺的制约,主存的存储容量受到
了限制;另一方面,系统程序和应用程序要求主存容
量越来越大,为解决这个矛盾,虚拟存储技术便油然
而生。所谓虚拟存储技术是建立在主存和辅存物理结
构基础之上,有附加硬件装置及操作系统存储管理软
件组成的一种存储体系,它将主存和辅存的地址空间
统一编址,形成一个庞大的存储空间。在虚拟存储系
统中,基本信息传送单位可采用段、页或段页等几种
不同的方式。在Windows操作系统中,虚拟内存由
Windows系统统一管理,用户不必考虑内存的大小,
只需按自己的实际需要去做便可以了。
Windows中的虚拟内存:
除了利用HIMEM.SYS、EMM386.EXE、
DEVICEHIGH、LOADHIGH和MEMMAKER.EXE等命令对内
存进行优化外,在386增强模式中,Windows系统也
采用了虚拟内存管理机制,即使用交换文件来模拟额
外的物理内存,这种方法对提高Windows的性能非常
有用,对低配置的机器尤为如此。交换文件实际上是
建立在硬盘上的一个隐含文件,分为临时交换文件和
永久交换文件。临时交换文件为WIN386.SWP,它随
Windows系统的启动而产生,随着退出Windows系统
而消失,在Windows 9x系统中,它位于C:\Windows
目录下;永久交换文件为386SPART.PAR,它不管
Windows运行与否都存在于硬盘上。一般情况下,使
用更多的是临时交换文件,但在硬盘空间允许的情况
下,使用永久交换文件更好一些,因为它在磁盘上以
连续方式存放,存取速度比临时交换文件快得多。
Windows突破了DOS的640KB常规内存的局限,但
Windows在内存管理上有本身的隐忧:第一,它允许
程序占用前1MB的内存,而该区域实际上是为一些特
殊的需求而留用的资源,如果此区域被占用,当这些
特殊需求出现时,Windows往往会发现资源已被占用
殆尽了;第二,Windows还需保持跟踪大量的自身需
要的以及正在运行当中的Windows应用程序的用户界
面信息,这样,在系统资源局部堆栈中就难有足够的
空间去容纳有可能想要运行的所有应用程序的相关信
息;第三,偶尔可能出现耗尽内存的情况。Windows
保持有7层系统资源局部堆栈,每层都有单独的16位
指针寻址,即每层堆栈不超过64KB。每一个堆栈中
都包含有对Windows系统正常运作至关重要的信息,
当其中任何一个堆栈的自由空间少于30%时,系统的
运行速度就会明显降低,同时系统变得很不稳定,各
方面显得迟钝无为,频繁出现“Out of Memory”错
误,实际上此时可能还有数以兆计的系统内存没有被
使用。如果某个应用程序或驱动程序不正确的使用了
其中的一个资源栈,而导致堆栈被充满时,Windows
就会崩溃,即出现一般保护性错误GPF(General
Protection Failure),此时系统连提示“Out of
Memory”的机会都没有,只能重启机器了。针对这
种情况,简单的避免方法有:关注资源使用情况。最
简单的方法是用鼠标右键单击“我的电脑”、点“属
性”、点“性能”,查看“系统资源”的可用情况。
需说明的是,这里显示的是GDI和USER两个堆栈中剩
余空间较小的一个的情况。减少不必要字体。系统中
安装字体越多,所占内存空间也就越多,同时还会使
Windows的加载速度变慢。删除不必要的壁纸和屏
保。尽量减少同时运行的程序的数量。每打开一个应
用程序,Windows都会为其准备堆栈并开辟内存空
间,同时还要跟踪处于非激活状态的应用程序,这都
将占用本来就非常紧张的系统资源,所以,关闭暂时
不用的应用程序、减少“启动”项目中的程序的数
量,对缓解资源紧张的现象大有裨益。减少GPF的出
现。GPF具有很大的破坏性,可导致未存盘的文件内
容全部丢失。如某个软件或硬件使用了其它软件或硬
件占用的内存时,就会导致GPF发生。当系统中增加
了一个新的应用程序、一个带有驱动程序的硬件或是
重新对系统进行了配置时,最易出现GPF,其中,显
示驱动程序可能是GPF的主要根源之一。另外,经常
使用SCANDISK或CHKDSK对硬盘进行处理,修复错误
的FAT、交叉连接的文件以及丢失的簇等,也可在一
定程度上减少GPF的出现。
常见内存故障的排除
前面分别从“硬性”和“软性”两个角度分别介绍了关于内
存的方方面面,这里将就关于内存的常见故障及解决方法作一简
要介绍。内存故障多种多样,应根据具体情况具体解决,这里就
较常见的情况作一简要分析:CMOS的设置与内存不一致。要注意
一台机器的内存条奇偶校验应一致,两者不能混用,比如,内存
若是8片一条的,应将“Memory Parity Error Check:”设置
为Disabled,而若是9片一条的,应将“Memory Parity Error
Check:”设置为Enabled。另外,有时虽能进入CMOS设置状
态,但退出时出现死机,这时有可能是购买了以低速内存冒充高
速内存的缘故,此时可把CMOS的“Cas Read Wait State:0
W/S”(读等待)和“Cas Write Wait State:0 W/S”(写等
待)设大一点,如把0改为1,以适应那些低速充当高速的内存
条。执行了MEMMAKER.EXE引起死机。在CONFIG.SYS和
AUTOEXEC.BAT中,有的程序不宜装入UMB,而在执行
MEMMAKER.EXE时加上了DEVICEHIGH或LOADHIGH,有时便会导致
死机。解决时可以在系统启动时按F8,逐一执行CONFIG.SYS和
AUTOEXEC.BAT的命令,直到出现死机的那一行,此处便是问题所
在,重新启动后,按F5进入DOS状态,在有问题的命令行前加上
REM语句或删除此命令行均可。由HIMEM.SYS设置不当引起的故
障。HIMEM.SYS有一个开关/MACHINE:XXXX,它用于指定用户使
用的A20处理器类型。一般地,HIMEM.SYS能检测系统正在使用的
是哪一种类型的A20处理器,如果报告A20处理器有问题(显示
“Unable to Contronal A20 Line”信息)或在高端内存区使
用MS-DOS有问题,用户就必须设置此值。XXXX开关的缺省设置是
at或1,用户可参照有关文档对此值进行必要设置。另外,应注
意HIMEM.SYS中是否使用了/A20CONTROL:OFF设置,如果设置为
OFF,机器运行速度将明显便慢,这时应将其设置为ON,其实,
默认设置即为ON。由Windows退到DOS后关机,数据出现未存盘而
莫名丢失。在DOS 6.2以前版本的SMARTDRV.EXE要在控制传给
COMMAND.COM之后才处理磁盘缓存的数据,所以,要等待5秒钟的
时间让SMARTDRV.EXE有时间完成操作。对于DOS 6.2以后的版
本,SMARTDRV.EXE会先清理缓存,然后在将控制传给
COMMAND.COM,所以,在这种情况下,当出现C:\>时,磁盘缓存
以被清理干净了,此时关机没有什么妨碍。如果使用的是
Windows自己所带的SMARTDRV.EXE,同时基于的DOS版本不甚
高,如DOS 6.0、5.0,这时5妙的约定同样有用。有时能正常启
动,有时不能正常启动。出现这种问题,说明系统硬件的控制逻
辑没有问题,热稳定性也正常,如果再排除电源接触不良、接口
接触不良等原因,那么很有可能是内存接触不良所引起。这时可
把内存条拔下后重新插入,一般便可解决问题。另外,有些主板
要求所有内存条必须全部插好才能引导,而有些主板只要求至少
有一块内存条插好便可正常引导,但此时所检测的内存数与实际
内存数不符,此时也应拔下内存条把其重新插好。顺便说一句,
一些兼容机的非正规的主机板对内存条的固定较差,紧靠槽边的
塑料卡口固定,由于塑料片比较薄脆,再插拔时很容易折坏,而
一旦损坏后就很难固定,因此必须小心操作。“Packed file
corrupt”故障。DOS 5.0以上版本使用了HIMEM.SYS和
EMM386.EXE内存管理程序后,可将DOS系统本身装入HMA,将TSR
和设备驱动程序装入UMB,给应用程序留出了更多的常规内存空
间,使得应用程序可以装入前面的64KB内存。这本来是很有用
的,但有些程序装入第一个64KB运行时却会出现“Packed file
corrupt”错误而不能运行,有时甚至出现死机。出现此种错误
的原因,是由于这些被运行的程序通过EXEPACK压缩过的程序,
MS-DOS在执行用EXEPACK压缩过的程序时先开包,把原来的程序
和DOS替换过的程序进行比较。由于EXEPACK程序计算时并没有考
虑到会在低64KB内运行,数据段地址计算时没有比较是否小于
0,这样,EXEPACK就取不到正确的地址,只好显示“Packed
file corrupt”。由于EXEPACK应用及其广泛,Microsoft只好
在DOS中弥补这个漏洞,用LOADFIX命令来加载用EXEPACK压缩过
的程序以进行特殊处理。所以,当运行一个程序时出现“Packed
file corrupt”时,就用LOADFIX命令将其加载到首个64KB内
存,如:C:\>LOADFIX TEST.EXE。配置了高速缓存,但机器速
度仍然很慢。此时有可能是CMOS中关于高速缓存的设置不当所引
起。目前386以上的计算机,都提供了64KB或64KB以上的高速缓
存,486以上的计算机都提供了内部缓存,此时应把CMOS中
“Internal Cache Memory:”设置为Enabled,这将使机器运
行速度大为提升,如果设置为Disabled,将会大大降低机器的运
行速度。386及以下的计算机一般都没有提供内部高速缓冲存储
器,所以这项值应设置为Disabled,如果设置成了Enabled,则
很容易发生死机现象。
本文作者:赵江波
--
※ 来源:·日月光华站 bbs.fudan.edu.cn·[FROM: 168.160.224.174]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -