If you have an interest in kernels, I would suggest digging up John Lions' commentary on UNIX 6th Edition, with Source Code*. The book covers a very old version of UNIX, C, and PDP assembly; but it offers a *much* less complex beast to study then the modern BSD or Linux kernels have become.
The best introduction to the modern kernels that I know of, is to poke around the source code, see where things are located, and find out how something you are interested in works; exempli gratia learn how the system goes from CPU power on, to allowing multiple users to login**. Or perhaps study how the the kernel executes programs***. You can even poke around various sub systems and drivers; the implementation of FAT file systems is a nice and simple file system to study compared to modern FSes.
*
http://en.wikipedia.org/wiki/Lions%2...th_Source_Code
** I found writing notes on that very fun and mildly educational.
*** Doing that is a fun exercise
__________________
My
Journal
Thou shalt check the array bounds of all strings (indeed, all arrays), for surely where thou typest ``foo'' someone someday shall type ``supercalifragilisticexpialidocious''.