| Característiques tècniques | |
|---|---|
| Plataforma | C standard library |
La càrrega dinàmica és un mecanisme pel qual unprograma informàtic pot, entemps d'execució, carregar unabiblioteca (o un altrebinari) a la memòria, recuperar les adreces de les funcions i variables contingudes a la biblioteca, executar aquestesfuncions 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ónenllaços estàtics ienllaços dinàmics. A diferència de l'enllaç estàtic i l'enllaç dinàmic, la càrrega dinàmica permet que unprograma 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 perals sistemes operatius d'IBM perSystem/360, com araOS/360, especialment per ales subrutinesd'E/S, i per ales biblioteques d'execucióCOBOL iPL/I, i es continua utilitzant als sistemes operatius d'IBM per az/Architecture, com araz/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 deprocessament de transaccions d'IBM,CICS (de la dècada de 1970 en endavant) utilitza àmpliament la càrrega dinàmica tant per al seunucli com per a la càrrega normal delprograma 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ó deconnectors de programari. Per exemple, els fitxers del connector d'"objecte compartit dinàmic"*.dsodelservidor web Apache sónbiblioteques que es carreguen en temps d'execució amb càrrega dinàmica. La càrrega dinàmica també s'utilitza en la implementació deprogrames 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 operatiussemblants a UNIX com aramacOS,Linux iSolaris proporcionen càrrega dinàmica amb la biblioteca "dl" delllenguatge de programació C. Elsistema operatiuWindows 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 |