MOTOR DE EJECUCIÓN COMÚN DE LENGUAJES (COMMON LANGUAGE RUNTIME - CLR)<br />Es la máquina virtual que administra la ejecuci...
Cuando se compila el código escrito, el compilador lo traduce a un código intermedio denominado MSIL (Microsoft Intermedia...
Un ensamblado (assembly) es la unidad fundamental de construcción de una aplicación .NET. En un ensamblado se diferencian ...
La máquina virtual no convierte todo el código MSIL a código nativo y después lo ejecuta, sino que lo va convirtiendo bajo...
SISTEMA COMÚN DE TIPOS (COMMON TYPE SYSTEM - CTS)<br />Es el conjunto de reglas que han de seguir las definiciones de tipo...
COMMON TYPE SYSTEM - CTS<br />C#<br />IL<br />int<br />Lenguaje <br />Intermedio<br />Int32<br />VB.NET<br />Integer<br />
COMMON TYPE SYSTEM - CTS<br />Estructura Jerárquica del Sistema Común de Tipos:<br />Type<br />Tipos-valor<br />Tipos-refe...
ESPECIFICACIÓN COMÚN DE LENGUAJES (CLS)<br />Trabaja conjuntamente con el CTS para asegurar la interoperabilidad entre len...
TIPOS-VALOR Y TIPOS-REFERENCIA<br />TIPO REFERENCIA<br /><ul><li>Almacena sólo una referencia al valor.
Se almacenan en una zona de memoria conocida como memoria dinámica controlada (managed heap).</li></ul>TIPO VALOR<br />Alm...
THREAD STACK<br />Espacio de memoria asociado al hilo de ejecución. <br />Es la pila donde va progresando nuestro código. ...
THREAD STACK<br />Está limitado a un máximo de 1MByte por hilo. <br />Si se intenta superar el límite de memoria se obtien...
MANAGED HEAP<br />Espacio de memoria asociado al proceso. <br />Compartido entre los hilos que lo forman (si hubiese vario...
Upcoming SlideShare
Loading in …5
×

Introducción - Arquitectura .NET

1,300
-1

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,300
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introducción - Arquitectura .NET

  1. 1. MOTOR DE EJECUCIÓN COMÚN DE LENGUAJES (COMMON LANGUAGE RUNTIME - CLR)<br />Es la máquina virtual que administra la ejecución del código. Es decir estamos hablando de una biblioteca utilizada por cada aplicación .NET durante su ejecución.<br />El CLR comprende un motor de ejecución, un recolector de basura, un compilador justo a tiempo (JIT), un sistema de seguridad, y lo fundamental de la Plataforma .NET.<br />
  2. 2. Cuando se compila el código escrito, el compilador lo traduce a un código intermedio denominado MSIL (Microsoft Intermediate Language) o simplemente IL, correspondiente a un lenguaje independiente de la unidad central de proceso. Esto quiere decir que el código generado puede transportarse a cualquier plataforma (Intel, Motorola, etc.) que tenga instalada una máquina virtual de .NET y ejecutarse. Este código MSIL se encuentra dentro del assembly (.exe o .dll).<br />CÓDIGOINTERMEDIO(assembly)<br />CÓDIGOFUENTE<br />COMPILADOR<br />
  3. 3. Un ensamblado (assembly) es la unidad fundamental de construcción de una aplicación .NET. En un ensamblado se diferencian básicamente dos partes: el manifiesto y el código MSIL. El manifiesto incluye los metadatos que describe completamente los componentes en el ensamblado (versión, tipos, dependencias, etc.).Antes de que el código intermedio pueda ser ejecutado, debe ser convertido por un compilador JIT (Just in Time) a código nativo, que es el código especifico de la UCP del ordenador sobre el que se ejecuta el JIT.<br />CÓDIGOMSIL<br />CÓDIGONATIVO<br />Máquina Virtual<br />
  4. 4. La máquina virtual no convierte todo el código MSIL a código nativo y después lo ejecuta, sino que lo va convirtiendo bajo demanda con el fin de reducir el tiempo de ejecución; es decir, cada método es compilado a código nativo cuando es llamado por primera vez para ser ejecutado, este código obtenido es guardado para ser accedido en las siguientes llamadas. Este código nativo se denomina “código administrado” si cumple con la especificación CLS, en otro caso recibe el nombre de “código no administrado”.<br />El CLR proporciona la infraestructura necesaria para que el código administrado sea ejecutado. Provee de servicios como recolector de basura, interoperabilidad con código no administrado, etc.<br />El código no administrado es código creado sin tener en cuenta el CLS (especificación del lenguaje común. Este código se ejecuta sin los requisitos mínimos del CLR (sin recolector de basura, depuración limitada, etc.).<br />
  5. 5. SISTEMA COMÚN DE TIPOS (COMMON TYPE SYSTEM - CTS)<br />Es el conjunto de reglas que han de seguir las definiciones de tipos de datos para que el CLR las acepte. <br />El CTS define todos los tipos predefinidos que están disponibles en el Lenguaje Intermedio, de forma que todos los lenguajes que generen código para .NET producirán en última instancia código basado en esos tipos.<br />
  6. 6. COMMON TYPE SYSTEM - CTS<br />C#<br />IL<br />int<br />Lenguaje <br />Intermedio<br />Int32<br />VB.NET<br />Integer<br />
  7. 7. COMMON TYPE SYSTEM - CTS<br />Estructura Jerárquica del Sistema Común de Tipos:<br />Type<br />Tipos-valor<br />Tipos-referencia<br />Tipos-valor predefinidos<br />Tipos-valor predefinidos por el usuario<br />Tipos-punteros<br />Tipos-interfaces<br />Tipos autodescriptivos<br />Enumeraciones<br />Clases<br />Arrays<br />Tipos-referencia definidos por el usuario<br />Tipos-valor enmarcados<br />Delegados<br />
  8. 8. ESPECIFICACIÓN COMÚN DE LENGUAJES (CLS)<br />Trabaja conjuntamente con el CTS para asegurar la interoperabilidad entre lenguajes.<br />Es un conjunto de normas mínimas establecidas que todos los compiladores orientados a .NET deben soportar.<br />Es completamente aceptable escribir código que no cumpla con los requisitos del CLS. Si esto ocurre no se garantiza que el código compilado sea totalmente interoperable con código escrito en otros lenguajes.<br />
  9. 9. TIPOS-VALOR Y TIPOS-REFERENCIA<br />TIPO REFERENCIA<br /><ul><li>Almacena sólo una referencia al valor.
  10. 10. Se almacenan en una zona de memoria conocida como memoria dinámica controlada (managed heap).</li></ul>TIPO VALOR<br />Almacena su valor de manera directa.<br />Se almacenan en una zona de memoria llamada pila (stack).<br />
  11. 11. THREAD STACK<br />Espacio de memoria asociado al hilo de ejecución. <br />Es la pila donde va progresando nuestro código. <br />Aquí se van "apilando" las llamadas a funciones y las variables locales y parámetros, de forma que el puntero de ejecución va cargando, ejecutando y liberando métodos con sus respectivas variables. <br />No se pueden compartir ese espacio entre varios hilos, esta únicamente ligado un hilo de ejecución. <br />Como decía es el espacio de memoria asociado al hilo de ejecución, por lo que es bastante rápido. <br />
  12. 12. THREAD STACK<br />Está limitado a un máximo de 1MByte por hilo. <br />Si se intenta superar el límite de memoria se obtiene un StackOverflowException. <br />Aquí se almacenan tipos de los cuales se conoce su tamaño antes de su inicialización (tipos por valor) y referencias a objetos del managed heap, que contienen la dirección de memoria del objeto allí ó un nulo si no referencian nada.<br />El proceso de liberar memoria de este espacio se realiza de forma determinística por el puntero de ejecución.<br />
  13. 13. MANAGED HEAP<br />Espacio de memoria asociado al proceso. <br />Compartido entre los hilos que lo forman (si hubiese varios). <br />Accedido mediante punteros (dirección/indirección) lo que lo hace más lento que el thread stack, pero permite ser accedido desde otros hilos. <br />No tiene una limitación en su tamaño que no sea la del hardware. <br />
  14. 14. MANAGED HEAP<br />Normalmente almacena tipos por referencia y tipos por valor cuando tienen una relación de composición con un tipo por referencia. <br />Si se supera el máximo de memoria disponible se obtiene un OutOfMemoryException. <br />El proceso de liberar memoria de este espacio se realiza de forma no determinística por el recolector de basura (GarbageCollector).<br />

×