1 / 14

Máquinas virtuais

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;

evonne
Télécharger la présentation

Máquinas virtuais

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Máquinas virtuais Orlando Corrêa Netto

  2. 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.

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

  4. 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.

  5. 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;

  6. 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;

  7. 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;

  8. Processo 1 2 3 4 5 6 7 8 9 A B C D E Espaço livre Lixo Vivos 2 3 4 5 6 9 B C D • Identificar raizes: {3,4, 6} • Encontrar referências e marcar como vivos • Compactar head

  9. 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;

  10. 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).

  11. 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;

  12. 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;

  13. 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;

  14. Referências • http://discuss.develop.com/archives/wa.exe?A2=ind0203B&L=DOTNET&P=R375 • http://www-106.ibm.com/developerworks/library/j-jtp02244.html?ca=dgr-lnxw07JMMP1

More Related