Carga dinámica


La carga dinámica es un mecanismo mediante el cual un programa de computadora puede, en tiempo de ejecución , cargar una biblioteca (u otro binario ) en la memoria, recuperar las direcciones de funciones y variables contenidas en la biblioteca, ejecutar esas funciones o acceder a esas variables y descargar el biblioteca de la memoria. Es uno de los 3 mecanismos mediante los cuales un programa de computadora puede utilizar algún otro software; los otros dos son enlaces estáticos y enlaces dinámicos . A diferencia de los enlaces estáticos y dinámicos, la carga dinámica permite que un programa de computadorapara iniciar en ausencia de estas bibliotecas, para descubrir las bibliotecas disponibles y para obtener potencialmente una funcionalidad adicional. [1] [2]

La carga dinámica era una técnica común para los sistemas operativos de IBM para System / 360 como OS / 360 , particularmente para subrutinas de E / S , y para bibliotecas de tiempo de ejecución COBOL y PL / I , y continúa utilizándose en los sistemas operativos de IBM para z / Architecture. , como z / OS . En lo que respecta al programador de la aplicación, la carga es en gran medida transparente, ya que la mayor parte la maneja el sistema operativo (o su subsistema de E / S). Las principales ventajas son:

El sistema de procesamiento de transacciones estratégicas de IBM , CICS (década de 1970 en adelante) utiliza la carga dinámica de manera extensiva tanto para su kernel como para la carga normal de programas de aplicación . Las correcciones a los programas de aplicación se pueden hacer fuera de línea y las nuevas copias de los programas modificados se pueden cargar dinámicamente sin necesidad de reiniciar CICS [3] [4] (que puede, y con frecuencia lo hace, ejecutarse 24 horas al día, 7 días a la semana ).

Las bibliotecas compartidas se agregaron a Unix en la década de 1980, pero inicialmente sin la capacidad de permitir que un programa cargue bibliotecas adicionales después del inicio. [5]

La carga dinámica se utiliza con mayor frecuencia en la implementación de complementos de software . [1] Por ejemplo, los archivos de complemento de "objeto compartido dinámico" del servidor web Apache son bibliotecas que se cargan en tiempo de ejecución con carga dinámica. [6] La carga dinámica también se usa en la implementación de programas de computadora donde múltiples bibliotecas diferentes pueden proporcionar la funcionalidad requerida y donde el usuario tiene la opción de seleccionar qué biblioteca o bibliotecas proporcionar.*.dso

No todos los sistemas admiten la carga dinámica. Los sistemas operativos similares a UNIX , como macOS , Linux y Solaris , proporcionan carga dinámica con la biblioteca "dl" del lenguaje de programación C. El sistema operativo Windows proporciona una carga dinámica a través de la API de Windows .