AOWS

Just another adrian’s weblog

Cómo funciona la máquina virtual de .NET

leave a comment »

Al igual que ocurre en Java, el código en la .NET es convertido a un lenguaje intermedio (CIL o Common Intermediate Language) que será el que se ejecute sobre la máquina virtual.

Esta máquina, que en la plataforma de Microsoft recibe el nombre de CLR (Common Language Runtime), es la encargada de transformar el código intermedio en lenguaje nativo del sistema sobre el que corra la aplicación.

Esta característica proporciona a ambas plataformas (Java y .NET) una gran portabilidad. Allí donde haya una máquina virtual correctamente implementada, podremos correr nuestro código sin ningún tipo de recompilación (o al menos, así es en un mundo ideal).

La CLR no es un intérprete (lo cual degeneraría bastante el rendimiento), sino que va compilando el código al vuelo. Este procedimiento recibe el nombre de Just in time compilation (JIT).

Sin embargo, y como era de suponer, no se compila la totalidad del código sino sólo aquel que se necesita en la ejecución actual. Así, podemos tener 100 funciones y sólo utilizar 10; en este caso sólo se compilaría esta decena.

En realidad, inicialmente los métodos apuntan a una función del core de .NET (_CorExeMain). Cuando la aplicación llama a alguno de estos métodos, _CorExeMain reserva memoria, compila la función (hasta el momento en lenguaje intermedio) y la almacena en código nativo en dicho espacio de memoria, cambia el puntero del método al código compilado, y finalmente lo ejecuta.

La próxima vez que se llame a algún método ya compilado, se ejecutará directamente el código nativo.

Gracias a este método, en ocasiones puede incluso obtenerse un mejor rendimiento que con un código compilado específicamente para la máquina.

Written by adrian

6 febrero, 2008 a 22:38

Publicado en Posts

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: