Arquitectura de Máquinas Virtuales
La arquitectura de máquinas virtuales se ha llamado también intérpretes basados en tablas [GS94] [SC96]. e hecho! todo intérprete involucra una máquina virtual implementada en so"t#are. Se puede decir que un intérprete inclu$e un seudo%pro&rama a interpretar $ una máquina de interpretaci'n. (l seudo%pro&rama seudo%pro&rama a su ve) inclu$e el pro&rama mismo $ el análo&o que hace el intérprete de su estado de e*ecuci'n +o re&istro de activaci'n,. La máquina de interpretaci'n inclu$e tanto la de"inici'n del intérprete como el estado actual de su e*ecuci'n. e este modo! un intérprete posee por lo &eneral cuatro componentes- +, una máquina de interpretaci'n que lleva a cabo la tarea! +/, una memoria que contiene e l seudo%c'di&o a interpretar! +0, una representaci'n del estado de control de la máquina de interpretaci'n! $ +4, una representaci'n del estado actual del pro&rama que se simula.
(l estilo comprende básicamente dos "ormas o sub%estilos! que se han llamado intérpretes $ sistemas basados en re&las. 1mbas variedades abarcan! sin duda! un e2tenso espectro que va desde los llamados len&ua*es de alto nivel hasta los paradi&mas declarativos no secuenciales de pro&ramaci'n! que todo el mundo sabe que implementan un pro2$ +una especie de nivel de impostura, que encubren al usuario operaciones que en 3ltima instancia se resuelven en instrucciones de máquinas a"ines al paradi&ma secuencial imperativo de siempre.
i&. 5 % ntérprete [basado en GS94]
(l estilo es su con*unto se utili)a habitualmente para construir máquinas virtuales que reducen el vac7o que media entre el en&ine de computaci'n esperado por la semántica del pro&rama $ el en&ine "7sicamente disponible. Las aplicaciones inscriptas en este estilo simulan "uncionalidades no nativas al hard#are $ so"t#are en que se implementan! o capacidades que e2ceden a +o que no coinciden con, las capacidades del paradi&ma de pro&ramaci'n que se está implementando. ado que hasta cierto punto las máquinas virtuales no son una opci'n sino que devienen inevtiables en ciertos conte2tos! nadie se ha entretenido identi"icando
sus venta*as $ deméritos.
Las máquinas virtuales no son una invenci'n reciente li&ada a 8ava! sino que e2isten desde mu$ anti&uo. (n la década de 95! los precursores de los in&enieros de so"t#are su&irieron una máquina virtual basada en un len&ua*e de máquina universal de b$tecodes +un e*emplo "ue :;C
a$ implement' una máquina virtual vinculada a un sistema orientado a ob*etos [>a$6=] $ lue&o particip' con an n&alls en el desarrollo de la [email protected] de SmalltalA hacia 9B/. ;umerosos len&ua*es $ ambientes de scriptin& utili)an máquinas virtuales- erl! 8avascript! Dindo#s Script Eost +DSE,! $thon! E! ascal. DSE! por e*emplo! tolera pro&ramaci'n en casi cualquier len&ua*e de scriptin& que se aten&a a ciertas especi"icaciones simples.
(n la nueva estrate&ia arquitect'nica de ?icroso"t la máquina virtual por e2celencia &uarda relaci'n con el Common Lan&ua&e Funtime! acaso unas de las dos pie)as esenciales del "rame#orA .;( +la otra es la biblioteca de clases,. (l CLF admite! en e "ecto! diversos paradi&mas puros $ templados- pro&ramaci'n "uncional +Lisp! Scheme! H! EasAell,! pro&ramaci'n imperativa orientada a ob*etos +CH! 8H! CII! $thon, $ estructurada en bloques +