válido significado programa net medicina language framework español detectó common caracteristicas abreviatura c# .net clr

c# - significado - clr sql



¿Qué sucede cuando se inicia una aplicación.net? (2)

He estado desarrollando aplicaciones usando .net desde hace bastante tiempo. Pero, todavía no estoy seguro de cómo sabe CLR que se ha iniciado una aplicación .net. ¿Hay como una instancia de CLR por aplicación? No creo que este sea el caso, ya que solo hay un GC que gestiona toda la memoria para todas las aplicaciones .net. ¿El CLR se ejecuta en segundo plano? Estoy bastante confundido.


Hmm, déjame tomar una oportunidad en esto también.

  1. Alguien crea una aplicación .NET en C #, o .NET ''Intermediate Language'' u otro idioma administrado.

  2. El compilador para ese lenguaje csc.exe (C #), o ilasm.exe (ensamblador de bytecode), o el que sea, produce un ejecutable PE. El ejecutable de PE tiene una estructura específica que el compilador o ensamblador rellena. Eso incluye:

    • un punto de entrada, y
    • una lista de las bibliotecas dinámicas que utiliza (la tabla IMPORT). Una de esas bibliotecas es mscoree.dll
    • muchos metadatos, incluida la versión en tiempo de ejecución .NET objetivo
  3. Cuando se hace clic en el ejecutable, se ejecuta desde la línea de comandos o se ejecuta desde una API de Win32, la implementación del cargador de Windows (en NTDLL.dll) asume el control

  4. El código del cargador es responsable de obtener el ejecutable en la memoria, cargar bibliotecas de enlaces dinámicos si es necesario, asignar bibliotecas vinculadas a un lugar donde el código ejecutable puede alcanzarlas y actualizar la Tabla de direcciones de importación con las direcciones reales de las bibliotecas asignadas.

  5. Una vez que todo está listo, el cargador salta al punto de entrada (a través de lo que asumo es que algunos shenanigans cambian del espacio del kernel al espacio del usuario o al modo protegido, ya que la aplicación se ejecuta en su propio espacio de memoria protegido de 32 o 64 bits). El punto de entrada va a mscoree.dll: el motor de ejecución de .NET Common Object Runtime, que se acaba de asignar a la memoria de procesos. He visto a este DLL denominado shim de inicio de .NET, y permite que existan múltiples instalaciones de .NET en una máquina. Mscoree.dll es la biblioteca que usará si está incrustando un lenguaje .NET en su propia aplicación regular.

  6. Mscoree.dll examina los metadatos cargados desde el ejecutable PE, específicamente el encabezado CLR y la versión de tiempo de ejecución .NET objetivo. A partir de eso, puede CorBindToRuntimeEx 2 a la versión CLR correcta.

  7. CorBindToRuntimeEx carga la implementación de tiempo de ejecución de .NET correcta (y devuelve un puntero a una interfaz COM que le permite invocar ese tiempo de ejecución de .NET. Este código se carga desde las DLL en% WINDIR% / Microsoft.NET / Framework / v #### #.

  8. No estoy seguro de quién es en este momento, pero probablemente el corrector mscoree use el puntero de interfaz .NET ICLRRuntimeHost para invocar métodos para inicializar el tiempo de ejecución .NET, el recolector de basura, el intérprete de IL, las interfaces JIT y IHostControl (que permiten al intérprete .NET). conteste al proceso de alojamiento), y finalmente le dice al intérprete que comience a ejecutar el código IL de su aplicación compilada.

(Aprendí mucho escribiendo esto: hay un montón de información detrás de los enlaces, ¡ciertamente no lo he superado!)

mscoree.dll

2

http://msdn.microsoft.com/en-us/magazine/bb985994.aspx


Los ejecutables de Windows son ejecutables portátiles , un formato que le da a Windows la información que necesita para cargar y ejecutar el programa. Cuando Windows se encuentra con un programa .NET, carga una instancia del CLR y entrega la ejecución del programa a la nueva instancia de CLR. Cada programa .NET en ejecución está alojado dentro de su propia instancia del CLR.

El proceso CLR carga el programa IL y lo compila en el Código Nativo (JIT) y luego ejecuta el código, cuidando la administración de la memoria y la recolección de basura para ese programa.