|
ABSTRACT
We describe a monadic interface to low-level hardware features that is a suitable basis for building operating systems in Haskell. The interface includes primitives for controlling memory management hardware, user-mode process execution, and low-level device I/O. The interface enforces memory safety in nearly all circumstances. Its behavior is specified in part by formal assertions written in a programming logic called P-Logic. The interface has been implemented on bare IA32 hardware using the Glasgow Haskell Compiler (GHC) runtime system. We show how a variety of simple O/S kernels can be constructed on top of the interface, including a simple separation kernel and a demonstration system in which the kernel, window system, and all device drivers are written in Haskell.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
F. Bellard. QEMU. http://fabrice.bellard.free.fr/qemu/.
|
| |
2
|
|
| |
3
|
L. Cardelli, J. Donahue, L. Glassman, M. Jordan, B. Kalsow, and G. Nelson. Modula-3: Language definition. http://www.research.compaq.com/SRC/m3defn/html/complete.html.
|
| |
4
|
S. Carlier and J. Bobbio. hOp. http://www.macs.hw.ac.uk/~sebc/hOp/, 2004.
|
 |
5
|
A. M. Cheadle , A. J. Field , S. Marlow , S. L. Peyton Jones , R. L. While, Exploring the barrier to entry: incremental generational garbage collection for Haskell, Proceedings of the 4th international symposium on Memory management, October 24-25, 2004, Vancouver, BC, Canada
[doi> 10.1145/1029873.1029893]
|
| |
6
|
J. Cupitt. A brief walk thourgh KAOS. Techical Report 58, Computing Laboratory, Univ. of Kent at Canterbury, February 1989.
|
| |
7
|
Cyclone. http://www.research.att.com/projects/cyclone/.
|
| |
8
|
K. Fraser, S. Hand, R. Neugebauer, I. Pratt, A. Warfield, and M. Williamson. Safe hardware access with the Xen virtual machine monitor. In Proc. OASIS ASPLOS Workshop, 2004.
|
| |
9
|
G. Fu. Design and implementation of an operating system in Standard ML. Master's thesis, University of Hawaii, August 1999.
|
| |
10
|
Glasgow haskell compiler. http://www.haskell.org/ghc.
|
| |
11
|
Grub. http://www.gnu.org/software/grub/.
|
| |
12
|
T. Hallgren. The House web page. http://www.cse.ogi.edu/~hallgren/House/, 2004.
|
| |
13
|
Intel Corp. IA-32 Intel Architecture Software Developer's Manual Volume 3: System Programming Guide, 2004.
|
| |
14
|
Trevor Jim , J. Greg Morrisett , Dan Grossman , Michael W. Hicks , James Cheney , Yanling Wang, Cyclone: A Safe Dialect of C, Proceedings of the General Track: 2002 USENIX Annual Technical Conference, p.275-288, June 10-15, 2002
|
| |
15
|
|
| |
16
|
M. P. Jones. Bare Metal: A Programatica model of hardware. In High Confidence Software and Systems Conference, Baltimore, MD, March 2005.
|
| |
17
|
K. Karlsson. Nebula: A functional operating system. Technical report, Programing Methodology Group, University of Göteborg and Chalmers University of Technology, 1981.
|
| |
18
|
R. B. Kieburtz. P-logic: Property verification for Haskell programs. ftp://ftp.cse.ogi.edu/pub/pacsoft/papers/Plogic.pdf, August 2002.
|
 |
19
|
Sheng Liang , Paul Hudak , Mark Jones, Monad transformers and modular interpreters, Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.333-343, January 23-25, 1995, San Francisco, California, United States
[doi> 10.1145/199448.199528]
|
| |
20
|
R. Noble. Lazy Functional Components for Graphical User Interface. PhD thesis, University of York, November 1995.
|
| |
21
|
The OSKit Project. http://www.cs.utah.edu/flux/oskit/.
|
| |
22
|
The Programatica Project home page. www.cse.ogi.edu/PacSoft/projects/programatica/, 2002.
|
| |
23
|
The SPIN project. http://www.cs.washington.edu/research/projects/spin/www/, 1997.
|
| |
24
|
|
| |
25
|
L. Team. L4 eXperimental Kernel Reference Manual, January 2005.
|
| |
26
|
Video Electronics Standards Association. VESA BIOS EXTENSION (VBE) - Core Functions Standard, Version: 3.0, September 1998. www.vesa.org.
|
| |
27
|
M. Wallace. Functional Programming and Embedded Systems. PhD thesis, Dept of Computer Science, Univ. of York, UK, January 1995.
|
 |
28
|
|
CITED BY 16
|
|
|
|
|
|
|
|
Kevin Elphinstone , Gerwin Klein , Philip Derrin , Timothy Roscoe , Gernot Heiser, Towards a practical, verified kernel, Proceedings of the 11th USENIX workshop on Hot topics in operating systems, p.1-6, May 07-09, 2007, San Diego, CA
|
|
|
|
|
|
|
|
|
Philip Derrin , Kevin Elphinstone , Gerwin Klein , David Cock , Manuel M. T. Chakravarty, Running the manual: an approach to high-assurance microkernel development, Proceedings of the 2006 ACM SIGPLAN workshop on Haskell, September 17-17, 2006, Portland, Oregon, USA
|
|
|
|
|
|
Paul Hudak , John Hughes , Simon Peyton Jones , Philip Wadler, A history of Haskell: being lazy with class, Proceedings of the third ACM SIGPLAN conference on History of programming languages, p.12-1-12-55, June 09-10, 2007, San Diego, California
|
|
|
Iavor S. Diatchki , Thomas Hallgren , Mark P. Jones , Rebekah Leslie , Andrew Tolmach, Writing systems software in a functional language: an experience report, Proceedings of the 4th workshop on Programming languages and operating systems, October 18-18, 2007, Stevenson, Washington
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Daniel Frampton , Stephen M. Blackburn , Perry Cheng , Robin J. Garner , David Grove , J. Eliot B. Moss , Sergey I. Salishev, Demystifying magic: high-level low-level programming, Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, March 11-13, 2009, Washington, DC, USA
|
|
|
|
|