
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