This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: "Abstract machine" – news · newspapers · books · scholar · JSTOR (October 2009) (Learn how and when to remove this template message)
A run of a Turing machine.
A run of a Turing machine.
Pictoral representation of a Krivine machine.
Pictoral representation of a Krivine machine.

An abstract machine, also called an abstract computer[citation needed], is a theoretical computer used for defining a model of computation.[1][2] Abstraction of computing processes is used in both the computer science and computer engineering disciplines and usually assumes a discrete time paradigm.[citation needed]

In computer science

A typical abstract machine consists of a definition in terms of input, output, and the set of allowable operations used to turn the former into the latter. The best-known example is the Turing machine.[1][2][verification needed]

More complex definitions create abstract machines with full instruction sets, registers and models of memory.[1] One popular model more similar to real modern machines is the RAM model, which allows random access to indexed memory locations. As the performance difference between different levels of cache memory grows, cache-sensitive models such as the external-memory model and cache-oblivious model are growing in importance.[citation needed]

An abstract machine can also refer to a microprocessor design which has yet to be (or is not intended to be) implemented as hardware. An abstract machine implemented as a software simulation, or for which an interpreter exists, is called a virtual machine.[1]

In the theory of computation, abstract machines are often used in thought experiments regarding computability or to analyze the complexity of algorithms. This application of abstract machines is related to the subject of computational complexity theory.

Abstract machines can also be used to model abstract data types, which can be specified in terms of their operational semantics on an abstract machine. For example, a stack can be specified in terms of operations on an abstract machine with an array of memory. Through the use of abstract machines, it is possible to compute the amount of resources (time, memory, etc.) necessary to perform a particular operation without having to construct a physical system.[citation needed][clarification needed]


Any implementation of an abstract machine must employ a physical device (mechanical, electrical, biological, etc.) to execute programming language instructions. However, the employment of such a technique can be explicit or implicit. In reality, in addition to the "physical" implementation (in hardware) of the abstract machine's structures, there is an implementation (in software or firmware) at layers intermediate between the abstract machine and the underlying physical device. As a result, there are three cases and combinations of them for creating an abstract machine.[3]

See also


  1. ^ a b c d "abstract machine from FOLDOC". Retrieved 2021-08-07.
  2. ^ a b Weisstein, Eric W. "Abstract Machine". Retrieved 2021-08-07.
  3. ^ Gabbrielli, Maurizio; Martini, Simone (2010), Gabbrielli, Maurizio; Martini, Simone (eds.), "Abstract Machines", Programming Languages: Principles and Paradigms, London: Springer, pp. 1–25, doi:10.1007/978-1-84882-914-5_1, ISBN 978-1-84882-914-5, retrieved 2022-04-03
  4. ^ D. B. Skillicorn (2005). Foundations of Parallel Programming. Cambridge University Press. p. 18. ISBN 978-0-521-01856-2.

Further reading

Jan van Leeuwen, ed. "Handbook of Theoretical Computer Science. Volume A: Algorithms and Complexity, The MIT PRESS/Elsevier, 1990. ISBN 0-444-88071-2 (volume A). QA 76.H279 1990.