The Expanded Memory
Specification is the original method of memory management
to make more memory available to a PC. It predates XMS
and unlike that will work on any i86 processor
The problem it was developed to solve was the fact that the original i86 processors could only address 1024 Kbytes of memory
in 64K chunks
. Of this 1024K much was spoken for (the old 640K Barrier
for DOS and the space for the video memory etc.).
It worked by reserving an area of between 16K and 64K for itself (called the page frame) and then mapping in an identically sized piece of a large memory array held on a card (or later just in the memory above 1 Mbyte). This unfortunately gives the effect of accessing a large sheet of paper through a shield with a small hole cut in it (keyhole memory access). Programs had to be written to understand this and send instructions to the EMS driver/hardware to make the correct piece of memory available at the page frame. Originally this meant that the data had to transfer in over the ISA
bus which ran slower that the system memory on most machines. This is why software EMS is normally faster.
Once processors that could address more that 1024K became available then XMS was developed which gave more direct access to the higher memory (without the keyhole). Unfortunately it did take a long time for EMS to finally die.