

MikeOS - simple OS you can use for learning about how OSes work - nickb
http://mikeos.berlios.de/

======
davidw
Other good ones:

eCos - it's an embedded system used in the real world, so it's not _super_
simple, but since its aims are less universal, there is less code and
therefore it's easier to follow what's going on.

Minix - this has really clear, readable code. I once needed a floppy driver
for eCos and ended up porting the minix code, because the Linux and *BSD
drivers were so hairy.

------
pmorici
This seems a little too primitive. If you want to learn about things like
preemptive multi-threading, virtual memory etc... you might be better served
looking at something like Minix or XINU. Not to mention that C code is going
to be easier to wrap your head around than all assembler.

<http://www.cs.purdue.edu/research/xinu.html>

<http://www.cs.purdue.edu/homes/dec/xsoft.html>

<http://www.minix3.org/>

------
mrtron
This reminds me of CS 350...we used Nachos, here is a good walk through.

<http://www.cs.duke.edu/%7Enarten/110/nachos/main/main.html>

I got a good laugh from the marking scheme, I had forgot all about this:

    
    
      Normal  = (0.02*A0 0.10*A1 + 0.10*A2 + 0.13*A3) + 0.20*M + 0.45*F 
      Exam    = (0.20*M + 0.45*F ) / 0.65
      Assigns = (0.02*A0 + 0.10*A1 + 0.10*A2 + 0.13*A3 )/ 0.35
    
      if ( Exam < 50% ) {
        Course Grade = min (Normal, Exam)
      } else {
        Course Grade = Normal
      }
    

Then on the first day of class they tell you if you fail the assignments, you
fail the course.

I really enjoyed taking that course, it was very interesting material.

------
carlos
I agree this is great for learning purposes, Assembler code looks like well
documented, hopefully it will keep small as it is now, I think simplicity is
the most important feature of this OS.

