Bill has written much of the code necessary to provide virtual machines. I speculate here about what sort of object that code should be part of.
Following IBM's VM/370 ideas, a virtual machine consists of:
Some definite size of main storage
For each 12 bit I/O device address, a reference to some Gnosis object that presumably emulates some particular IBM style I/O device according to a protocol yet to be written down
A "CP directory" that is a different mapping of 12 bit I/O device addresses to I/O objects
A RDR queue that emulates the things described by VM/370 in response to the command "Q RDR ALL"
A printer queue for that described by "Q PRT ALL" (and PCH too)