Hacker News new | past | comments | ask | show | jobs | submit login
Operating System Development Series (2008) (brokenthorn.com)
166 points by networked on Aug 24, 2013 | hide | past | favorite | 16 comments



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


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



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

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


In the bad old days, 1976 and on, we used this: http://en.wikipedia.org/wiki/Lions%27_Commentary_on_UNIX_6th...

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.


Tanenbaum's ineffable "Operating Systems Design and Implementation" and MINIX (a learning OS) existed then, and was what Linus Torvalds studied before creating Linux:

http://www.amazon.com/dp/0131429388


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

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


I particularly focused on this section 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!


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


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


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


MIT's OpenCourseWare has their Operating Systems Engineering course available online : http://ocw.mit.edu/courses/electrical-engineering-and-comput...


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


yea. Me too. That would be a wonderful leap.


I did a bit of OSDev two years ago: 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.


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

http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: