Historia del "DLL Hell" a principios de los 90


 

Las DLLs se introdujeron por primera vez en Windows 3.1 en 1992. Las DLLs permiten a los desarrolladores compartir código entre diferentes aplicaciones, lo que reduce la cantidad de código que debe escribirse y mantener.

En los primeros años de Windows, el infierno de las DLLs era un problema relativamente común. Esto se debía a que los desarrolladores no estaban familiarizados con las DLLs y no siempre tomaban las medidas necesarias para evitar conflictos.

Por ejemplo, un desarrollador podría instalar una DLL que proporciona una nueva función para una aplicación. Sin embargo, si otra aplicación ya está utilizando una DLL que proporciona la misma función, podría producirse un conflicto.

La introducción del Windows DLL Manager

Microsoft ha tomado medidas para abordar el problema del infierno de las DLLs. En Windows 95, se introdujo el sistema de administración de DLLs de Windows (Windows DLL Manager). Este sistema ayuda a evitar conflictos al resolver automáticamente qué DLL se debe cargar en caso de conflicto.

El Windows DLL Manager funciona asignando un número de versión a cada DLL. Cuando un programa intenta cargar una DLL, el Windows DLL Manager busca la DLL con el número de versión más alto.

Si hay varias DLLs con el mismo número de versión, el Windows DLL Manager intentará resolver el conflicto utilizando un algoritmo de resolución de conflictos.

El infierno de las DLLs en la actualidad

El infierno de las DLLs sigue siendo un problema potencial en los sistemas operativos de Microsoft. Esto se debe a que los desarrolladores aún pueden instalar DLLs que tienen el mismo nombre o versión.

Además, el Windows DLL Manager no siempre es capaz de resolver todos los conflictos de DLLs.

Aquí hay algunos ejemplos de cómo el infierno de las DLLs puede causar problemas:

  • Una aplicación puede dejar de funcionar o incluso bloquearse.
  • El sistema operativo puede mostrar un error o una pantalla azul de la muerte.
  • El sistema operativo puede ralentizarse o incluso dejar de responder.

Consejos para evitar el infierno de las DLLs

Hay algunas cosas que puede hacer para evitar el infierno de las DLLs:

  • Instalar las DLLs de los proveedores de software autorizados.
  • Actualizar las DLLs a la última versión disponible.
  • Utilizar un administrador de DLLs para ayudar a evitar conflictos.

Si experimenta problemas con el infierno de las DLLs, puede intentar desinstalar o actualizar las DLLs conflictivas. También puede intentar utilizar un administrador de DLLs para resolver el conflicto.

Administradores de DLLs

Un administrador de DLLs es una herramienta que puede ayudar a evitar conflictos de DLLs. Los administradores de DLLs funcionan escaneando su sistema en busca de DLLs y luego resolviendo cualquier conflicto que encuentren.

Hay varios administradores de DLLs disponibles, como DLL-Hell, DLL-Fixer y DLL Suite.

Comparativa con Linux

En Linux, las bibliotecas de enlace dinámico (DLL) se denominan "shared object files" (archivos de objeto compartidos) y tienen la extensión ".so".

Linux utiliza un sistema de administración de archivos de objeto compartidos diferente al de Windows. En Linux, los archivos de objeto compartidos se almacenan en un directorio específico, conocido como "/lib" o "/usr/lib".

Cuando un programa intenta cargar un archivo de objeto compartido, el sistema operativo busca el archivo en el directorio específico. Si el archivo no se encuentra en el directorio, el sistema operativo intentará encontrarlo en el directorio de inicio del usuario.

Este sistema de administración de archivos de objeto compartidos hace que sea mucho menos probable que se produzcan conflictos de archivos de objeto compartidos en Linux. Esto se debe a que los archivos de objeto compartidos se almacenan en un solo directorio, lo que facilita al sistema operativo encontrar la versión correcta del archivo.

Además, Linux utiliza un algoritmo de resolución de conflictos de archivos de objeto compartidos más estricto que el de Windows. Este algoritmo de resolución de conflictos evita que se carguen archivos de objeto compartidos que tienen el mismo nombre o versión.

Por estas razones, el infierno de las DLLs es un problema mucho menos común en Linux que en Windows.

Aquí hay una tabla que compara los sistemas de administración de DLLs de Windows y Linux

 

CaracterísticaWindowsLinux

Nombre

DLL

shared object file (archivo de objeto compartido)

Extensión

.dll

.so

Directorio de almacenamiento

Varios directorios

/lib o /usr/lib

Algoritmo de resolución de conflictos

Menos estricto

Más estricto

Probabilidad de conflictos

Más probable

Menos probable

 

Referencias:



















Comentarios

Entradas populares