Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina...

39
Máquinas Virtuais Danilo Silva Marshall Érika R. C. de Almeida

Transcript of Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina...

Page 1: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

Máquinas Virtuais

Danilo

Silva M

arshall

Érika

R. C. de Alm

eida

Page 2: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

Tópicos abordados

�Introduçã

o

�Tipos de m

áquinas virtuais

�Máquina virtual J

ava

(Ja

va Virtual M

ach

ine)

�Máquina virtual .NET

�Referências

Page 3: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

Tópicos abordados

�Introduçã

o

�Tipos de m

áquinas virtuais

�Máquina virtual J

ava

(Ja

va Virtual M

ach

ine)

�Máquina virtual .NET

�Referências

Page 4: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

4

Introdução:

O que é m

áquina virtual?

�É o nome que se

dá a um ambiente, co

mo um

programa ou sistema operacional,

que não existe

fisicamente,

mas

sim é

criado dentro de outro

ambiente

–Máquinas

virtuais: h

ósp

ede

(gues

t)

–Ambiente: h

osped

eiro (hos

t)

Page 5: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

5

Introdução:

Para que é usada uma máq

uina virtual?

�Criadas para p

ossibilitar a e

xecu

ção d

e u

m conjunto

de instruçõ

es (instructionset) q

ue d

ifere d

o conjunto

de in

struçõ

es do ambiente hosp

edeiro

�Com freqüência os

ambientes

hosp

edeiros

rodam

várias máquinas virtuais sim

ulta

neamente, exa

tamente

como faze

m com programas co

muns

–Recu

rsos

virtuais in

dep

end

em dos recu

rsos fís

icos

Page 6: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

Tópicos abordados

�Introduçã

o

�Tipos de m

áquinas virtuais

�Máquina virtual J

ava

(Ja

va Virtual M

ach

ine)

�Máquina virtual .NET

�Referências

Page 7: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

7

Tipos de m

áquinas virtuais

�Hardware

�Linguagens de Alto

Nível

Page 8: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

8

Máquina virtual d

e Hardware

�Camada de virtualizaçã

ofica no topo do hardware,

exp

ortando a abstraçã

o da m

áquina a ser virtualizada,

como a CPU e a memória,

para as

camadas

superiores

�Exe

mplo:

–VMware

Page 9: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

9

Máquina virtual de Linguagem de Alto Nível

�Problemas

de co

mpilaçã

o co

m dife

rentes

sistemas

operacionais e arquite

tura

�A m

áquina virtual cria uma camada de software entre

o programa e o

sistema operacional:

agora,

o programa funciona sobre a m

áquina virtual e esta se

enca

rrega dos detalhes esp

ecífic

os de relacionamento

com o sistema operacional

e da arquite

tura da

máquina real

Page 10: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

10

Máquina virtual de Linguagem de Alto Nível

Page 11: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

11

Máquina virtual de Linguagem de Alto Nível

�Exe

mplos:

–Máquina virtua

l Java

�Java Virtual Machine(JVM)

–Máquina virtua

l .NET

Page 12: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

Tópicos abordados

�Introduçã

o

�Tipos de m

áquinas virtuais

�Máquina virtual J

ava

(Ja

va Virtual M

ach

ine)

�Máquina virtual .NET

�Referências

Page 13: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

13

Máquina virtual Java

�A linguagem Java

é uma linguage

m de alto

nível

orientada

a

objetos,

que

foi

conc

ebida com

a p

ortabilidade send

o u

m

de seus

pilares

�Objetivo de que os

des

envo

lvedores

se

preocu

pem

mais co

m o

sistema

a se

r dese

nvo

lvido e não

prop

riamen

te co

m o

ambiente em

que ele se

rá exe

cutado,

obtend

o isso

atravé

s do d

ese

nvo

lvim

ento

base

ado em uma m

áqu

ina virtual

Page 14: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

14

Máquina virtual Java:

Características

�Resp

onsá

vel p

or:

–Indepe

ndê

ncia de hardware e sistema operaciona

l

–Pequeno ta

manho do código compilado

–Protege

r us

uários

de program

as m

alicioso

s (tem um controle

muito

fino sob

re as açõ

es liberadas

para o cód

igo que está

roda

ndo

na m

áquina virtua

l)

Page 15: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

15

Máquina virtual Java:

Linguagens de Programação

�Além da linguagem Java

, pode ser usa

das:

–Linguage

ns d

e m

acro e

corresp

ond

entes pré-proc

essa

dores

(Ex: JPP)

–Linguage

ns fu

nciona

is (Ex: Lisp, S

chem

e)

–Linguage

ns Lógicas

(Ex: Prolog)

–Linguage

ns de Script (Ex: Jython)

Page 16: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

16

Máquina virtual Java:

Funcionamento

�Os programas escritos em Java

são compila

dos para

uma linguagem interm

ediária ch

amada bytecode

atravé

s do javac(compila

dor Ja

va)

�O interpretador Ja

va então traduz o bytecodegerado

para o co

njunto de instruçõ

es

que a máquina

hosp

edeira pode entender

–A máquina virtual Ja

va nada sa

be so

bre a lingua

gem de

programaçã

o Ja

va, entend

e s

omente o

arquivo .class, que

com contém os bytecodes, e

uma ta

bela de sím

bolos

�Conjunto de arquivos .class: .ja

r(Java

archive)

Page 17: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

17

Máquina virtual Java:

Funcionamento

Page 18: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

18

Máquina virtual Java:

Garbage-collectedheap

�Cada program

a rod

ado

na JVM

possui

uma

quan

tidade

de

memória

rese

rvada

em

form

a de heap

�Instânc

ias de

classes

, pilhas e

vetores sã

o aloca

dos

�Geren

ciamento

de

mem

ória

automático:

–Garbage-collectoraloca

esp

aço

no endereça

mento de m

emória

–Cria grafo de memória não

utilizado

–Coleta de lixo é feita

co

m

background thread

Page 19: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

19

Máquina virtual Java:

Registradores

�Semelhantes ao de uma m

áquina real

�Argumentos sã

o passados pela pilh

a

�Funçã

o: manter o estado da m

áquina, a cada linha de

bytecodelid

o, eles sã

o atualizados

–Registrado

r PC (U

m pa

ra ca

da thread

da máqu

ina virtual

Java

):

�Método não-nativo (i.e

., im

plemen

tado

em bytecodes): o

pcco

nterá o endereç

o da in

struçã

o se

ndo exe

cutada

�Método nativo: o

valor des

te registrad

or pcse

rá in

defin

ido

Page 20: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

20

Máquina virtual Java:

Pilh

a

�Esq

uema de last-infirst-out(LIFO)

�Cada thread

possui su

a p

ilha, que é

criada juntada

com a thread

�O elemento arm

aze

nado é chamado frame(quadro)

�Arm

aze

na variáve

is loca

is e resu

ltados parciais, além

de lidar co

m a in

voca

ção e retorno de m

étodos

�Pode se

r de tamanho fixo ou se

r dinamicamente

exp

andida

ou

reduzida

de

aco

rdo

com

as

nece

ssidades do programa

Page 21: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

21

Máquina virtual Java:

Pilh

a

�Exceçõ

es:

–Pilha

requer

tamanho

maior

do

que

o

perm

itido:

StackOverflowError

–Precisa

se

r dinamicam

ente exp

andida,

mas

o existe

memória

suficiente para

tal

ou ainda não

mem

ória

suficiente para criar uma nova

pilha: OutOfmemoryError

�Registradores:

–Optop: a

ponta para o to

po da pilha de exe

cuçã

o de operando

s–Vars: a

ponta para a seç

ão de variáve

is lo

cais

–Frame: a

ponta para a seçã

o de ambiente de exe

cuçã

o, u

sada

para gerenciar as op

eraç

ões

da própria pilha

Page 22: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

22

Máquina virtual Java:

Frames

�Conjunto de dados mantid

o dentro da pilha

–Aco

plamen

to dinâmico de m

étodos e objetos (dynamiclinking)

–Retorno de m

étodos

(restau

rar registrado

res)

–Geraç

ão

de exceç

ões

(em aco

plamento dinâmico ou

em

tempo

de exe

cuçã

o)

�DynamicLinking: ca

da quadro possui uma referência

para a tabela de símbolos, de form

a a realizar a

ligaçã

o sim

bólica aos métodos e suas referências em

tempos

de

exe

cuçã

o,

carreg

ando

classes

sob

demanda e reso

lvendo símbolos

na medida da

nece

ssidade

–Polim

orfismo

Page 23: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

23

Máquina virtual Java:

RuntimeConstant Pool

�Tabela de Sím

bolos

�Contém vários tip

os de constantes:

–Valores núm

erico

sco

nhec

idos em te

mpo de co

mpilaçã

o

–Referênc

ias

a métodos

e ca

mpos

a

serem reso

lvidos

em

tempo

de exe

cuçã

o

�Está aloca

da na área de m

étodos

�Construída toda v

ez

que u

ma c

lass

e o

u interface

é

criada pela m

áquina virtual Java

Page 24: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

24

Máquina virtual Java:

Área de m

étodos

�Compartilh

ada por todas as threads

�Guarda estruturas das classes, como:

–Conjunto de cons

tantes em

tempo de exe

cuçã

o

–Campo

s e dad

os de m

étodo

s

–Código de m

étodos

e cons

trutores

�Quaisquer inform

açõ

es de debug do m

étodo também

Page 25: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

25

Máquina virtual Java:

Conjunto de instruções

�Mínim

o de in

struçõ

es para m

áximo de eficiência

Page 26: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

Tópicos abordados

�Introduçã

o

�Tipos de m

áquinas virtuais

�Máquina virtual J

ava

(Ja

va Virtual M

ach

ine)

�Máquina virtual .NET

�Referências

Page 27: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

27

Máquina virtual .NET

�Idealizado

em

meado

s da déca

da

de 90 so

b o no

me Next

GenerationWindows Services(N

GWS)

�Lanç

ado no final d

e 2000 sob o nome .N

ET FRAMEWORK

Page 28: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

28

Máquinas virtuais .NET:

Linguagens de Programação

�Visual B

asic

�.NET

�C#

�J#

�Outros exe

mplos: C

(LCC), Lisp(L#), P

erl(ActivePerl),

Ruby(Ruby.NET)

Page 29: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

29

Máquina virtual .NET:

Características

�Interoperabilidade

�Independência da Linguagem

�Base ClassLibrary

(BCL)

�Segurança

e facilid

ade

�CommonRuntimeEngine(C

RE)

–Common Intermediate Language (CIL)

–Common Language Infrastructure (CLI)

–Common Language Runtime (CLR)

Page 30: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

30

Máquina virtual .NET:

Linguagem In

term

ediária

�CommonIntermediateLanguage(C

IL):

–Linguage

m in

term

ediária que abs

trai o

s detalhes

do hardware

e sistema ope

racional

–Suporta tip

os,

ponteiro

s, referênc

ias

a objetos

e tip

os

numéricos

–Também

co

nhecido

como Microsoft IntermediateLanguage

(MSIL)

Page 31: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

31

Máquina virtual .NET:

Metadata

�Inform

açõ

es geradas pelo compila

dor, independentes

da linguagem usa

da, so

bre a e

strutura do programa,

tornando m

ais fácil e organizado interpretar o código

escrito

�O fato d

e o

metadata

descreve

r uma

linguagem e

m

uma outra linguagem interm

ediária (C

IL) neutra

de

maneira transp

arente torna o dese

nvo

lvim

ento mais

fácil e

produtivo

�Vantagem:

–Poss

ibilidade

de a

s inform

açõ

es s

erem

referenciad

as

entre

várias lingua

gens

e fe

rram

entas

Page 32: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

32

Máquina virtual .NET:

Carregador de classes

�Carrega um arquivo do tipo Portableexecutable

(PE)

que

contém

todos

os metadatas

e

o

código

interm

ediário CIL nece

ssário para a exe

cuçã

o da

aplicaçã

o

�Cada m

étodo carregado é referenciado e submetid

o à

compila

ção em tempo de exe

cuçã

o.

Uma ve

z co

mpila

do, o código n

ativo é

gerado e

estará p

ronto

para exe

cutar, sempre que nece

ssário

Page 33: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

33

Máquina virtual .NET:

Compilador JIT (JustIn Tim

e)

�Term

o JustIn Time se deve

à compila

ção do código

por demanda, ou s

eja, quando o

corre p

ela p

rimeira

vez

�Resp

onsa

bilidade d

o compila

dor transform

ar o C

IL e

os

metadatas

em arquivos

exe

cutáve

is “úteis”

ao

hardware e sistema operacional d

o usu

ário

�Vantagens:

–Eficiência: métodos

são compilados

uma única vez e som

ente

quando

requ

isita

dos

–Portabilidade: có

digo n

ão é

com

pilado p

ara u

ma p

lataform

a esp

ecífica antes de ser distribuído

Page 34: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

34

Máquina virtual .NET:

Execução

�Virtual ExecutionSystem

(VES)

–Resp

ons

áve

l por carregar e exe

cutar programas co

mpatív

eis

com o CommonLanguageInfrastructure(C

LI), us

and

o as

inform

açõ

es dos metadatase do código fon

te para gerar um

único arquivo em te

mpo

de exe

cuçã

o

–Uma v

ez q

ue o

cód

igo é

exe

cutado, o V

ES e

specífico d

a plataform

a co

mpila o CIL gerado

para a linguage

m na

tiva

(linguage

m

de

máquina)

atravé

s do

JIT,

ago

ra

sim,

obedec

endo à arquite

tura do hardw

are

Page 35: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

35

Máquina virtual .NET:

Estrutura

Page 36: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

36

Máquina virtual .NET:

GarbageCollector

�Obedece

o m

esm

o princípio básico

seguido pelo JVM,

com pequenas dife

rença

s de política de otim

izaçã

o:

–Ao passo que

no JVM pod

emos

config

urar o tamanh

o m

áximo

da pilha e, co

nse

qüen

temente, a agres

sividade do algoritm

o de coleta, no gerenc

iamen

to de m

emória do .NET, a pilha é

dividida em 3 partes: 0, 1 e 2. Inicialm

ente a memória é

aloca

da

na

região

0 e,

conform

e

a inform

açã

o

vai

enve

lhece

ndo

, ou

seja, nã

o é des

cartada durante as co

letas,

os

dado

s vã

o se

ndo movidos

para os

níve

is 1 e

2,

resp

ectivamen

te

Page 37: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

37

Máquina virtual .NET:

Segurança

�Verific

açã

o e

validaçã

o, método n

o q

ual exe

cuta-se

testes que verificam se o

programa e

xecu

ta a

lguma

operaçã

o m

aliciosa

ao carregar um assembly

ou se os

metadatase CIL são válid

os

�CodeAcessSecurity

(CAS), m

étodo que tem a funçã

o

de evitar que códigos não confiá

veis exe

cutem açõ

es

privilegiadas na m

áquina

Page 38: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

Tópicos abordados

�Introduçã

o

�Tipos de m

áquinas virtuais

�Máquina virtual J

ava

(Ja

va Virtual M

ach

ine)

�Máquina virtual .NET

�Referências

Page 39: Máquinas Virtuais - ic.unicamp.brislene/2s2007-mo806/slides/maquinasVirtuais.pdf · 22 Máquina virtual Java: Frames Conjunto de dados mantido dentro da pilha –Acoplamento dinâmico

39

Referências

�Gomes, C. S.; Jin, N. K.; Crepaldi,

T. F. (2007)

Máquinas virtuais Java

e .NET

�Sco

rciapino,

K.

G.

E.;

Nascim

ento,

E.

R.

(2006)

Máquinas virtuais Java

e .NET