1

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?

ADDENDUM

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.

closed as off-topic by gnat, GlenH7, user40980, 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.

6

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? – 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! – K'' Aug 9 '11 at 19:17
2

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

4

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. – Steve314 Jul 22 '11 at 13:39

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