Abstract
<произвольный пример текста>
Virtual machines are an important component of modern portable environments such as
Inferno and Java because they provide an architecture-independent representation of
executable code. Their performance is critical to the success of such environments, but
they are difficult to design well because they are subject to conflicting goals. On the
one hand, they offer a way to hide the differences between instruction architectures; on
the other, they must be implemented efficiently on a variety of underlying machines. A
comparison of the engineering and evolution of the Inferno and Java virtual machines
provides insight into the tradeoffs in their design and implementation. We argue that the
design of virtual machines should be rooted in the nature of modern processors, not
language interpreters, with an eye towards on-the-fly compilation rather than
interpretation or special-purpose silicon.
Standard item 1
Standard item 2
Closed item
Opened item
Subitem 1
Subitem 2
In early 1995, we set out to apply the ideas of the Plan 9 operating system [1] to a
wider range of devices and networks. The resulting system, Inferno [2], is a small
operating system and execution environment that supports
application portability across a wide variety of processors and operating systems. Unaware
of the contemporary work to establish Java [3] from the technology of the Oak project, we
independently concluded that a virtual
machine (VM) was a necessary component of such a system [4]. Because of improvements in
processor speed and the feasibility of on-the-fly compilers, a VM can execute quickly
enough to be economically viable. |