User:Lionel/James Molloy's Kernel Development Tutorials

From OSDev Wiki
Jump to navigation Jump to search

This page is under construction! This page or section is a work in progress and may thus be incomplete. Its content may be changed in the near future.

James Molly's Kernel Development Tutorials are a set of 10 tutorials written in C that teach and guide an individual on how to create a unix-style kernel. This tutorial, while notorious for several bad design decisions, is still a great learning resource. It can be seen as a successor to Bran's Kernel Development Tutorials.

Design Choices

The kernel created with this tutorial has some... interesting design choices. In this context "interesting" equals "potentially destructive". http://wiki.osdev.org/James_Molloy%27s_Tutorial_Known_Bugs points out most of them.

The Tutorial

The tutorial can be accessed at http://www.jamesmolloy.co.uk/tutorial_html/index.html

Google Code Version

There is an experimental version of the tutorial avalable at https://code.google.com/p/jamesm-tutorials/ . The tutorial seems to be more advanced, to the point of even including a working printf implementation.


Analysis of the tutorial

This tutorial implements:

  • A bootable kernel
  • A text mode terminal
  • Segmentation
  • Interrupts & (x86) Exception support
  • The PIT
  • Paging
  • A kernel heap
  • A Virtual Filesystem & Initrd
  • Preemptive Multitasking
  • Usermode (Ring 3)


Customising the Kernel

The Screen

I would recommend changing the function names to your liking. I would also recommend implementing printf().

Paging

Create your own paging implementation, as this one makes several bad design decisions which can cripple a kernel in the long run.

The heap

Create your own memory allocation system or use a premade one.

VFS & Initrd

Create your own Initrd filesystem.