Resources to develop an operating system

Operating SystemOsdev

Operating System Problem Overview


I'm planning to write an operating system and I don't know very much about operating systems. Are there any good resources or books to read in order for me to learn? What are your recommendations?

Operating System Solutions


Solution 1 - Operating System

We used Andrew Tannenbaum's Modern Operating Systems at the university I attended. I highly recommend it for it's clear explanations of the tradeoffs inherent in many of the design decisions that you'll run up against. This book is a little bit more "fair and balanced" than the Minix book.

alt text

I also recommend this book because, despite his net-famous flame war with Linus Torvalds, few of his biases come through in the book. Also, he's a pretty decent writer, and the book is actually entertaining.

Solution 2 - Operating System

Operating Systems Implementation Prentice Software

alt text

This book is written by Tanenbaum, the main guy behind Minix, which is what Linux was based on. It provides good overviews for basic OS concepts like memory management, file systems, processes, etc. The concepts in this book book are intimately tied to examples of the Minix OS, which is a good thing.

I think you should start by something like that.

Solution 3 - Operating System

Similar threads on this very site:

Solution 4 - Operating System

Operating System Concepts is the book we used at University. It's quite ugly BUT the information inside are well explain (from basic memory management, to how to OS decide what to execute or how to avoid deadlock). Pretty wide.

alt text

Solution 5 - Operating System

Os dev website is rich in information if you want to start coding your own OS too,

Solution 6 - Operating System

Solution 7 - Operating System

Take a look at HelenOS, which is a from scratch microkernel based OS that aims to be a fully modern OS. Disclamer, I'm a contributor, I'm working on its shell from scratch.

HelenOS has been ported to ia32/64, SPARC, ARM and more, its very well designed and easy to read. Its still in its infancy but shows one possible design that really takes advantage of the microkernel design and solves many issues in a microkernel implementation (such as IPC).

It also includes scripts that automatically set up a proper tool chain needed for cross compiling. Its very easy to build and runs very well in most simulators (i.e. QEMU) or bare metal.

I would also study L4, Minix3 and the GNU HURD (based on Mach), the latter being an illustration of design pitfalls when trying to leverage a microkernel.

If you want to go the monolithic route, just study Linux.

Solution 8 - Operating System

I'd highly recommend taking a look at the http://pdos.csail.mit.edu/6.828/2008/">MIT Operating Systems class. It's got lots of useful references, and a bunch of lab exercises which you can play around with (including automated grading scripts, so you don't have to be an MIT student to do them).

Solution 9 - Operating System

textbook

I used Operating Systems and Middleware: Supporting Controlled Interaction when I was in college. It is probably one of the best textbooks on the subject.

Solution 10 - Operating System

Solution 11 - Operating System

Developing Your Own 32-Bit Operating System by Richard A. Burgess. Went into great details about boot loaders, setting up those strange memory and process management registers, etc. It was a great read back in 1996 when i thought i'd take a crack at writing a simple OS from scratch, but may be dated by now, dealing only with the first few generations of Pentium-class CPUs.

Solution 12 - Operating System

If I remember correctly, the Powerup to Bash Prompt HOWTO contained a lot of information that looked like it would be useful for this. So did older versions of the Linux From Scratch HOWTO, but in recent versions that has been removed.

You'll also find a lot of good information in Understanding the Linux Kernel.

Solution 13 - Operating System

I would recommend looking at embedded operating systems and building an embedded OS. It will deal with the core concepts without the overhead of a modern desktop CPU.

I wrote a multitasking embedded OS last spring as a final project, it's easier than you might think.

Solution 14 - Operating System

You should look into MINIX 3. This is an operating system that was written in, I believe, less than 10,000 lines. You can get a very good idea of how an OS works with the aid of one of Tanenbaum's books and understanding how MINIX 3 works. You could go straight to Linux, but I think this is a useful task and really helps you see how it really doesn't take that many lines to build a working OS.

http://www.minix3.org/

Solution 15 - Operating System

Apart from books, there are many sites that learn OS Development
BrokenThorn Entertainment is on of this website that learn OS dev from base

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAgusti-NView Question on Stackoverflow
Solution 1 - Operating SystemBill the LizardView Answer on Stackoverflow
Solution 2 - Operating SystemPatrick DesjardinsView Answer on Stackoverflow
Solution 3 - Operating SystemPhiLhoView Answer on Stackoverflow
Solution 4 - Operating SystemPatrick DesjardinsView Answer on Stackoverflow
Solution 5 - Operating SystemPatrick DesjardinsView Answer on Stackoverflow
Solution 6 - Operating SystemForedeckerView Answer on Stackoverflow
Solution 7 - Operating SystemTim PostView Answer on Stackoverflow
Solution 8 - Operating SystemAdam RosenfieldView Answer on Stackoverflow
Solution 9 - Operating SystemTimView Answer on Stackoverflow
Solution 10 - Operating SystemAdriano Varoli PiazzaView Answer on Stackoverflow
Solution 11 - Operating SystemDarenWView Answer on Stackoverflow
Solution 12 - Operating SystemskiphoppyView Answer on Stackoverflow
Solution 13 - Operating SystemPaul NathanView Answer on Stackoverflow
Solution 14 - Operating SystemBobbyShaftoeView Answer on Stackoverflow
Solution 15 - Operating SystemAminMView Answer on Stackoverflow