A Arquitetura da Máquina Virtual .NET - IC

Propaganda
A Arquitetura da Máquina Virtual .NET
Marcelo Coutinho Cordeiro
RA002092
Roteiro






Introdução
Objetivo
Arquitetura
Sistema de Execução Virtual
Aspectos Estruturais
Tratamento de Exceções
Introdução





Framework .NET
Uso de máquinas virtuais
Independência da arquitetura do computador
Common Language Runtime (CLR)
Suporta mais de 40 linguagens diferentes
Objetivo

Apresentação da arquitetura da máquina virtual do
framework .NET e suas peculiaridades.
Arquitetura





Linguagens intermediárias: MSIL, e OptIL
Compiladores Just-in-Time
Carregamento de classes
Verificação
Checagens de Segurança
Linguagens Intermediárias





Microsoft Intermediate Language (MSIL)
Conjunto de instruções baseado em pilha
Construções orientadas a objetos: chamada de
métodos virtuais, alocação e inicialização de objetos
Suporte a programas Typesafe.
OptIL, subconjunto de MSIL
Compiladores JIT
Carregamento de Classes



Carrega uma implementação em MSIL, ou
OptIL para a memória.
Verifica a consistência esperada por outras
classes previamente carregadas.
Prepara a execução
Verificação

Programas Typesafe:
–
–


Referenciam somente memória alocada para eles
Acessam objetos somente através de sua
interface pública
Mecanismo de segurança que verifica se o
código é typesafe.
Usada em conjunto com metadados de tipo,
a Verificação garante type safety dos
programas em MSIL.
Checagens de Segurança

Checagem Declarativa
–
–

Automaticamente ativada quando um método é
invocado.
Checa-se as permissões, armazenadas em
metadados
Checagem Imperativa
–
Ocorre quando funções de segurança, como a
verificação de um código de acesso, é invocada a
partir de um código protegido
Sistema de Execução Virtual


Ambiente para execução do código
Onde ocorre o carregamento de classes,
verificação, compilação JIT, e gerenciamento
de código
Aspectos Estruturais



Estrutura do Executável
Fluxo de Controle
Invocação de Métodos
Estrutura do Executável

Composto das seguintes informações:

As instruções que compõem o corpo do método,
incluindo todos manipuladores de exceção.

A assinatura do método, que especifica o tipo de
retorno, o número e a ordem dos parametros, e o tipo
de cada um dos argumentos.

O array de tratamento de exceções.

O tamanho da pilha de execução do método.

O tamanho dos arrays locais do método.
Fluxo de Controle


MSIL oferece grupo variado de opções de
instruções para se alterar o fluxo normal de
execução (branches, return, chamadas de
métodos)
Possui restrições nas transferências de
controle.
–
–
Só transmite o controle para fora de uma região
protegida através de uma exceção.
Só se transfere o controle para uma região de
cláusula catch, ou finally usando exceções.
Invocação de Métodos




Uso de três instruções: call, calli, callvirt
CALL: usada quando endereço de destino é
fixado em tempo de ligação.
CALLI: usada quando endereço de destino é
fixado em tempo de execução.
CALLVIRT: usada para invocar métodos
abstratos.
Tratamento de Exceções



Baseado em objetos de exceção, e blocos
protegidos de código.
Quatro manipuladores de exceção para
blocos protegidos: finally, fault, type-filtered,
e user-filtered.
ExecuteEngineException para
inconsistências inesperadas pela CLR.
Download