Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.

share|improve this question

closed as off-topic by gnat, GlenH7, MichaelT, Kilian Foth, Dan Pichelman Oct 7 '13 at 19:46

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – gnat, GlenH7, Community, Kilian Foth, Dan Pichelman
If this question can be reworded to fit the rules in the help center, please edit the question.

Let's build a compiler – Robert Harvey Jul 21 '11 at 17:54
Well, aparently my google-foo just isn't as good as I thought it was. For not finding any of these I'm demoting myself from a black belt to a red belt pending any further blunders. – Jeff Langemeier Jul 21 '11 at 17:58
The two are 90% unrelated, why are they in one question? – delnan Jul 21 '11 at 18:21
up vote 6 down vote accepted

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

share|improve this answer
+1 for the dragon book. Standard reading. – tdammers Jul 21 '11 at 20:34
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? – Steve314 Jul 22 '11 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! – akram Aug 9 '11 at 19:17

Maybe this link will prove helpful:

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

share|improve this answer
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. – Steve314 Jul 22 '11 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:

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...

share|improve this answer

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