An Extensible Virtual Machine Architecture
Timothy L. Harris · 1999
In this paper I present a new approach to designing virtual machines. I argue that the monolithic structure of existing systems leads to unnecessarily rigid high-level abstractions being imposed on applications. In contrast, I propose an extensible approach within which key parts of the virtual machine can be updated independently of one another. Furthermore, the proposed approach allows untrusted application code to replace low-level components of the virtual machine, such as the thread scheduler or memory allocation subsystem. Introduction 1 Recent work in the operating systems and programming languages communities has discussed the common ground between virtual machines (VMs) and operating systems (OSs). Until now, this discussion has concentrated on supporting multiple applications over a single VM. For example, how should applications be protected from one another? [BH99] How should resource usage be accounted to applications [CvE98] and how can this accounting be handled fairly...