
Operating System Development Series (2008) - networked
http://www.brokenthorn.com/Resources/OSDevIndex.html
======
octo_t
If you are also interested in OS development, Stanford has developed Pintos[1]
which is designed to teach OS concepts: threads, system calls (and the
security thereof), virtual memory and filesystems.

[1] -
[http://www.stanford.edu/class/cs140/projects/pintos/pintos.h...](http://www.stanford.edu/class/cs140/projects/pintos/pintos.html)

~~~
lubomir
Another interesting source where to learn about implementing Unix-like OS is
JamesM's kernel development tutorial.

[http://www.jamesmolloy.co.uk/tutorial_html/index.html](http://www.jamesmolloy.co.uk/tutorial_html/index.html)

~~~
sigjuice
Xv6 is another one
[http://pdos.csail.mit.edu/6.828/2012/xv6.html](http://pdos.csail.mit.edu/6.828/2012/xv6.html)

------
computer
I wish this resource existed 10-15 years ago. I remember scavenging the
internet for information about OS development, assembly and everything.

I think in the end the best resource I found was something called "DS-OS", a
basic assembly OS implementation. Looks like it's online at
[http://forum.osdev.org/viewtopic.php?f=2&t=22083](http://forum.osdev.org/viewtopic.php?f=2&t=22083)

This stuff got me into lower-level (than VB) computer programming-- good
memories.

~~~
hga
In the bad old days, 1976 and on, we used this:
[http://en.wikipedia.org/wiki/Lions%27_Commentary_on_UNIX_6th...](http://en.wikipedia.org/wiki/Lions%27_Commentary_on_UNIX_6th_Edition,_with_Source_Code)

Unfortunately it was essentially samizdat until 1996. But it's an excellent
work, and e.g. taught me pointers when the K&R chapter on pointers and arrays
didn't work for me.

------
ersenal
I have developed a monolithic x86-32bit OS[1] for my undergraduate
dissertation[2] with the aid of Brokenthorn's and JamesM's tutorials.

The project aims to introduce OS concepts to CS students, thus the code
readability was the number one priority.

The main features include:

\- Preemptive multitasking

\- Doug Lea's Malloc as the heap manager for both Kernel and User side.

\- Read-only ram disk (which is simply a tar file passed as a GRUB module)

\- A (very) simple user Shell

[1] - [https://github.com/ersenal/Incitatus-
OS](https://github.com/ersenal/Incitatus-OS)

[2] - [https://github.com/ersenal/Incitatus-
OS/blob/master/disserta...](https://github.com/ersenal/Incitatus-
OS/blob/master/dissertation.pdf)

------
gpsarakis
I particularly focused on this section
[http://www.brokenthorn.com/Resources/OSDev18.html](http://www.brokenthorn.com/Resources/OSDev18.html)
. Although not mandatory for development, having a grasp of these concept does
give a better insight. Well done!

------
aninteger
Anything on amd64 with a focus on acpi? Pretty my a requirement for modern x86
os dev these days.

~~~
tankenmate
This site is focused only on x86 rather than x86_64. In fact you'll find that
this organisation of permissions within the kernel using 4 ring levels will
only work on x86 as most other ISAs only have two levels, supervisor and user
(ARM, MIPS, SPARC et aia).

------
zura
I'm still waiting for some good OS/Systems course from Coursera, Udacity or
EdX.

~~~
aray
MIT's OpenCourseWare has their Operating Systems Engineering course available
online : [http://ocw.mit.edu/courses/electrical-engineering-and-
comput...](http://ocw.mit.edu/courses/electrical-engineering-and-computer-
science/6-828-operating-system-engineering-fall-2006/index.htm)

~~~
zura
Yes, but there are no lecture videos. The lecture notes pdf's alone are not
enough for thorough learning.

------
dmytrish
I did a bit of OSDev two years ago:
[https://github.com/EarlGray/COSEC](https://github.com/EarlGray/COSEC)

It's still a very incomplete system: it loads, sets up IDT/GDT, uses several
simple drivers for keyboard, timers, serial interfaces, probing PCI bus, an
effort to write a floppy disk driver (I could test it on virtual machines only
though). There's a demo of multitasking, a demo of going to userspace and
doing system calls, a demo of VFS and RAM-fs (I overcomplicated it and got
stuck, but I have not rewritten it yet).

These articles were an invaluable source of information and a starting point
for design.

------
stephengillie
Slightly simpler guide for writing an OS for the RasPi (repost):

[http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/](http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/)

