Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Dynamic-link library - Teknopedia
Dynamic-link library - Teknopedia
Disambiguazione – "DLL" rimanda qui. Se stai cercando altri significati, vedi DLL (disambigua).
Niente fonti!
Questa voce o sezione sull'argomento formati di file non cita le fonti necessarie o quelle presenti sono insufficienti.

Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti.
Dynamic-link library
Magic numberMZ
Tipo MIMEapplication/vnd.microsoft.portable-executable
Uniform Type Identifier (UTI)com.microsoft.windows-dynamic-link-library
SviluppatoreMicrosoft
TipoLibreria condivisa
Modifica dati su Wikidata · Manuale
Messaggio di errore su un sistema Microsoft Windows dovuto ad un problema nel caricamento di alcune librerie condivise

In informatica il dynamic-link library (in acronimo DLL, lett. "libreria a collegamento dinamico") è un formato di libreria condivisa utilizzato nei sistemi operativi di Microsoft.

In Windows una libreria dinamica è a tutti gli effetti un codice eseguibile. Ogni file eseguibile (EXE o DLL) dispone di un punto d'ingresso (entry point) invocato dal sistema operativo subito dopo il caricamento. Per una DLL il punto d'ingresso è mappato per convenzione sulla funzione DllMain (a discrezione, comunque, del compilatore).

La funzione DllMain, oltre che al caricamento della DLL, viene invocata anche allo scaricamento o quando un thread viene creato o distrutto nel processo in cui la DLL risiede.

A differenza di un file EXE, la DLL deve uscire dall'entry point non appena ha terminato le inizializzazioni necessarie.

Struttura

[modifica | modifica wikitesto]

Per semplificare, una libreria può essere pensata come una raccolta di funzioni. Ognuna di queste funzioni avrà il proprio indirizzo di base, calcolato come offset rispetto all'indirizzo di base assegnato dal sistema operativo durante il caricamento della libreria (vedi paragrafo successivo). Ciò che distingue una libreria dinamica è che queste funzioni possono essere esportate, ovvero i loro nomi vengono posti in una lista in una sezione dell'eseguibile. Perciò è possibile determinare il punto di ingresso di una funzione con una ricerca testuale basata sul nome della funzione. Questa operazione è svolta dall'API GetProcAddress che restituisce l'indirizzo della funzione il cui nome è passato come parametro.

Caricamento

[modifica | modifica wikitesto]

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 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:

Lettera iniziale Indirizzo di base
A–C 0x60000000
D–F 0x61000000
G–I 0x62000000
J–L 0x63000000
M–O 0x64000000
P–R 0x65000000
S–U 0x66000000
V–X 0x67000000
Y–Z 0x68000000

Collegamento

[modifica | modifica wikitesto]

Il collegamento di un eseguibile a una libreria dinamica avviene durante l'esecuzione (a run time) e avviene tramite l'API LoadLibrary, che accetta in input il nome della libreria. Ad esempio, LoadLibrary(_T("MyLib.dll")) caricherà all'interno dello spazio di memoria dell'applicazione la DLL MyLib.dll.

Il collegamento può essere di due tipi: esplicito o implicito.

Collegamento esplicito

[modifica | modifica wikitesto]

Il collegamento esplicito viene gestito direttamente dal codice del programma con l'utilizzo delle due API LoadLibrary e GetProcAddress precedentemente descritte. Se si utilizza il linguaggio C si allocherà un puntatore alla funzione specificata nel quale, al momento di utilizzare la funzione richiesta, si caricherà l'indirizzo con GetProcAddress. Questa tecnica permette di gestire in modo appropriato la condizione nella quale una DLL richiesta non è presente nel sistema, ma in generale è più macchinosa perché richiede l'utilizzo esplicito delle due API. Questa tecnica è indispensabile usando alcuni linguaggi di programmazione, quali ad esempio Visual Basic.

Collegamento implicito

[modifica | modifica wikitesto]

Il collegamento implicito è gestito direttamente dal linker in fase di compilazione, ed è usato quando si assume che una DLL sia sempre presente nel sistema. Ogni volta che nel codice sorgente è richiamata una funzione contenuta in una DLL, il linker collegherà la chiamata a funzione ad una funzione stub, ovvero ad una funzione fittizia. All'interno dell'eseguibile vi sarà una tabella contenente gli stub a tutte le funzioni di DLL richieste. In fase di caricamento dell'eseguibile, il sistema operativo caricherà in automatico tutte le DLL richieste e mapperà ogni stub al punto di ingresso della relativa funzione nella relativa DLL. Se una DLL (o anche una singola funzione in una DLL) richiesta non viene trovata il sistema operativo bloccherà l'avvio del programma con un messaggio di errore.

L'utilizzo del collegamento implicito ha uno svantaggio in termini di prestazioni, perché ogni volta che viene richiamata una funzione contenuta in una DLL vi è un doppio salto a funzione: prima allo stub e poi all'indirizzo della funzione; l'overhead generato è in realtà trascurabile.

Collegamento implicito ritardato

[modifica | modifica wikitesto]

Una variante al collegamento implicito prevista da alcuni compilatori è il collegamento ritardato. In questo caso viene utilizzato uno stub speciale, che non viene mappato al caricamento dal sistema operativo. Questo stub invece, la prima volta che verrà invocato, si mapperà automaticamente (con la tecnica del collegamento esplicito) alla funzione della DLL. Questa tecnica ha il vantaggio di non richiedere la presenza della DLL per il caricamento dell'eseguibile, insieme alla comodità di non dover caricare esplicitamente da codice la libreria.

Note

[modifica | modifica wikitesto]


Voci correlate

[modifica | modifica wikitesto]
  • Libreria (software)
  • Linking
  • Executable and linkable format
  • Portable Executable

Collegamenti esterni

[modifica | modifica wikitesto]
  • DLL, su sapere.it, De Agostini. Modifica su Wikidata
  • (EN) DLL, su Enciclopedia Britannica, Encyclopædia Britannica, Inc. Modifica su Wikidata
  • (EN) Denis Howe, Dynamically Linked Library, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
  • Panoramica completa sulle DLL: implementazione ed uso in ambiente unmanaged e managed, su negusweb.it. URL consultato il 19 marzo 2009 (archiviato dall'url originale il 16 novembre 2012).
  • Creare una DLL in Visual Basic 2008, su blackwolf96blog.wordpress.com.
V · D · M
Componenti di Windows
Strumenti di sistemaApp Installer · Configurazione di sistema · Console di ripristino · Controllo file di sistema · Deframmenta disco · Driver Verifier · DxDiag · Gestione attività · Gestione dispositivi · IExpress · Impostazioni · Management Console · Monitoraggio risorse · Monitor di sistema · Netsh · Pannello di controllo (Componenti) · PowerShell · Pulizia disco · Prompt dei comandi · Ripristino configurazione di sistema · Sysprep · System Information · System Policy Editor · Visualizzatore eventi · Windows Error Reporting · Windows Ink · Windows Installer · Windows Update (Windows Insider) · WinRE · WMI · Windows System Assessment Tool
ApplicazioniAssistente vocale · Assistenza rapida · Blocco note · Calcolatrice · Calendario · Centro PC portatile Windows · Contatti · Cortana · Edge · Fax e scanner · Feedback Hub · File Manager · Film e TV · Foto · Fotocamera · Groove Musica · Il tuo telefono · Lente di ingrandimento · Mappa caratteri · Memo · Messaggi · Meteo · Money · News · OneDrive · OneNote · Paint · Pay · Phone Companion · Posta · Registratore vocale · Richiesta supporto · Riconoscimento vocale · Skype · Sport · Store · Strumento di cattura · Suggerimenti · Sveglie e orologio · Visualizzatore 3D · Windows Media Player · Windows Story Remix · Windows To Go · Xbox Console Companion
ShellAero · AutoPlay · AutoRun · Barra delle applicazioni · Centro notifiche (Windows) · ClearType · Esplora file · Menu start · Search (Cartella speciale · IFilter · Namespace · Ricerca salvata · Servizio di indicizzazione) · Stili di visualizzazione di Windows XP · Visualizzazione attività · Windows Spotlight
KernelSystem Idle Process · Registro di sistema · DLL · EXE · NTLDR · Winlogon · Recovery Console · I/O · WinRE · WinPE · Kernel Patch Protection
ServiziBITS · CLFS · Copia shadow · Error Reporting · Multimedia Class Scheduler · Service Control Manager · Utilità di pianificazione · Wireless Zero Configuration
File systemCDFS · DFS · exFAT · FAT · IFS · NTFS (Collegamento fisico · EFS · Junction point · Mount Point · Reparse point · Symbolic link · TxF) · ReFS · UDF
ServerActive Directory · DFS Replication · Distributed Transaction Coordinator · DNS · Domini · Group Policy · Hyper-V · IIS · MSMQ · Profilo utente in roaming · Protezione di accesso alla rete · PWS · Reindirizzamento delle cartelle · Remote Desktop Services · Remote Differential Compression · Remote Installation Services · Rights Management Services · Server Core · Servizi di stampa per UNIX · SharePoint · System Resource Manager · Windows Deployment Services · Windows Media Services · WSUS
ArchitetturaArchitettura Windows NT · Console Windows · Copia shadow · CSRSS · Desktop Window Manager · Enhanced Write Filter · Graphics Device Interface · hal.dll · I/O request packet · Imaging Format · Kernel Transaction Manager · Librerie · Logical Disk Manager · LSASS · MinWin · NTLDR · Ntoskrnl.exe · Object Manager · Portable Executable (EXE · DLL) · Processo di avvio (NT · Vista) · Registro di sistema · Resource Protection · Security Account Manager · Server Message Block · SMSS · System Idle Process · USER · WHEA · Winlogon · WinUSB · XML Paper Specification
SicurezzaAppLocker · BitLocker · Credential Guard · Family Safety · Kernel Patch Protection · Mandatory Integrity Control · Prevenzione di esecuzione dei dati · Protected Media Path · Sicurezza e manutenzione · User Account Control · User Interface Privilege Isolation · Windows Defender · Windows Firewall
CompatibilitàCOMMAND.COM · Macchina virtuale DOS · Windows Subsystem for Linux (Microsoft POSIX) · Windows on Windows · WoW64 · Windows XP Mode
APIActive Scripting (WSH · VBScript · JScript) · COM (ActiveX · ActiveX Document · COM Structured storage · DCOM · OLE · OLE Automation · Transaction Server) · DirectX · .NET Framework · Universal Windows Platform · Windows Mixed Reality · Windows Runtime · WinUSB
GiochiSolitaire Collection
Obsoleti
Giochi3D Pinball · Chess Titans · FreeCell · Hearts · InkBall · Hold 'Em · Othello · Purble Place · Spider Solitaire · Solitario · Tinker
ApplicazioniActiveMovie · Anytime Upgrade · Backup e ripristino · Cardfile · CardSpace · CD Player · Contatti · Desktop Gadgets · Diagnostics · DriveSpace · DVD Maker · Easy Transfer · Fax · Food & Drink · Help and Support Center · Health & Fitness · HyperTerminal · Journal · Media Center · Meeting Space · Messaging · Messenger · Mobile Device Center · Movie Maker · MSN Dial-up · NetMeeting · NTBackup · Outlook Express · Rubrica · Travel · Photo Gallery · Photo Viewer · Program Manager · Steps Recorder · Syskey · WinHelp · Write
AltriScanDisk · File Protection · Media Control Interface · Next-Generation Secure Computing Base · POSIX subsystem · Interix · Video for Windows · Windows SideShow · Windows Services for UNIX · WinFS
Trasferiti su
Microsoft Store
Lettore DVD · Hover! · Mahjong · Minesweeper
DeprecatiInternet Explorer · Media Player
RimossiMicrosoft WordPad · Paint 3D · Mappe
  Portale Informatica
  Portale Microsoft
Estratto da "https://it.wikipedia.org/w/index.php?title=Dynamic-link_library&oldid=145249222"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022