3 puntos por GN⁺ 2024-12-28 | 1 comentarios | Compartir por WhatsApp

¿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

 
GN⁺ 2024-12-28
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.

    • Sintió que así se puede aprender toda la cadena de la computación, desde el diseño de una CPU real para FPGA hasta escribir un sistema operativo simple y programas.
    • Si no se necesita el rendimiento y la seguridad de la computación moderna, este proceso es sorprendentemente simple.
  • 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.

    • Expresó su deseo de encontrar tiempo para ponerse a diseñarla.
  • Lista de libros recomendados:

    • "Virtual Machines: Versatile Platforms for Systems and Processes" de Smith y Nair - parece ser una visión general completa del tema.
    • "Virtual Machines" de Iain Craig - parece ser un libro práctico sobre lenguajes y VM.
    • "Virtual Machine Design and Implementation in C/C++" de Bill Blunden - parece ser un libro práctico de implementación.
    • Mencionó que sería útil que alguien que haya leído estos libros agregara su opinión.
  • 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.

    • Sugirió que quienes quieran aprender cómo funcionan las computadoras harían mejor en tomar un curso de sistemas operativos.
    • Si se quiere un tutorial corto, recomendó "Writing my own bootloader".
    • No es que el tutorial "Write your own VM" sea malo, sino que otros temas podrían ser más provechosos.
  • 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.

    • Explicó la diferencia entre un emulador y una VM, y mencionó que antes existía cierta ambigüedad en el término, pero que ahora ya se ha aclarado.