¿Qué es una máquina virtual?
- Una máquina virtual (VM) es un programa que funciona como una computadora. Simula una CPU y algunos componentes de hardware para poder realizar operaciones aritméticas, leer y escribir en memoria e interactuar con dispositivos de E/S.
- Una VM se crea para reproducir el comportamiento de una computadora específica o para facilitar el desarrollo de software.
- La Java Virtual Machine (JVM) es un ejemplo exitoso, ya que permite ejecutar programas de Java, Kotlin y Clojure en distintos dispositivos.
Arquitectura LC-3
- LC-3 es una arquitectura de computadora educativa que muestra los conceptos principales utilizados en las CPU modernas.
- LC-3 tiene 65,536 ubicaciones de memoria, y cada una almacena un valor de 16 bits.
- Tiene 10 registros; de ellos, 8 son registros de propósito general, 1 es el contador de programa (PC) y 1 es el registro de banderas de condición (COND).
Conjunto de instrucciones
- Una instrucción es una orden que le indica a la CPU la operación básica que debe realizar.
- LC-3 tiene 16 opcodes, y cada instrucción está compuesta por 16 bits.
- Las instrucciones están formadas por un opcode y los parámetros necesarios para la operación.
Banderas de condición
- El registro R_COND almacena las banderas de condición que indican el signo del cálculo más reciente.
- LC-3 utiliza 3 banderas de condición para representar el signo del resultado de un cálculo.
Ejecución del programa
- Un programa carga instrucciones desde la memoria, incrementa el registro PC, verifica el opcode y ejecuta la instrucción.
- Las instrucciones pueden controlar el flujo de ejecución modificando el PC.
Implementación de instrucciones
- La instrucción ADD suma dos números y guarda el resultado en un registro.
- La instrucción LDI carga un valor desde la memoria y lo guarda en un registro.
- Cada instrucción se implementa según la especificación y debe actualizar las banderas.
Rutinas trap
- LC-3 ofrece rutinas trap para realizar tareas comunes, como entrada por teclado y salida de cadenas.
- Cada rutina trap se identifica mediante un código trap y se ejecuta con la instrucción TRAP.
- Las rutinas trap están escritas en C y mejoran el rendimiento de la VM al aprovechar las rutinas de E/S del sistema operativo.
1 comentarios
Comentarios de Hacker News
Un usuario comentó que, mientras tomaba una clase introductoria de ciencias de la computación en un community college, diseñó un conjunto simple de instrucciones de CPU y escribió una VM y un ensamblador para ejecutar programas en ensamblador. Ese proceso le ayudó a entender muchas cosas sobre las computadoras.
Hubo una opinión de alguien que, después de ver la serie de CPU en protoboard de Ben Eater, quiso diseñar y emular su propia CPU.
Lista de libros recomendados:
Hubo una opinión de que arquitecturas educativas como Brookshear Machine y Little Computer son diferentes de las reales y pueden dar a los estudiantes una comprensión distorsionada.
Hubo una opinión de que el término "Virtual Machine" hoy en día generalmente se usa para referirse a un entorno que utiliza funciones de virtualización de hardware.