Todo usuário de IBM PC e seus compatíveis (não esses PCs velhos de hoje em dia) sabe de cor e salteado esse mapa da memória aqui:

Mas como chegamos neste mapa? Quais as limitações técnicas que impuseram estes limites? E, mais importante, como superar esses limites à medida que as aplicações foram pedindo?
Julio Merino escreveu dois posts, From 0 to 1MB in DOS e Beyond the 1MB barrier in DOS, que responde a todas essas perguntas, com todas as paradas obrigatórias em EMS, XMS, modo protegido do 286, a introdução da paginação e do modo VM86 no 386. Tudo isso para chegar no unreal mode e nos DOS extenders (que se tornaram praticamente obrigatórios nos jogos para MS-DOS a partir do final dos anos 80; para usar o exemplo mais famoso, DOOM carregava o extender DOS/4GW na inicialização). Muita informação. MESMO.