Jump to content

Cross-platform virtualization

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Guy Harris (talk | contribs) at 22:39, 8 March 2019 (There are instruction sets, and there are CPUs, which are implementations of (one or more) instruction set(s). These days, code can be made to run on multiple different CPUs, as long as they share an instruction set (if you're careful about which additions to the instruction set are used). The issue with cross-platform here is different instruction sets.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Cross-platform virtualization is a form of computer virtualization that allows software compiled for a specific instruction set and operating system to run unmodified on computers with different CPUs and/or operating systems, through a combination of dynamic binary translation and operating system call mapping.

Since the software runs on a virtualized equivalent of the original computer, it does not require recompilation or porting, thus saving time and development resources. However, the processing overhead of binary translation and call mapping imposes a performance penalty, when compared to natively-compiled software. For this reason, cross-platform virtualization may be used as a temporary solution until resources are available to port the software. Alternatively, cross-platform virtualization may be used to support legacy code, which running on a newer and faster machine still maintains adequate performance even with virtualization overhead.

By creating an abstraction layer capable of running software compiled for a different computer system, cross-platform virtualization characterizes the Popek and Goldberg virtualization requirements outlined by Gerald J. Popek and Robert P. Goldberg in their 1974 article "Formal Requirements for Virtualizable Third Generation Architectures".[1] Cross-platform virtualization is distinct from simple emulation and binary translation - which involve the direct translation of one instruction set to another - since the inclusion of operating system call mapping provides a more complete virtualized environment. Cross-platform virtualization is also complementary to server virtualization and desktop virtualization solutions, since these are typically constrained to a single instruction set, such as x86 or Power ISA. Modern variants of cross-platform virtualisation may employ hardware acceleration techniques[2] to offset some of the cost incurred in the guest-to-host system translation.

See also

References

  1. ^ Gerald J. Popek and Robert P. Goldberg (1974). "Formal Requirements for Virtualizable Third Generation Architectures". Communications of the ACM. 17 (7): 412–421. doi:10.1145/361011.361073.
  2. ^ Spink, Tom; Wagstaff, Harry; Franke, Björn (2016-12-28). "Hardware-Accelerated Cross-Architecture Full-System Virtualization". ACM Transactions on Architecture and Code Optimization (TACO). 13 (4): 36. doi:10.1145/2996798. ISSN 1544-3566.