¿Diferencia entre código nativo y administrado?


Por ejemplo, al mirar el sitio web de GlowCode profiler dice:

"GlowCode 6.2 y x64 perfil nativo, administrado y mixto C++, C#, código. NET"

¿Qué significan?

Author: Joel, 2009-05-13

4 answers

El código nativo es el código cuya memoria no es "administrada", como en, la memoria no es liberada para usted (C++' delete y C's free, por ejemplo), sin conteo de referencias, sin recolección de basura. El código administrado, lo adivinó, es el código cuya memoria es gratuita y asignada para usted, recolección de basura y otras cosas.

Código mixto es cuando tiene código administrado que llama a una capa no administrada. Normalmente, cuando tiene una DLL de C++ no administrada pura y la llama desde. NET usando P / invoke.

 67
Author: Anzurio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-13 02:23:01

El código nativo se compila para trabajar directamente con el sistema operativo. Sin embargo, el código administrado es precompilado (bytecode en lenguaje Java), pero luego es procesado por el compilador Just In Time a código nativo en tiempo de ejecución. El código administrado tiene el interesante efecto secundario de tener el potencial de ejecutarse en diferentes sistemas operativos, porque el código de la máquina no se crea hasta que la máquina virtual realmente lo usa. De esta manera, puede ejecutar aplicaciones. NET en Windows y también ejecutarlas en Linux o Mac que tengan el tiempo de ejecución Mono instalar. La portabilidad no está tan limpia actualmente como Java (debido a la arquitectura naturalmente cerrada de Microsoft), pero el concepto permanece.

Si está ejecutando una aplicación no administrada, el código se ha compilado para ejecutarse para el sistema operativo/Hardware designado. Cualquier portabilidad a otro sistema operativo/conjunto de instrucciones se pierde y debe recompilarse para ejecutarse.

 41
Author: Wayne Hartman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-13 02:33:41

El código nativo se escribe en el lenguaje de máquina "nativo" del equipo en el que se está ejecutando y es ejecutado directamente por el procesador.

El código administrado está escrito en un lenguaje especial que requiere que otro programa lo ejecute (es decir, lo administre). Este otro programa a menudo se llama intérprete, ya que interpreta el lenguaje especial.

Los programas C y C++ son nativos.

Se administran Java y C# (y todos los lenguajes.NET para el caso).

C++ administrado es un forma especial de C++ que se ejecuta en el intérprete. NET.

Un programa mixto es un programa que utiliza código tanto nativo como administrado.

 26
Author: onedozenbagels,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-13 22:27:28

El código que se ejecuta bajo el control del common language runtime (CLR) se conoce como código administrado. El código que no se ejecuta bajo el CLR se conoce como código nativo.

 5
Author: Hanu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-10 13:03:35