I see various comments below along the lines of “oh, the article is missing so and so”. OK… then please see the other articles in this series! I think they cover most of what you are mentioning :-)
The first was on EMS, XMS, HMA and the like: https://blogsystem5.substack.com/p/from-0-to-1-mb-in-dos
The second was on unreal mode: https://blogsystem5.substack.com/p/beyond-the-1-mb-barrier-i...
The third was on DJGPP: https://blogsystem5.substack.com/p/running-gnu-on-dos-with-d...
And the last, which follows this one, is on 64 bit memory models: https://blogsystem5.substack.com/p/x86-64-programming-models
Some of these were previously discussed here too, but composing this in mobile and finding links is rather painful… so excuse me from not providing those links now.