I have a fairly strong background in C and Assembly and I am starting to look into basic compiler and operating systems design, but my biggest problem is where I should really start, seeing as both are very large project types to undertake.

My question is, what are some good resources or good known starting points when looking at getting into either of these programming arenas?


As I've been reading along over the past few months I've found that basic principle and theory are roughly similar, it's more of a I want to get into lower level design and want to know where to start, since much of what I've been reading has been theory and I haven't ran across a large amount of practical implementation information.


3 Answers 3


I guess based on your C knowledge, you want to design a compiler for C. There is an interesting OS book for Andrew S. Tanenbaum called Modern Operating Systems. For a compiler book you should try Compilers: Principles, Techniques, and Tools. You should know that designing a new operating system is really a hard task and need a lot of experience, not just a programming experience but also you need to read a lot of researches and read the internal design of existing operating systems cause there are a lot of trade offs you can make. This for the design only, implementation is another big issue too. For compiler design, it's easier than OS design but still hard though. You need to be patient and make it a mission from the heart

  • On "really hard" - I can believe this (no experience, but enough knowledge to make an educated guess), but what about developing an OS component? For example, a file-system specification and driver? Not trivial, of course, but a reasonable goal for a learner?
    – user8709
    Jul 22, 2011 at 13:10
  • Still hard target, cause you need to understand the hardware specs for this drive, know best practices, basically be strong at programming in C or C++. Anyway, even if you didn't succeed in delivering a commercial driver, you will get a lot of knowledge!
    – K''
    Aug 9, 2011 at 19:17

Maybe this link will prove helpful: wiki.osdev.org

They offer a lot of information, especially about the problems you might face and what to consider when designing your OS.

  • 1
    Nice link, but based on my quick look, a bit thin on at least some topics. Probably not (yet) a replacement for a good textbook.
    – user8709
    Jul 22, 2011 at 13:39

Some theory on OS and OS design would be a good starting point.

This link is a great resource with code snippets included: http://people.csail.mit.edu/rinard/osnotes/

TIP: Before starting designing the OS you should have a good knowledge of computer organization. You mentioned you know Assembly programming, so I am assuming you have this knowledge already, but in case you need to brush up, a great book is Computer Organization by Carl Hamacher...

Not the answer you're looking for? Browse other questions tagged or ask your own question.