Dynamic-link library: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Caricamento: Migliorato la sezione
Riga 45:
== Caricamento ==
 
Le librerie dinamiche vengono caricate dal sistema operativo all'interno dello [[spazio di memoria]] del processo che le ha richieste. In questo modo l'accesso al codice della DLL avrà [[Prestazioni (informatica)|prestazioni]] quasi equivalenti a quelle del codice dell'applicazione stessa o del codice delle librerie statiche (in seguito si vedrà perché ''quasi'' equivalenti).
 
Per evitare che il codice dell'applicazione e quello della DLL occupino la stessa posizione in memoria, il [[linker]] dovrà predisporre la DLL per la [[rilocazione]]. In pratica, il sistema operativo determina un'area di memoria disponibile e rimappa ogni riferimento alla memoria contenuto nel codice della DLL. Siccome quest'operazione richiede tempo, ogni DLL dispone di un proprio ''indirizzo di base'' ideale: la rilocazione sarà necessaria solo se a questo indirizzo predeterminato è già stata mappata una precedente DLL. Per specificare l'indirizzo ideale si può usare una [[regola empirica]], basata sulla lettera iniziale del nome della DLL, secondo la seguente tabella:
 
{| class="wikitable"
{| border=1 cellspacing=0
!|Lettera iniziale!!Indirizzo di base
|-
|A-CA–C||<code>0x60000000 </code>
|-
|D-FD–F||<code>0x61000000 </code>
|-
|G-IG–I||<code>0x62000000 </code>
|-
|J-LJ–L||<code>0x63000000 </code>
|-
|M-OM–O||<code>0x64000000 </code>
|-
|P-RP–R||<code>0x65000000 </code>
|-
|S-US–U||<code>0x66000000 </code>
|-
|V-XV–X||<code>0x67000000 </code>
|-
|Y-ZY–Z||<code>0x68000000 </code>
|}