Learning System Programming

The best way is to get involved in, preferably, userspace/userland programming in a recently born, not yet very big, open source operating system. For example. MINIX 3, Haiku, HelenOS and there are many others.

That said, you need to read some very good books if you haven't already. When developing system software, one doesn't only need to know the theory, he/she also needs to know how to write robust code in the OS environment. Assuming most of the environments are UNIX-based and are POSIX compliant and you are doing your work on them, here is a useful list:

  1. Computer Systems - A Programmer's Perspective by Randal Bryant
  2. Advanced Programming in UNIX environment by Richard Stevens
  3. Linux Kernel Programming by Beck
  4. Unix Programming Environment by Kerningham & Pike

Book 1 is a very excellent guide to understanding program execution structure and optimizing program performance among many other very useful topics.

Book 2 gives a very good idea of IPC mechanism,file systems and buffers, performance comparison between very techniques employed (e.g. buffered I/O vs unbuffered I/O), and also point out that some hold advantage over others in specific situations. 

Book 3, as the name suggest, is an interface and starting point for getting started with Linux kernel programming. Nevertheless, it has some excellent chapters on file systems, device drivers and memory management.

Book 4 - Well, it is directed towards people who are learning C. But if someone hasn't read it yet, i would highly recommend. It shows how to write concrete, robust and small programs that often produce wonders.

These books and some hands on practice, in my experience, give a very good idea of OS level capabilities and familiarity with system level programming.

Caveat: My answer is more or less directed towards people who are just getting started with system programming or are yet to start. If you already know about the above said stuffs, you may need an expert answer to your question.

P.S. Originally answered on Quora (Link)


  1. Thanks for your ideas. You can also find the details on Affity Solutions, at the C Developers. The main object of the Affity Solutions is to provide quality web services and is among the few software development company in Nagpur.


Post a Comment