Operating Systems: Three Easy Pieces [1] covers the really interesting parts of the book you are considering, and skips the parts that can't really be given decent treatment: x86 Assembly, C, and writing a toy operating system. Likewise, Linux from Scratch covers understanding the practical side of Operating Systems [2].
A book I want to read has "EMACS really is an operating system" as it's thesis and then proceeds to show why and how our concept of operating system covers it -- a book that challenges our comfort in distinguishing operating systems.
Another book I want is "Build an Operating System for $3.47 worth of Breadboarded Chips." There's a book which pushes the lower bounds of computing. Something that provides fertile ground for new ideas.
Write a book at the edges, in the space between computer science curricula and actual practice. Write it just for people who are interested in operating systems. Write it for skimmers and strugglers and dilettantes and professionals. Write it so that people will learn, but also so that some will disagree on conceptual [rather than technical] grounds.
Then it might find a niche.
Good luck.
Anyway, the danger you face is that you've cut the scope all the way back to undergraduates and begun to cast it as a traditional textbook. One that has to introduce C and x86 assembly and has to address the practical issues of testing and running a new minimal OS on their development machine [under Windows, OSX, and Linux?]. How much of what you want to write gets left out and how much of what you do write winds up being superficial instead of what you wish you had known?
It's been reposted since.
[https://hn.algolia.com/?q=nandtetris#!/story/forever/0/nandt...
I flipped through Computer Architecture, A Quantitative Approach (http://www.amazon.com/Computer-Architecture-Fifth-Quantitati...) at the bookstore the other day and it looked interesting, but that's all I could gather in the short time I had.
If this is absolutely the first time you are looking at architecture, http://www.amazon.com/Computer-Organization-Design-Fifth-Arc... by the same authors might be a easier entry point.
http://en.wikipedia.org/wiki/Xv6
http://en.wikipedia.org/wiki/Pintos
I think Minix is also x86, so that may be 3.
I'd be interested in a better mousetrap, OR find a new niche rather than yet another minix. How about a RTOS soft or hard your choice, or write it in a new or obscure language, or target it to a microcontroller (PIC32 ?) or target it to a softcore in a FPGA and develop the peripherals as you develop the drivers for them in parallel. How about an OS designed from the start specifically to live inside virtual containers, to optimize its performance both boot up, drivers, and shutdown while virtualized?
Has anyone ever written a power-aware OS and what would that mean? I don't mean a mere ACPI driver but something written from the bottom up to minimize watt/hrs burned by the OS rather than pure speed as sole criteria. That would be an interesting "hook" even if the rest of the book is fairly traditional.
How about an OS that is some kind of kissing cousin / lovechild of a java virtual machine? Where the native executable format is a jar file, where the whole thing runs in the JVM, for no reason other than I'm daydreaming right now?
(Edited to add, I like retrocomputing so how about a C re-implementation of a classic OS, like maybe PDP-8 OS/8? Small simple yet capable, make it as compatible as you can. Or TRSDOS, or port Microware OS-9 and/or Nitros9 to ... something, maybe intel PC I donno)
(Edited to add, strange filesystem idea #2515 how about a cloud / nosql database as your native root filesystem? What a strange idea, yet interesting.)
Here's an examplehttp://www.amazon.com/Developing-32-Bit-Operating-System-Cd-...
People that don't want to develop their skills leave it at that whereas people that care look a little deeper and say 'oh, my knowledge has some pretty significant gaps...'
You can see this sentiment in a lot of the comments: everyone says 'I feel like I'm missing something.'
In my case, that realization came after I started doing some hobby electronics projects: once you start seeing how physical hardware interacts it set off a chain reaction where I realized that my knowledge was really deficient as to how you could go from such a low level to the level of abstraction with which I'm familiar.
Trying to include C and assembly in there with the rest of it is ambitious, so if you van do that successfully it might be worthwhile. But we don't really need another book that reiterates the old concepts of what an operating system is. We need people to build new operating systems with fundamental design changes to the core model of what an operating system is that take into account new developments in computing. The biggest development I think is open source. So I would start with that as an assumption for my OS and question other premises. For example I think that virtual memory should probably be eliminated or replaced with another concept.
When I studied at UT, the OS course lets you build an OS. It was brutal. 80 hour per week brutal. But what I took away from the course is not the class notes but really the Prof/TA comments when we used to come up with design issues when we fucked up lower abstraction layers or subtle, really really subtle bugs that were introduced at previous levels.
To be honest, I am not sure how that would be replicable in book form if not accompanied by a teacher. Either you are so vague that people muddle, then google and your book is effectively useless. Or you are so prescriptive that people end up reading a floor plan to build an OS and get squat out of it.
Finding a middle ground is of course key.
Knuth stands above them all of course. But its cautionary tale is that it's a book about compilers. I'm pretty sure I'll live to see chapter 12, but as it stands today, there are four more chapters to be released before it. Knuth began writing The Art of Computer Programming in 1962.
In fact I just finished a C Programming course at a state university. After talking with the professor I decided to continue on myself with a C++ book (to be determined), and a Linux Kernel book, [Understanding the Linux Kernel](http://shop.oreilly.com/product/9780596000028.do).
Finding a group of people of a similar skill level willing to do this type of learning would be fantastic.
What would make the book MORE exciting for me, was if you included other system programming languages than C in the implementation. e.g. Rust, D...
Just don't target it only for self taught programmers. Any programmer will benefit from it. (although I think every programmer is eventually self taught in a way)
Blog? Signup form?
1. http://www.quora.com/How-do-I-write-an-operating-system
2. http://www.quora.com/If-you-were-to-write-a-new-operating-sy...
3. http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/...
4. http://www.amazon.com/The-Design-UNIX-Operating-System/dp/01...
5. http://www.amazon.com/The-Elements-Computing-Systems-Princip...
The single biggest piece of advice I'd give to people is _never_ try to write your own bootloader. People have written millions of them, but ultimately grub, etc, have this covered. Writing a boot loader is kinda/sorta fun, I get that, but really it's just a stepping stone which is required to get your _real_ code running.
Reinventing wheels is educational, but a boot loader? It's not really worth the time..
FWIW, I think what you are thinking of might be a good (better?) fit with that format.
Either way it sounds interesting!
I hope it is as deep as you are suggesting it will be. I'm not interested in an easy overview, I want to know pragmatic tradeoffs that modern OSes make, and what sorts of research is being done.
But I would definitely be interested in it even if it only focused on x86.
Why not, the more knowledge the better.
I concur with HN reader: chubot, some x64 knowledge would be useful.