Zoran Skoda
virtual machine

In computer science, a virtual machine is a simulation of a fixed architecture executing some sort of signaling or software. It can abstract an entire or part of hardware, firmware, a file system with some ports, devices and/or CPU and installed operating system, but it can be simply an isolated environment executing some specified class of software, or simply any installation in hardware or in another virtual machine of a specified execution model. For example, Java Virtual Machine executes formally specified “bytecode” to ensure identical execution on all hardware.

See also certified programming, WebAssembly, cslinks

Virtual machines for cloud

Virtual machine simulating machine with operating system

Containers

Containers like Docker usually denote the process level virtualization.

Record and replay

See also verified replay.

  • Robert O’Callahan, Chris Jones, Nathan Froyd, Kyle Huey, Albert Noll, Nimrod Partush, Lightweight user-space record and replay, arxiv/1610.02144 Engineering Record and replay for deployability: extended technical report arxiv/1705.05937 (mozilla rr)

  • P. Dovgalyuk, KVM deterministic replay pdf

  • Michael Walfish, Andrew J. Blumberg, Verifying computations without reexecuting them, Commun. ACM 58(2):74–84, 2015.

Live migration

  • wikipedia live migration
  • W. Mandarawi et al. QoS-aware secure live migration of virtual machines pdf
  • M. Aiash, Secure live virtual machines migration: issues and solutions, 2014 doi
  • A survey on techniques of secure live migration of virtual machine, 2012 pdf

Blockchain runtimes for multiple blockchains

Microsoft Azure develops a runtime framework intended to work on various blockchains. This is the CoCo project (see whitepaper 2017 at github pdf, announcement and a presentation on Medium).

Languages for simulation of devices

Bytecode virtual machines

Java Virtual Machine

Java VM has a specification which executes Java bytecode. Several languages compile to JVM including Java, Kotlin and Scala.

WebAssembly VM

WebAssembly is optimized for small compiling time and near native execution time on major architectures (like 86 series). It appeared first as new VM standard on web browsers, backed by major internet companies; it is also used or planned on a number of blockchain projects.

Rust has small runtime, which is desirable in common applications of WebAssembly. Thus Rust commonly compiles either to native code or to wasm.

  • Rust & WebAssembly with Nick Fitzgerald yt

Ethereum flavoured version of wasm VM specification is at github/ewasm, see also github/ewasm/design. eWasm has a testnet. According to article ewasm explained,

The ewasm specification consists of a subset of WebAssembly components suitable for Ethereum’s needs, namely determinism and relevant features. It also includes a number of system smart contracts that provide access to Ethereum platform features.

IELE

Part of Cardano project, IELE executes and verifies smart contracts as well as providing a human-readable language for blockchain developers.

  • IELE, Semantics based compilation, at iohkdev.io

Ethereum VM

Primarily used for smart contract execution on Ethereum blockchain (and some others blockchains, like Hyperledger Fabric). Ethereum community has plans to supercede it with Ethereum version of wasm VM (ewasm).

TON VM

Used for executing smart contracts on Telegram Open Network. See

CKB VM (Nervos)

This is a RISC-V VM for a Nervos blockchain design. “Uses rv64imc architecture: it is based on core RV64I ISA with M standard extension for integer multiplication and division, and C standard extension for RCV(RISC-V Compressed Instructions).” No floating point.

Aion VM

Virtual machine on Aion blockchain, running Java bytecode, according to offical docs is

a bytecode transformer and runtime library, which provides control over how developers are allowed to interact with the AVM. It isolates DApps from each other while restricting access to class libraries.

Aion kernel is in Rust see docs.

Determinism and verification of virtual machine execution

  • Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel, Accountable virtual machines pdf
  • H Liu, H Jin, X Liao, L Hu, C Yu, Live migration of virtual machine based on full system trace and replay, HPDC ‘09 Proceedings of the 18th ACM international symposium on high performance distributed computing 101-110 doi pdf

Last revised on August 12, 2019 at 11:20:39. See the history of this page for a list of all contributions to it.