Hacker News Comments on
The Design And Implementation Of The Freebsd Operating System
Hacker News Stories and CommentsAll the comments and stories posted to Hacker News that reference this book.
BSDs are UNIX.
Not an article, but Kirk McKusick (a very longtime developer of BSD) gave a few talks on BSD and UNIX history (and the beginnings of TCP/IP), which are on YouTube: https://www.youtube.com/watch?v=bVSXXeiFLgk
If you prefer text, you can find it in Chapter 1 of his book "The Design and Implementation of the FreeBSD Operating System": https://www.amazon.com/Design-Implementation-FreeBSD-Operati... (the chapter seems to be available in the book preview)
Eric S. Raymond also wrote a nice chapter on UNIX history in "The Art of Unix Programming": http://www.catb.org/esr/writings/taoup/html/historychapter.h...
⬐ luzer7Thanks, looks very interesting.
The BSDs are far more approachable, and I recommend starting there for anyone interested in kernel development.
There are books, such as The Design and Implementation of the FreeBSD Operating System (by McKusick): http://www.amazon.com/Design-Implementation-FreeBSD-Operatin...
There are papers, such as Jonathan Lemon's "Kqueue: A generic and scalable event notification facility" presented at Usenix 2001: http://people.freebsd.org/~jlemon/papers/kqueue.pdf
There are kernel interface man pages:
There are examples referenced by the man pages:
⬐ songgaoThanks for the references!
I actually started to look into FreeBSD kernel code recently. I've found that FreeBSD's ath driver code is cleaner and more straightforward compared to the ath/ath*k drivers in Linux. Not sure if this is coincidence or due to different philosophy between FreeBSD and Linux communities.⬐ teacup50⬐ justincormackI've found similar across the board; I think it boils down to different philosophies/development cultures.Indeed and there is a new edition of the Design and Implementation updated for FreeBSD 10/11 http://www.freebsdnews.net/2014/04/02/design-implementation-...
NetBSD is pretty approachable too. With the rump kernel you can run drivers in userspace, so you can use a normal debugger and so on, and not crash the OS you are running.
As a start, read and understand http://www.amazon.com/Understanding-Linux-Kernel-Third-Editi... (that's a very technical and in-depth book) and http://www.amazon.com/Linux-Kernel-Development-3rd-Edition/d... (that's a more gentle overview book) then dive in with http://www.amazon.com/UNIX-Filesystems-Evolution-Design-Impl... and write a very simple file system.
Learn C as necessary.
The FreeBSD kernel book is worth a look too: http://www.amazon.com/Design-Implementation-FreeBSD-Operatin...
Surprised not to see "Design and Implementation of the FreeBSD Operation System" mentioned yet (http://www.amazon.com/Design-Implementation-FreeBSD-Operatin...).
McKusick's 'Kernel Internals' class is based on this, and is well worth your time (though it's a bit pricey to purchase the videos on your own: https://www.mckusick.com/courses/advorderform.html)