[virtmach] Query about virtual machines with hardware-level abstractions/support

John Morrison jm@mak.com
Tue, 16 Nov 1999 08:39:05 -0500


Hi All;

The Short Version:

Can anybody point me at information, specifications, or
implementations for virtual machines that enable OS-level programs to
be written/run?

The Longer Version:

Disclaimer: I'm no virtual machine specialist -- I'm a systems
programmer.

Background: I'm currently working on the freeware Java OS project at
www.jos.org.  Our goal (no snickers, please) is to do as much as
possible in Java, and as little as possible in native code.  We intend
for this to include paging for virtual memory.  Current build targets
include UNIX, win32, and raw x86 PC iron.  Status is such that device
drivers for keyboard, VGA display, and floppy (more or less) work.

Obviously, we are constrained to use the JVM specification.  We are
confronting several issues, which I am attributing (perhaps
incorrectly) to the JVM specification.

(1) Given that the JVM contains no notions of interrupt-handling,
etc., we are forced to invent our own, out-of-band scheme (you might
not be so charitable as to call it a "scheme").

(2) Given that the JVM thread model is lacking a "permanent wait on
something" notion (unlike almost all of the RTOSes I have ever used),
our "scheme" is not consistent with the JVM in spirit (it's more like
an RTOS).

The Problem: Say I wanted to implement a Poor Man's Lisp Machine,
where the virtual memory pager, interrupt handlers, gc, and all those
other kinds of things were written to the virtual machine (instead of
in "microcode," as I am given to understand the original MIT CONS/CADR
LispM was -- and maybe most subsequent ones were, too).  My experience
with the JVM spec leads me to believe that the JVM spec isn't a good
guide.

The Question: So, posit that I had the luxury of starting from a blank
sheet of paper (with respect to a Virtual Machine specification).  Can
anybody characterize such a VM for me?  Are there any good examples?

Thanks,

-jm

-- 
==== John Morrison
==== MaK Technologies Inc.
==== 185 Alewife Brook Parkway, Cambridge, MA 02138
==== http://www.mak.com/
==== vox:617-876-8085 x115
==== fax:617-876-9208
==== jm@mak.com