Enlazador dinámico


En informática , un vinculador dinámico es la parte de un sistema operativo que carga y vincula las bibliotecas compartidas que necesita un ejecutable cuando se ejecuta (en " tiempo de ejecución "), copiando el contenido de las bibliotecas desde el almacenamiento persistente a la RAM , llenando el salto tablas y punteros de reubicación . El sistema operativo específico y el formato ejecutable determinan cómo funciona el enlazador dinámico y cómo se implementa.

La vinculación a menudo se conoce como un proceso que se realiza cuando se compila el ejecutable , mientras que un vinculador dinámico es una parte especial de un sistema operativo que carga bibliotecas compartidas externas en un proceso en ejecución y luego vincula esas bibliotecas compartidas dinámicamente al proceso en ejecución . Este enfoque también se denomina enlace dinámico o enlace tardío .

Biblioteca de vínculos dinámicos , o DLL, es Microsoft aplicación de la 's biblioteca compartida concepto en el Microsoft Windows y OS / 2 sistemas operativos . Estas bibliotecas suelen tener la extensión de archivo DLL , OCX(para las bibliotecas que contienen ActiveX controles), o DRV(para el legado controladores del sistema ). Los formatos de archivo para DLL son los mismos que para los archivos EXE de Windows , es decir, Portable Executable (PE) para Windows de 32 y 64 bits , y New Executable (NE) para 16 bits.Windows. Al igual que con los EXE, los archivos DLL pueden contener código , datos y recursos , en cualquier combinación.

Los archivos de datos con el mismo formato de archivo que una DLL, pero con diferentes extensiones de archivo y que posiblemente solo contengan secciones de recursos, pueden denominarse DLL de recursos. Ejemplos de tales DLL incluyen bibliotecas de iconos , que a veces tienen la extensión ICL, y archivos de fuentes , que tienen las extensiones FONy FOT. [1]

En la mayoría de los sistemas similares a Unix, la mayor parte del código de máquina que compone el enlazador dinámico es en realidad un ejecutable externo que el núcleo del sistema operativo carga y ejecuta primero en un espacio de direcciones de proceso recién construido como resultado de llamadas execo posix_spawnfunciones. En el momento del enlace, la ruta del enlazador dinámico que se debe utilizar se incrusta en la imagen ejecutable.

Cuando se carga un archivo ejecutable, el kernel del sistema operativo lee la ruta del enlazador dinámico y luego intenta cargar y ejecutar este otro binario ejecutable; si ese intento falla porque, por ejemplo, no hay ningún archivo con esa ruta, el intento de ejecutar el ejecutable original falla. El enlazador dinámico luego carga la imagen ejecutable inicial y todas las bibliotecas vinculadas dinámicamente de las que depende e inicia el ejecutable. Como resultado, el nombre de la ruta del enlazador dinámico es parte de la interfaz binaria de la aplicación del sistema operativo .