O que é uma máquina virtual?
- Uma máquina virtual (VM) é um programa que funciona como um computador. Ela simula a CPU e alguns componentes de hardware para realizar operações aritméticas, ler e escrever na memória e interagir com dispositivos de E/S.
- VMs são criadas para reproduzir o comportamento de um computador específico ou para facilitar o desenvolvimento de software.
- A Java Virtual Machine (JVM) é um exemplo bem-sucedido, permitindo executar programas em Java, Kotlin e Clojure em diversos dispositivos.
Arquitetura LC-3
- LC-3 é uma arquitetura de computador educacional que demonstra os principais conceitos usados em CPUs modernas.
- O LC-3 possui 65.536 posições de memória, e cada posição armazena um valor de 16 bits.
- Há 10 registradores: 8 registradores de uso geral, 1 contador de programa (PC) e 1 registrador de flags de condição (COND).
Conjunto de instruções
- Instruções são comandos que dizem à CPU quais operações básicas executar.
- O LC-3 tem 16 opcodes, e cada instrução tem 16 bits de comprimento.
- As instruções são compostas por um opcode e pelos parâmetros necessários para a operação.
Flags de condição
- O registrador R_COND armazena flags de condição que indicam o sinal do cálculo mais recente.
- O LC-3 usa 3 flags de condição para indicar o sinal do resultado de um cálculo.
Execução do programa
- Um programa carrega instruções da memória, incrementa o registrador PC, verifica o opcode e executa a instrução.
- As instruções podem controlar o fluxo de execução alterando o PC.
Implementação de instruções
- A instrução ADD soma dois números e armazena o resultado em um registrador.
- A instrução LDI carrega um valor da memória e o armazena em um registrador.
- Cada instrução é implementada de acordo com a especificação e deve atualizar as flags.
Rotinas de trap
- O LC-3 fornece rotinas de trap para executar tarefas comuns, como entrada pelo teclado e saída de strings.
- Cada rotina de trap é identificada por um código de trap e executada pela instrução TRAP.
- As rotinas de trap são escritas em C e melhoram o desempenho da VM ao aproveitar as rotinas de E/S do sistema operacional.
1 comentários
Comentários do Hacker News
Um usuário contou que, em uma disciplina introdutória de ciência da computação em um community college, projetou um conjunto simples de instruções de CPU, escreveu uma VM e um assembler, e executou programas em assembly. Esse processo o ajudou a entender muita coisa sobre computadores.
Houve quem dissesse que, depois de assistir à série de CPU em breadboard do Ben Eater, passou a querer projetar e emular sua própria CPU.
Lista de livros recomendados:
Houve a opinião de que arquiteturas educacionais como Brookshear Machine e Little Computer são diferentes da realidade e podem passar uma compreensão distorcida aos estudantes.
Houve a opinião de que, hoje em dia, o termo "Virtual Machine" normalmente se refere a um ambiente que usa recursos de virtualização de hardware.