Polymorphic kinds

Alastair Reid alastair@reid-consulting-uk.ltd.uk
Mon, 4 Aug 2003 18:52:54 +0100


> The ultimate goal is to write a
> prototype operating system in Haskell, using the GHC RTS as a kind of
> microkernel

As a useful stepping stone towards that goal, you might look at Utah's OSKit:

  http://www.cs.utah.edu/flux/oskit/

It gives you a bunch of useful bits like bootloaders, device drivers, 
filesystems and network stacks with well-defined interfaces which let you 
quickly get a system up and running and then gradually replace the bits. 

People have used the OSKit to build Scheme, Java and ML-based systems.  See 
the links at the end of this page:

  http://www.cs.utah.edu/flux/oskit/projects.html

I'd also recommend reading the papers about the Janos project (a Java OS) 
especially:

Processes in KaffeOS: Isolation, Resource Management, and Sharing in Java
Drawing the Red Line in Java.

both available from:

  http://www.cs.utah.edu/flux/janos/pubs.html

These talk about OS features which appear to be redundant when you work in a 
high-level, strongly-typed language but which prove to have significant value 
when you look more closely.

Finally, I recommend looking at INRIA's Devil project

   http://compose.labri.fr/prototypes/devil/

Devil is an IDL for defining the interface to devices - like what does each 
bit in a control register or interrupt mask do?  They have somewhat limited 
goals but for what they do, they are many, many, many times better than the 
status quo as exemplified by the Linux/*BSD/Windows/etc kernels.

Hope this is helpful.

--
Alastair Reid