Máquinas virtuais

14
Máquinas virtuais Orlando Corrêa Netto

description

Máquinas virtuais. Orlando Corrêa Netto. Agenda. Conceito de máquina virtual; Construção da máquina em função da plataforma de desenvolvimento, ao contrario da máquina física; Custo de memória de um ambiente OO; Coletor de lixo e otimizações; - PowerPoint PPT Presentation

Transcript of Máquinas virtuais

Page 1: Máquinas virtuais

Máquinas virtuais

Orlando Corrêa Netto

Page 2: Máquinas virtuais

Agenda

• Conceito de máquina virtual;• Construção da máquina em função da plataforma

de desenvolvimento, ao contrario da máquina física;

• Custo de memória de um ambiente OO;• Coletor de lixo e otimizações;• Micro arquitetura SMT (Simultaneous Multi

Threading);• Modelo de memória na presença de threads.

Page 3: Máquinas virtuais

Maquina virtual

• Máquina virtual é uma abstração, com micro instruções próximas ao de maquinas físicas

Page 4: Máquinas virtuais

Modelo de Memória

• Provê uma abstração para leitura e escrita do modelo de memória da plataforma;

• Exemplo:Double umNumero = new Double(“1.2”);

Cria uma palavra de 64 bits para representação de virgula flutuante de precisão dupla, independente da plataforma.

Page 5: Máquinas virtuais

Desalocação automática(garbage collector)

• Em Java não existem métodos para desalocação manual de memória como free e delete (c/c++);

• Ao se criar um objeto, este possui um cabeçalho (header) com atributos especiais usados pela VM e não acessiveis ao programador;

Page 6: Máquinas virtuais

Desalocação automática - Antes

• Entre estes atributos: contador de referências;

• Ao criarmos um objeto, o contador era zerado e a cada nova referência o contador era incrementado, e decrementado caso a referência fosse eliminada;

• Contador = 0 lápide;

Page 7: Máquinas virtuais

Desalocação automáticaHot spot:

• Localizar raízes: variáveis estáticas das classes carregadas e variáveis locais de métodos de execução;

• A partir das raízes, e feita a marcação: para cada raiz, seguimos suas referências recursivamente, marcando os objetos encontrados como vivos;

• O resto é lixo;

Page 8: Máquinas virtuais

Processo

1 2 3 4 5 7 8 A6 B C D E9

2 3 4 5 6 B C D9

1. Identificar raizes: {3,4, 6}2. Encontrar referências e

marcar como vivos3. Compactar head

Espaço livre

Lixo

Vivos

Page 9: Máquinas virtuais

Complicações

• O mundo que vivemos e concorrente;• Enquanto você lê esta frase, ocorrem

respiração, circulação sanguínea, etc...• Ao contrário do nosso mundo, a maioria das

linguagens tem um único fluxo de execução;

• Java e C# são exemplos de linguagens multi-thread;

Page 10: Máquinas virtuais

SMT• SMT é uma técnica que permite múltiplas threads despacharem

múltiplas instruções a cada ciclo para unidades funcionais de um processador superescalar.

• SMT combina a capacidade de despacho de múltiplas instruções das arquiteturas superescalares, com a habilidade de esconder latência das arquiteturas multithreading.

• A cada instante de tempo instruções de diferentes threads podem estar sendo executadas simultaneamente.

• Busca reduzir o número de slots de despacho não ocupados a cada ciclo (elevado em arquiteturas multithreading) e o número de ciclos em que nenhuma instrução é despachada (elevado em arquiteturas superescalares).

Page 11: Máquinas virtuais

Modelo de Memória na presença de threads

• É uma especificação do funcionamento das threads e da gerência de memória na presença de threads;

• Garante consistência da memória na presença de threads;

Page 12: Máquinas virtuais

MMT do .NET

• Imagine duas threads T1 e T2;• T1 atualiza um objeto não local, obj.x = 10;• T2 lê a variável: x = obj.x; em seguida;• Não é garantido que T2 terá o novo valor:• O código de T2 pode ter sido otimizado,

fazendo cache num registrador temporário;• Numa maquina multiprocessada, cada

processador tem seu próprios caches, Ln;

Page 13: Máquinas virtuais

• Arquiteturas Spark e Itaniun fazem reordenação de instruções do tipo:T1:W[pos] = x; ++pos; T2: x=W[pos]

T1: ++pos; W[pos-1] = x; T2: x=W[pos];

• O modelo precisa garantir a consistência mesmo na ausência de sincronização;