Virtual machine design and high-level implementation languages
Abstract
System programming tasks such as implementing language virtual machines (VMs), are, by convention, associated with low-level programming languages, such as C/C++. Low-level programming languages provide efficient semantics to directly access hardware resources, thus are naturally a good choice for system programming. However, there are two trends in system programming that are questioning this convention, challenging the ruling role of low-level languages in this field. On one hand, increasing hardware complexity requires languages to provide abstraction over complicated and diverse architectures. On the other hand, software size and complexity is also increasing as hardware evolves, leaving security, correctness and productivity as an even bigger challenge. Thus, efforts have been made to use higher-level languages to perform system programming in order to improve safety, productivity and correctness, as well as to maintain competitive performance. Research has confirmed the feasibility and performance of implementing language virtual machines in high-level languages. The idea is novel and compelling. However, it leaves a trail of software engineering challenges, such as unclear VM/ application context and poor portability, which may in return hamper the benefits that come with high-level languages. My thesis is that imposing clearly defined constraints on code structure, context transition, and language features addresses important software engineering pitfalls that arise when using high-level languages to design and implement flexible and efficient virtual machines. This thesis is divided into two parts, each addressing a major software engineering pitfall in the area of system programming with high-level languages: 1) clarifying VM/ application interdependencies both statically (reflected by code structure and annotations) and dynamically (maintained as run-time information) with very low overhead; and 2) defining a restricted language called RJava, a restricted but still expressive subset of Java suitable for implementing VM components where portability and bootstrapping are major concerns. Two key factors of system programming with high-level languages that former research paid great attention to are expressiveness of high-level languages and performance, while they paid less attention to software engineering concerns. This thesis focuses on two of the software engineering pitfalls, and shows that they can be fixed while preserving both expressiveness and performance. This thesis should help those designing new virtual machines and help improve existing ones, and so encourage the implementation of virtual machines in high-level languages.
Description
Keywords
Citation
Collections
Source
Type
Book Title
Entity type
Access Statement
Open Access
License Rights
Restricted until
Downloads
File
Description