I know a couple of people interested in OS development but no clue on where to start, and even though I occasionally show them one or two of the sites I get my information from this blog post is supposed to give them a better set of pointers to documentation.
I started programming in C using a good tutorial on
cprogramming.com.
Now I understand if this isn't enough for you and one book I highly
recommend is the C programming language by Kernighan and Ritchie.
Those are the two men behind the language and they've found a way to
describe the language in a simple and brief way.
Also something worth learning, although not
absolutely necessary when joining an existing project is a form of
assembly language. I personally got started with the
art of assembly, and honestly haven't found a better resource
yet.
Now we have some grasp of what it means to be a
programmer, we can start thinking about a simple kernel. For that
we'll go to a man called James
Molloy. He's written a tutorial which is very easy to understand.
It might not be the most powerful and flexible kernel out there, but
it'll get the job done for a first kernel. Also there's this
beautiful wiki on how
to do some things not covered in the tutorial.
Another tutorial that may interest you is one that
follows the Windows path a little bit more as opposed to the Unix
route used by James Molloy. I'm now talking about the brokenthorn
web book. This is one of the first tutorials I've found on the
subject and although I didn't take it's path it has taught me quite a
lot.