pcmattman wrote:
I have the first XINU book and the second - "Internetworking with XINU"... What a coincidence!
Unfortunately, it's all based on the PDP-11, but the concepts remain and I got a lot of information for some of the more difficult parts of my kernel out of it.
True! Back in 2001 I went to a Linux conference at the University of Canberra and met a lecturer who researches into operating systems and networking. I asked him "where do you start when you want to write an O/S?" and general questions like that. He told me one of the best books I could get was the Lions book, which is a source commentary on UNIX v6. He said the most important thing was to get a general feel for how interrupts were handled and things like that, instead of being bogged down in detail trying to decipher the Linux kernel code and learning that way.
As someone else has mentioned here, where is the book that teaches how to program the hardware? OSDI almost gets there, as does the XINU book; the Lions book has very simple code listings that show clearly the hardware programming but unfortunately things were simpler back then with the PDPs and the machines actually came with manuals as I understand. (Wow!)
A good, hardware programming book is badly needed. That's the most important thing, along with loading and running programs and scheduling them. An O/S is supposed to present an abstraction of the hardware after all, which all O/S textbooks emphasise, but they all fail to go even into a small amount of detail on hardware programming. I think it would be quite possible to write an O/S textbook dedicated to the undocumented stuff like hardware. It could give the general feel for hardware programming with plenty of examples using subsets of specs like the ATA/ATAPI spec, etc. and dealing with DMA, standardised hardware like the keyboard, probing if that was necessary, enumerating the stuff on the PCI bus and collecting it all in a device tree, and so on... but I suppose there are not many people who have much experience in writing drivers for everything, like the keyboard, mouse, framebuffer, ATA disks, SATA disks, (or chipsets for those devices I should say), bus scanning, ethernet cards, serial and parallel ports, USB... it could get overwhelming very quickly, but I think a quick jump start on all that stuff that at least gets you off and running and points to sources of info on the web would be a great and desperately needed book as a companion to the theoretical O/S textbooks. I've always wondered what the point was to an O/S textbook if you couldn't actually read it and sit down to try the stuff out and write an O/S, no matter how small and simple.
Phew... end rant!