各种内存

  • 格式:doc
  • 大小:32.00 KB
  • 文档页数:8

各种内存:虽然现在是Windows一统天下,内存的分配已不需使用者管理,但由于Windows 也需DOS得初始自举,所以了解内存的划分也不无必要。

在DOS环境下,PC使用的内存有三种类型:系统存储器(System Memory)、扩展存储器(Extended Memory)和扩充存储器(Expanded Memory)。

系统存储器:它对应IBM PC最初的1MB存储地址,又被分为常规内存(Conventional Memory)和上端内存(Upper Memory)。

常规内存也经常被称为低端内存、基本内存或自由内存,是0~640KB 之间的线性空间,其容量为640KB。

在工作期间,它通常用来存放系统程序和用户的程序及数据,它的最大的三个占用者分别为DOS系统、内存驻留程序(TSR)和应用程序。

除以上三个占用者外,常规内存中还包括中断向量表、BIOS数据区、用户通信区和系统数据区。

因此,常规内存是微机中非常重要的资源之一,对其进行优化配置显然非常必要。

上端内存通常也被称作上位内存、高端内存、保留内存、BIOS内存或适配器内存,是640KB~1MB之间的线性空间,其容量为384KB。

这部分内存通常留给系统使用,如视频缓冲、BIOS等。

在这部分内存中,总有一部分是空闲的,一般称之为上位内存块(Upper Memory Block,简称UMB),通常位于768KB~960KB之间,其大小受系统所配置的显示器有关,可以利用EMM386、386MAX、QEMM386等应用软件予以利用。

扩展内存XMS:扩展内存通常也被称为XMS存储器,为了更有效的使用扩展内存,由Lotus、Intel、Microsoft和AST联合制定了扩展内存的使用规范EMS(Extended MemorySpecification),事实上它已成为使用扩展内存的国际标准。

EMS定义了内存的三个特定区域的分配,即:高端存储区HMA(High Memory Area)、上端内存块UMB (Upper Memory Blocks)和扩展存储块EMB(Extended Memory Blocks)。

HMA是1024KB~1088KB之间的线性空间,其容量为64KB,通过激活第21条地址线(A20)可以在实模式下直接访问,它只能作为单独的存储块处理,不能分割共享,只能调入一个单独的程序。

UMB是上端存储器中未用的地址空间,通过专门的硬件和内存管理程序可以在实模式下访问这部分空间。

EMB是1088KB以上的地址空间,只能在保护模式下访问使用,是非常重要的内存资源。

扩充内存EM:它是微机处理器寻址范围之外的物理存储器,它通常安装在一块专门的扩充内存板上,插入微机的扩展槽中使用。

它与扩展内存有三点不同:各种PC机都能使用扩充内存,而扩展内存只能在286以上的机器上使用;扩充内存只能存放数据,不能存放程序代码,而扩展内存则都可以存放;扩展内存安装在PC的内存插槽上,而扩充内存安装在PC的扩展槽上。

“影子”内存:“影子”内存(Shadow RAM,或称ROM Shadow)是为了提高系统效率而采用的一种专门技术,它把系统主板上的系统ROM BIOS和适配器卡上的视频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。