Expanded Memory Specification - The original protocol for accessing more than 1 megabyte of RAM on an x86 class processor using an MSDOS or compatible system. The method was simple fast and efficient - an area in upper memory was defined as a page frame and could be mapped on the fly to reflect whatever memory address was needed.

EMS was originally tied to hardware implementations, however with the advent of the Intel 80286 CPU which could physically address much more than 1 megabyte of RAM, software EMS drivers were invented to allow the existing software to access such memory just as it would have done on an 8088 8086 or 80186 system.

Contrary to some other writeups I've seen, XMS was not faster, although it might have been marginally more easy to code for. XMS implementations for early processors actually copied data from spot to spot to allow it to be used, while EMS simply remapped the Page Frame to act as a pointer to the proper location for the next operation - EMS was thus several orders of magnitude faster and was preferred by competent coders for a period of several years.

Eventually, of course, MS-DOS became a mere emulation layer on newer boxen running newer Operating Systems and both protocols became equivalent virtualisations anyway.