
https://www.amazon.com/Dissecting-DOS-Code-Level-Operating-S...
If people want to know why Microsoft hated DOS and wanted to kill it with Xenix, then OS/2, then Windows, and then NT it would be vital to know that it only came about as a result of IBM wanting a 16bit source-compatible CP/M which didn’t yet exist. Then, you would likely want to read Dissecting DOS to see what limits were imposed by DOS.
For other stuff, you would start backwards. Take the finished product and ask what the requirements were, then ask what the pain points are, then start digging through the source and flowcharting/mapping it. This part is a must because programs are often too difficult to really grok without some kind of map/chart.
There is likely an entire discipline to be created in this…
First, Code by Petzold to make sure you understand how a computer truly works. Then I recommend:
Understanding Microprocessors (Motorola)
8086/8088 Assembly Language Programming
Dissecting DOS
Practical Filesystem Design
FreeBSD Internals
The reason there are so many books is because it’s a big topic. The reason most are old is that things were once much simpler. Modern stuff builds on old, so if you get a good understanding of older stuff, you have an idea of what is happening. From there, I strongly recommend getting a good understanding of UEFI. UEFI will handle most of your system initialization no boot requirements, allowing you to focus on higher level stuff. Prior knowledge of systems will still be a requirement so that you can understand some of the assumptions and choices that UEFI makes.
OSDev is fun. I hope you have a good time.
https://www.amazon.com/Dissecting-DOS-Code-Level-Operating-S...
The original companion floppy for that is available on archive.org:
https://archive.org/details/dissecting-dos-companion-floppy-...
Understanding Microprocessors is a small book, and currently unavailable anywhere I've seen except for eBay, but it's also normally quite inexpensive.
Back when I was working on my toy OS I also bought the book describing the implementation of an OS called MMURTL, apparently the book and the code are now available for free online: http://www.ipdatacorp.com/mmurtl/mmurtlv1.pdf http://www.ipdatacorp.com/mmurtl/ I liked it and found it quite useful but I remember the folks at alt.os.development being quite negative about it because of the design.
Also, Podanoffsky's 'Dissecting DOS' is a good book though obviously focused on, eh DOS.
Actually there is quite a bit already for a single person to digest, if you want to understand the real details of how everything works. I learned about the DOS family by reading this book:
http://www.amazon.com/Dissecting-DOS-Code-Level-Operating-Sy...
UnixV6 and the Lions' book come close, but Unix is still far more complex than DOS because of its multitasking, multiuser heritage. Early Unices may be within the realm of an average student to grasp, but things like the BSD and Linux kernels are orders of magnitude bigger and more complex, which means that it's nearly impossible to get down to the details when studying them and the best thing one can hope for is a high-level overview of the various subsystems and how they interact. DOS is simple enough that a single person can study the whole OS at the level of individual instructions (and write an OS similar to it).