View
222
Download
0
Category
Preview:
Citation preview
Máquinas Virtuais
Danilo
Silva M
arshall
Érika
R. C. de Alm
eida
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
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
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)
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
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
7
Tipos de m
áquinas virtuais
�Hardware
�Linguagens de Alto
Nível
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
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
10
Máquina virtual de Linguagem de Alto Nível
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
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
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
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)
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)
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)
17
Máquina virtual Java:
Funcionamento
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
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
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
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
nã
o existe
memória
suficiente para
tal
ou ainda não
há
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
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
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
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
25
Máquina virtual Java:
Conjunto de instruções
�Mínim
o de in
struçõ
es para m
áximo de eficiência
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
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
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)
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)
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)
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
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
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
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
35
Máquina virtual .NET:
Estrutura
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
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
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
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
Recommended