再谈Expanded Memory和Extended Memory

Author: 北京 倪向前 Date: 1994-07-01

        微型计算机有常规内存(Conventional memory),以供Dos和绝大多数应用程序在其之上运行;还有保留内存(Reserved memory),用以作影子内存(Shadow RAM)和管理I/O端口等用处。常规内存地址从0开始,最多到640KB,保留内存从640KB对应地址开始,最多到1024KB对应地址。
        为了让更多的数据、更大的程序在内存中,微机系统增加了页面扩展内存和线性扩展内存,以增强其功能。
        页面扩展内存是早期为突破低版本DOS对640KB RAM空间的限制,LIM(Lotus、Intel和Microsoft三家公司)推出的以页面扩展内存规范EMS(Expanded Memory Specification)为标准的内存,也称LIM4.0。这种内存是非线性内存,它在系统640KB~1024KB地址上系统未占用区域建立一个64KB页帧(page frame),以16KB为一页映射高达8MB容量的存储单元,通过EMS管理程序(如EMM.SYS、CEMM.SYS、REMM.SYS和EMMA.SYS等)管理页面映射,页面扩展内存不与基本内存和扩充内存一起编址,而是独立存在。它装在一块页面扩展板上,当一个应用程序运行时,应用程序通过询问页面扩展内存管理程序使用页面扩展内存;当它数据超出基本内存时,它就把一块基本内存保存到页面扩展内存中,就好象在内存顶部有一个小洞,计算机可以按需要在那里换入或换出页面扩展内存块,但应用程序不能在扩展内存中运行其程序代码,另外,交换页面扩展内存降低了程序运行速度。
        而线性扩展内存(Extended Memory)是可随机,连续寻址的线性内存,其地址在DOS常规内存和保留内存之上。DOS是通过以线性扩展内存使用规范XMS(Extended Memory Snetify)为标准编制的线性扩展内存管理程序himem.sys来管理使用这一部分内存的。目前流行的Windows正是由于充分使用了这一部分内存才使其强大的功能得以尽情发挥,通过Himem.sys管理程序,直接运行装在线性扩展内存中的程序,而无需象页面扩展内存那样地交换块。微机系统可以将线性内存扩展到2M、4M、16M等,用以运行大型的、功能强大的软件。
        有的微机将线性扩展内存和页面扩展内存做在一个内存插卡上,通过使用其上的选择开关,来决定卡上的RAM是作线性扩展内存用还是作页面扩展内存用。而在软件上,如在Windows下的EMM386.SYS,可以用线性扩展内存仿真页面扩展内存〈该软件只在386以上微机上运行〉,以满足某些应用程序对页面扩展内存的需要。但在软件上,不能用页面扩展内存仿真线性扩展内存,因为前者是非线性寻址的。