Advanced Linux Programming
I stumbled upon a book called Advanced Linux Programming - by Mark Mitchell, Jeffrey Oldham, and Alex Samuel - while reorganizing my Dropbox folder. I started reading the first few pages and got hooked to it, thereby spending the rest of the Sunday reading and trying things out from it. I always wanted to learn about operating systems but wasn’t able to find the resources for it. Berkeley has a nice set of video lectures on operating systems but I felt it was too theoretical and abstract. While there is nothing wrong with that, I couldn’t fathom watching 20 one hour lectures on the topic. I had read the Operating Systems book by Silberschatz earlier and that was a bit boring and I still had no clue about how various system calls in *nix systems worked.
This book is more practical and deals with GNU/Linux specifically though the ideas/APIs are portable to most Unix based systems including OSX (There are some caveats though like the proc filesystem and static linking won’t work on a Mac). It has all you want to know about linking, loading, make files, signals, processes, forking, threading, IPC, filesystems, memory management and more presented in a very readable fashion. So if you feel that whatever you are programming on is too high level and the real things are abstracted away from you, go ahead and grab a copy of this book or download it here.