Característiques tècniques | |
---|---|
Plataforma | C standard library |
La càrrega dinàmica és un mecanisme pel qual un programa informàtic pot, en temps d'execució, carregar una biblioteca (o un altre binari) a la memòria, recuperar les adreces de les funcions i variables contingudes a la biblioteca, executar aquestes funcions o accedir a aquestes variables i descarregar el fitxer. biblioteca de memòria. És un dels 3 mecanismes pels quals un programa informàtic pot utilitzar algun altre programari; els altres dos són enllaços estàtics i enllaços dinàmics. A diferència de l'enllaç estàtic i l'enllaç dinàmic, la càrrega dinàmica permet que un programa informàtic s'iniciï en absència d'aquestes biblioteques, descobrir biblioteques disponibles i, potencialment, obtenir funcionalitats addicionals.[1]
La càrrega dinàmica era una tècnica comuna per als sistemes operatius d'IBM per System/360, com ara OS/360, especialment per a les subrutines d'E/S, i per a les biblioteques d'execució COBOL i PL/I, i es continua utilitzant als sistemes operatius d'IBM per a z/Architecture, com ara z/OS. Pel que fa al programador d'aplicacions, la càrrega és en gran manera transparent, ja que majoritàriament la gestiona el sistema operatiu (o el seu subsistema d'E/S). Els principals avantatges són: [2]
El sistema estratègic de processament de transaccions d'IBM, CICS (de la dècada de 1970 en endavant) utilitza àmpliament la càrrega dinàmica tant per al seu nucli com per a la càrrega normal del programa d'aplicacions. Les correccions als programes d'aplicació es podrien fer fora de línia i les còpies noves dels programes modificats es poden carregar dinàmicament sense necessitat de reiniciar CICS (que es pot executar, i ho fa sovint, les 24 hores del dia, els 7 dies de la setmana).
Les biblioteques compartides es van afegir a Unix a la dècada de 1980, però inicialment sense la possibilitat de permetre que un programa carregués biblioteques addicionals després de l'inici.[3]
La càrrega dinàmica s'utilitza amb més freqüència en la implementació de connectors de programari. Per exemple, els fitxers del connector d'"objecte compartit dinàmic" *.dso
del servidor web Apache són biblioteques que es carreguen en temps d'execució amb càrrega dinàmica. La càrrega dinàmica també s'utilitza en la implementació de programes informàtics on diverses biblioteques diferents poden proporcionar la funcionalitat requerida i on l'usuari té l'opció de seleccionar quina biblioteca o biblioteques oferir.[4]
No tots els sistemes admeten la càrrega dinàmica. Els sistemes operatius semblants a UNIX com ara macOS, Linux i Solaris proporcionen càrrega dinàmica amb la biblioteca "dl" del llenguatge de programació C. El sistema operatiu Windows proporciona càrrega dinàmica mitjançant l'API de Windows.
Nom | API estàndard POSIX/UNIX | API de Microsoft Windows |
---|---|---|
Inclusió de fitxers de capçalera | #include <dlfcn.h>
|
#include < windows.h >
|
Definicions per a la capçalera | dl
( |
kernel32.dll
|
Carregant la biblioteca | dlopen
|
LoadLibrary
|
Extracció de continguts | dlsym
|
GetProcAddress
|
Descàrrega de la biblioteca | dlclose
|
FreeLibrary
|