Biblioteca informàtica: diferència entre les revisions

Contingut suprimit Contingut afegit
Cap resum de modificació
m Corregit: la -> l'[[aleatorització
Línia 48:
 
No obstant això, en la pràctica, en molts dels sistemes les programoteques no canvien freqüentment. Per tant, és possible calcular una adreça de càrrega probable per a cada programoteca compartida en el sistema abans que sigui utilitzada, i emmagatzemar aquesta informació a programoteques i executables. Si cada programoteca que és carregada és tractada així, llavors cadascuna d'elles serà carregada en direccions predeterminades, el que accelera el procés d'enllaç dinàmic. Aquesta optimització es coneix com [[Prebinding]] en Mac OS X i [[Prelinking]] a Linux.
Els desavantatges d'aquesta tècnica són el temps requerit de càlcul preliminar de les adreces cada vegada que les programoteques compartides canvien, la incapacitat d'utilitzar tècniques com la l'[[aleatorització dels espais d'adreces]], i el consum d'espai virtual d'adreces (un problema que queda mitigat per l'ús d'arquitectures de [[64 bits]], si més no en l'actualitat).
 
Un antic mètode era examinar el programa en temps de càrrega. Una vegada que totes les programoteques fossin carregades, es reemplaçaven totes les referències a dades a les programoteques, amb punters a localitats de memòria apropiats. Al Windows 3.1 (i en alguns sistemes encastats com les calculadores Texas Instruments), les referències eren manejades com a llistes lligades, permetent la fàcil enumeració i reemplaçament. Ara, la majoria de les programoteques dinàmiques lliguen una taula de símbols amb adreces en blanc dins del programa en temps de compilació. Totes les referències a codis o dades a la programoteca passen a través d'aquesta taula. En temps de càrrega, la taula és modificada amb la direcció de les dades/codi pel linker. Aquest procés és lent i afecta significativament la velocitat dels programes que diuen contínuament a altres programes, tal com alguns ''scripts'' de ''shell''.