A good place to start with FreeBSD, is reading /usr/src.
The source tree is fairly well organized, you'll find most everything where you expect in the userland; kernel code resides in /usr/src/sys. I've personally found starting with the booting procedures and working up from there to a running system was fun, in regards to the kernel. Examining the code in /usr/src/usr.bin/ is actually what started me writing in C.
You might also like
The Art of Unix Programming, by Eric Steven Raymond; for something more abstract, but you will want something like Richard Stevens APUE and the systems manual pages for actual code crunching though. (Sections 2,3, 4, and 9 especially).
__________________
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''.