物理内存与内存地址空间

Author: Date: 1995-03-31

        在理解PC的内存结构时,很重要的一点是注意不要把内存地址空间和实际物理内存混淆起来。
        我们常说的一台机器配有多少内存,是指机器主板上配有总容量为多少的RAM主存储器,即指的是物理内存。内存结构中所说的扩展内存(XMS)、高端内存区(HMA)、上位内存块(UMB)等,皆指的是内存地址空间,需要机器上有一定的物理内存来填充这些地址空间,而且实际物理内存与内存地址空间之间并不一定一一连续对应。
        例如,如下图所示,一台配有1MB内存的80286机,其1MB物理内存并非对应于0K到1MB的内存地址,而是分为两部分:640KB用作常规内存,384K作为扩展内存(XMS)。上位内存区则是由主板上的系统ROM存储器、视频适配卡上的ROM存储器和视频适配卡上的RAM存储器等占用。
        这样对应之后,上位内存区里还剩下160KB左右的空闲地址块,即所谓UMB。由于高版本DOS中负责UMB管理的是设备驱动程序EMM386.EXE,而该程序只适用于80386以上的机器,因此在80286机上,一般不能将其对应到某一块物理内存并加以使用。
        如果上例中是一台80386SX以上的机器,则可以通过使用EMM386.EXE对UBM加以利用。这可分为两种情况:
        ·不仿真扩页内存。即,把上位内存区中160KB左右的空闲地址块都用来构成UMB。此刻,物理内存就分成三部分:640KB用作常规内存;160KB左右用于UMB,可用来装入其他设备驱动程序和常驻内存程序(TSR);其余作为扩展内存使用。
        ·仿真扩页内存。此刻,这160KB的空闲地址块要划出64KB作为页框,只剩下约96KB左右可用来构成UMB。于是物理内存有640KB用作常规内存,96KB左右用作UMB;剩下的作为扩展内存,包括用作页框和用来仿真扩页内存。
        为说明简单起见,上面皆假定未使用“影子内存”。