Intrinsic Compatibility in Process Virtual Machines
Nidhi Aggarwal, James E. Smith
A Process Virtual Machine (VM) provides an execution environment for a guest user application program on a host platform that may differ from the guest's native platform. Informally, virtualization is compatible if there is no observable difference between the execution of a program on its native platform and as a guest on a process VM. We describe a general framework for modeling process VMs and discussing compatibility issues. A VM is intrinsically compatible if virtualization is compatible for all applications, under all conditions. Using the process VM framework we assert that an intrinsically compatible process VM must dynamically check for all exception conditions that are not checked with static analysis. We then define an efficient process VM to be one where binary translation is used for emulation, and 1) dynamic exception checking is done implicitly by virtue of executing host instructions that result from binary translation, and 2) no spurious memory permission traps occur when binary translated code is executed. These properties are consistent with the way current process VMs like Dynamo, DynamoRIO, IA-32EL, and Fx!32 are implemented. Based on the first of these properties we assert that an efficient VM, while emulating guest code, cannot access any readwrite memory area beyond that corresponding to the guest's original read/write memory region. This implies that the host register file must at least be as big as the guest register file. The host ISA must also support an "execute only" permission for runtime pages. The second property leads to the assertions that the host virtual address space must be larger than the guest virtual address space, and the host permission types must be a superset of the guest permission types. Given the assertions, we discuss the implications for the construction of efficient, intrinsically compatible process VMs and dynamic binary optimizers.
Download this report (PDF)
Return to tech report index