Archivos DLL

La mayoría de las veces sólo nos encontramos con archivos DLL cuando un determinado software no puede funcionar debido a la falta de algún archivo .dll. Después de este aviso, nos conectamos a Internet para conseguir ese archivo DLL, lo ponemos en la carpeta adecuada y conseguimos que el software funcione. Y eso es todo: caso cerrado sobre los archivos DLL.

Sin embargo, sería interesante entender más sobre estos archivos en particular. Parecen importantes, ya que su ausencia puede impedir que el software se ejecute, así que ¿qué son? ¿Y cómo funcionan? Obtengamos algunas respuestas.

La ventaja de los archivos DLL es que se ahorra espacio en la memoria de acceso aleatorio (RAM) porque los archivos no se cargan en la RAM junto con el programa principal. Cuando se necesita un archivo DLL, se carga y se ejecuta. Por ejemplo, mientras un usuario esté editando un documento en Microsoft Word, el archivo DLL de la impresora no necesita cargarse en la RAM. Si el usuario decide imprimir el documento, la aplicación Word hace que se cargue y ejecute el archivo DLL de la impresora.

Un programa se separa en módulos cuando se utiliza una DLL. Con los componentes modularizados, un programa puede venderse por módulos, tener tiempos de carga más rápidos y actualizarse sin alterar otras partes del programa. Las DLL ayudan a que los sistemas operativos y los programas se ejecuten más rápidamente, utilicen la memoria de forma eficiente y ocupen menos espacio en el disco.

¿Cómo funcionan los archivos DLL?

Imagine dos archivos distintos: "example.exe", un archivo ejecutable común, y "library.dll", una DLL que utiliza ese ejecutable. ¿Cómo conecta el sistema operativo estos archivos cuando se ejecuta "example.exe"?

Cuando "ejemplo.exe" se ejecuta, el sistema operativo lo carga y encuentra una tabla de datos dentro de él, indicando que (obviamente no en palabras) "este programa utiliza la siguiente lista de funciones del archivo DLL library.dll", lo que técnicamente se llama "importaciones" o "funciones importadas" de la DLL "library.dll" en el programa "ejemplo.exe".

Entonces, el código del cargador busca "library.dll" y, si lo encuentra, se carga el archivo. Dentro de este archivo DLL, hay otra lista, llamada "lista de exportación", que conecta direcciones específicas con cada una de las funciones dentro del archivo DLL. A partir de este momento, cuando "ejemplo.exe" necesita llamar a una función de "library.dll", simplemente utiliza esa dirección.