擴展記憶體

擴展記憶體（）是1985年4月24日，由Lotus、英特尔与微软联合发布的一项DOS内存技术，可以提供MS-DOS程式更多的記憶體。

八十年代的个人计算机(IBM PC/XT)純16位元CPU只能使用真實模式，也只有1MB的定址空間，且640KB以上的定址空間不可被应用程序读写使用。

擴展記憶體的原理是使用1MB扣除640KB後剩下的384KB,称作上端内存区（upper memory area）, 這本來是用來跟外设溝通的空間，
給程序使用。把内存的定址窗口插入到上端内存区的外设定址空间，引入了bank switching (存储体转换)的技巧。
同一時間只有一部分的額外記憶體可以被存取。
使用64KB的memory windows做為bank switching 的單位。

由於此時CPU沒有超過16位元的定址能力，所以 EMS 只能另外購買記憶體擴充卡插在ISA bus插槽上使用. 之後 Intel 80286 CPU的雖然仍然是16位元暫存器的CPU，但外部定址已經到20bit最大定址16MB，可以超過1MB的極限，因此之後的主機版就不用再買擴充卡，而直接使用CPU的記憶體，再以軟體模擬EMS，如此就可以決定系統有多少延伸記憶體被模擬做擴展記憶體使用，以及保留多少延伸記憶體繼續使用，所以80286之後幾乎很少人會繼續購買EMS擴充卡，使用XMS模擬即可。
但IBM PC/AT(286)的保護模式不好用，既沒有V86模式，也不能切回真實模式，所以使用者不多，而1987年開始，有32位元記憶體管理功能的Intel 80386 處理器出現，再386增強模式的保護模式下，以V86模式使用XMS/EMS，才讓大量使用超過1MB位址記憶體的軟體(DOS/4GW)出現。

MS DOS 於5.x提供 EMM386.sys，6.x提供 EMM386.exe 設定，或使用其他軟體開發商的XMS管理軟提(QEMM)，
可以在 EMM386 設定參數 RAM [size] 模擬 EMS，例如:一台有 8MB記憶體的 386電腦在 config.sys裡加入

DEVICE=EMM386.exe RAM 2048，表示拿2MB的XMS模擬出2MB的EMS，其他繼續當XMS使用，若後面沒有 [size] 則全部XMS模擬當作EMS使用。
DEVICE=EMM386.exe NOEMS 則不模擬EMS，全部皆為XMS。

在80286與之後的處理器，一個更有效率的方法存取640KB以後的記憶體，
就是用DOS Proteced Mode Interface.DOS extenders 是一個使程式可以在保護模式下執行的驅動程式.
與其用banking技巧存取更多記憶體，這個驅動程式可以讓應用程式在保護模式與模擬的V86真實模式間切換，
(在需要MS-DOS服務時回到V86真實模式)這樣就使用應用程式可以直接存取延伸記憶體.

參見
延伸記憶體

Category:X86内存管理
Category:DOS内存管理
Category:内存扩展