Saltar al contenido

¿Qué es el código administrado o no administrado en programación?

Solución:

Este es un buen artículo sobre el tema.

Para resumir,

  1. Código administrado no está compilado en código de máquina sino en un lenguaje intermedio que es interpretado y ejecutado por algún servicio en una máquina y, por lo tanto, está operando dentro de un marco seguro (¡con suerte!) que maneja cosas peligrosas como memoria e hilos por usted. En el uso moderno, esto significa con frecuencia .NET, pero no es necesario.

Un programa de aplicación que se ejecuta dentro de un motor en tiempo de ejecución instalado en la misma máquina. La aplicación no se puede ejecutar sin él. El entorno de ejecución proporciona la biblioteca general de rutinas de software que utiliza el programa y, por lo general, realiza la gestión de la memoria. También puede proporcionar conversión justo a tiempo (JIT) de código fuente a código ejecutable o de un lenguaje intermedio a código ejecutable. Java, Visual Basic y Common Language Runtime (CLR) de .NET son ejemplos de motores de ejecución. (Lee mas)

  1. Código no administrado se compila en código de máquina y, por lo tanto, el sistema operativo lo ejecuta directamente. Por lo tanto, tiene la capacidad de hacer cosas dañinas / poderosas que el código administrado no hace. Así es como solía funcionar todo, por lo que normalmente está asociado con cosas antiguas como .dlls.

Un programa ejecutable que se ejecuta solo. Lanzado desde el sistema operativo, el programa utiliza y utiliza las rutinas de software en el sistema operativo, pero no requiere otro sistema de software para ser utilizado. Los programas en lenguaje ensamblador que se han ensamblado en lenguaje máquina y los programas C / C ++ compilados en lenguaje máquina para una plataforma en particular son ejemplos de código no administrado. (Leer más)

  1. Nativo El código es a menudo sinónimo de No administrado, pero no es idéntico.

Aquí hay un texto de MSDN sobre código no administrado.

Algún código de biblioteca necesita llamar a código no administrado (por ejemplo, API de código nativo, como Win32). Debido a que esto significa salir del perímetro de seguridad para el código administrado, se requiere la debida precaución.

Aquí hay otra explicación complementaria sobre el código administrado:

  • Código que ejecuta CLR.
  • El código que tiene como destino Common Language Runtime, la base de .NET Framework, se conoce como código administrado.
  • El código administrado proporciona los metadatos necesarios para que CLR brinde servicios como administración de memoria, integración entre idiomas, seguridad de acceso al código y control automático de por vida de los objetos. Todo el código basado en IL se ejecuta como código administrado.
  • Código que se ejecuta en el entorno de ejecución CLI.

Por tu problema:

Creo que es porque NUnit ejecuta su código para UnitTesting y puede tener una parte que no está administrada. Pero no estoy seguro, así que no lo tome por oro. Estoy seguro de que alguien podrá darte más información al respecto. ¡Espero eso ayude!

Cuando piensas en no administrado, piense en un código a nivel de máquina específico de la máquina. Como el lenguaje ensamblador x86. El código no administrado (nativo) se compila y se vincula para ejecutarse directamente en el procesador para el que fue diseñado, excluyendo todas las cosas del sistema operativo por el momento. No es portátil, pero es rápido. Código muy simple y reducido.

Administrado el código es todo, desde Java hasta el antiguo Interpretive BASIC, o cualquier cosa que se ejecute bajo .NET. El código administrado generalmente se compila en un código P de nivel intermedio o en un conjunto de instrucciones de código de bytes. Estas no son instrucciones específicas de la máquina, aunque se parecen al lenguaje ensamblador. El código administrado aísla el programa de la máquina en la que se está ejecutando y crea un límite seguro en el que toda la memoria se asigna indirectamente y, en general, no tiene acceso directo a los recursos de la máquina como puertos, espacio de direcciones de memoria, la pila, etc. La idea es correr en un entorno más seguro.

Para convertir de una variable administrada, digamos, a una no administrada, debe llegar al objeto real en sí. Probablemente esté envuelto o en caja en algún paquete adicional. Las variables no administradas (como un ‘int’, por ejemplo), en una máquina de 32 bits, toman exactamente 4 bytes. No hay gastos generales ni embalaje adicional. El proceso de pasar de código administrado a no administrado, y viceversa, se llama “clasificación“. Permite que sus programas crucen la frontera.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *