title: Máquina abstracta
text: # Máquina abstracta
  
  Una máquina abstracta, también llamada un computador abstracto, es un modelo teórico de un sistema computador de hardware o software usado en la teoría de autómatas. La abstracción de procesos computacionales es usada en las disciplinas de las ciencias de la computación y la ingeniería de computación y usualmente asume el paradigma de tiempo discreto.
  En la teoría de la computación, las máquinas abstractas con frecuencia son usadas en experimentos de pensamiento sobre computabilidad o para analizar la complejidad de algoritmos (ver la teoría de la complejidad computacional). Una típica máquina abstracta consiste en una definición en términos de entrada, salida y el conjunto de las operaciones permitidas usadas para convertir la primera en la segunda. El ejemplo más conocido es la máquina de Turing.
  Definiciones más complejas crean máquinas abstractas con completos conjuntos de instrucciones, registros y modelos de memoria. Un modelo popular más similar a las máquinas modernas reales es el modelo RAM, que permite el acceso aleatorio a ubicaciones de memoria indexada. A medida que crece la diferencia de rendimiento entre diferentes niveles de memoria caché, los modelos sensibles al caché como el modelo de memoria externa y el modelo ajeno del caché están creciendo en importancia.
  Una máquina abstracta puede referirse a un diseño de microprocesador que todavía está por ser (o no pretende ser) implementado como hardware. Una máquina abstracta que implementada como una simulación de software, o para la que existe un interpretador, es llamada una máquina virtual.
  Mediante el uso de máquinas abstractas es posible calcular la cantidad de recursos (tiempo, memoria, etc.) necesarios para realizar una operación en particular sin tener que construir un sistema real para hacerlo.