DLL: Porovnání verzí

Smazaný obsah Přidaný obsah
m typografické úpravy a jedna stylistická
→‎Historie DLL souborů: drobná zpřesnění v zájmu srozumitelnosti
Řádek 4:
== Historie DLL souborů ==
 
V&nbsp;prvních verzích operačního systému [[Microsoft Windows]] byly všechny procesy spouštěny v&nbsp;jednom [[Správa paměti#Adresový prostor procesu|adresovém prostoru]] paměti počíteče a&nbsp;díky [[Multitasking#Nepreemptivní multitasking|kooperativnímu multitaskingu]] se procesy explicitně vzdávaly procesoru. Všechny funkce operačního systému poskytoval [[MS-DOS]], zatímco všechny vysokoúrovňové služby byly poskytovány pomocí DLL. Aplikační rozhraní ([[API|Aplikační rozhraní]]) pro vykreslování ([[GDI]], Graphics Device Interface|GDI]]) bylo implementováno v&nbsp;DLL zvané <code>GDI.EXE</code> a&nbsp;uživatelské rozhraní v&nbsp;<code>USER.EXE</code>. Tyto vrstvy nad DOSem byly sdílené pro všechny běžící procesy, ovšem(pod nikolivpodmínkou s&nbsp;cílem provozovat systémprovozu na strojích s&nbsp;méně nežalespoň jedním megabajtem paměti, ale) s&nbsp;cílem umožnit procesům vzájemně spolupracovat. Kód v&nbsp;GDI překládal příkazy pro vykreslování do specifických instrukcí různých zařízení: v&nbsp;případě displeje byly měněny body ve [[framebuffer]]u, v&nbsp;případě tiskárny byly příkazy transformovány na pokyny pro tiskárnu. Aby GDI mohlo pracovat s&nbsp;různými zařízeními, načítaly se do paměti takprogramy zvané [[Ovladačovladač zařízení|ovladače zařízení]].
 
Stejná architektura, pomocí které GDI načítalo ovladače pro různá zařízení, umožnila systému načíst programy tak, že bylo možné z&nbsp;těchto programů volat API funkce knihoven USER a&nbsp;GDI. Tento koncept se nazývá ''dynamické linkování''.
 
U&nbsp;nesdílených, tedy ''statických'', knihoven se jejich kód jednoduše ve fázi ''linkování'' přidává do všech jednotlivých programů, které příslušný kód volají.potřebují Pokuda více programů volá stejnou rutinu, bude kód této rutiny přidán do obou programůvolají. V&nbsp;případě dynamického linkování je sdílený kód umístěn do separátního souboru. Programy jsou s&nbsp;těmito soubory spojeny dynamicky pomocí operačního systému. To zlepšuje jak využití paměti, tak správu těchto dat. DLL soubory poskytují standardní výhody [[Knihovna (programování)#Dynamické knihovny|sdílených knihoven]], mezi které patří zejména [[modularita]]. Modularita umožňuje provést změny v&nbsp;jedné knihovně sdílené více aplikacemi bez nutnosti tyto aplikace modifikovat. Další přínos modularity je v&nbsp;možnosti použití generického rozhraní pro [[zásuvné moduly]]. Rozhraní umožňuje integraci různých modulů do již existujících aplikací opět bez nutnosti aplikace modifikovat. Tento koncept dynamické rozšiřitelnosti je hojně využíván v&nbsp;modelu dílčích objektů [[COM]] (Component Object Model).
 
V&nbsp;systémech Windows 1.x, 2.x a&nbsp;3.x sdílejí všechny okenní aplikace stejný adresní prostor, do kterého jsou DLL načteny pouze jednou. Data těchto knihoven jsou pak sdílena všemi aplikacemi, což mohlo být využito k&nbsp;nepřímé [[Meziprocesová komunikace|meziprocesové komunikaci]], ale také to mohlo vést k&nbsp;poškození nějaké aplikace. Od [[Windows 95]] měl pak každý proces svůj vlastní adresní prostor. Zatímco kód dynamických knihoven může být sdílen, data jsou od této doby privátní s&nbsp;výjimkou explicitního vyžádání ze strany knihovny.
DLL soubory poskytují standardní výhody [[Knihovna (programování)#Dynamické knihovny|sdílených knihoven]], mezi které patří zejména [[modularita]]. Modularita umožňuje provést změny v&nbsp;jedné knihovně sdílené více aplikacemi bez nutnosti tyto aplikace modifikovat. Další přínos modularity je v&nbsp;možnosti použití generického rozhraní pro zásuvné moduly. Rozhraní umožňuje integraci různých modulů do již existujících aplikací opět bez nutnosti aplikace modifikovat. Tento koncept dynamické rozšiřitelnosti je hojně využíván v&nbsp;modelu [[Component Object Model|COM]].
 
V&nbsp;systémech Windows 1.x, 2.x a&nbsp;3.x sdílejí všechny okenní aplikace stejný adresní prostor, do kterého jsou DLL načteny pouze jednou. Data těchto knihoven jsou pak sdílena všemi aplikacemi, což mohlo být využito k&nbsp;nepřímé [[Meziprocesová komunikace|meziprocesové komunikaci]], ale také to mohlo vést k&nbsp;poškození nějaké aplikace. Od [[Windows 95]] měl pak každý proces svůj vlastní adresní prostor. Zatímco kód dynamických knihoven může být sdílen, data jsou privátní s&nbsp;výjimkou explicitního vyžádání ze strany knihovny.
 
I&nbsp;když se DLL knihovny staly jádrem architektury systému Windows, mají mnoho nedostatků, které se souhrnně nazývají [[DLL peklo]] ({{Vjazyce2|en|''DLL hell''}}).<ref name="DLL_Hell">{{Citace elektronické monografie
Řádek 18 ⟶ 16:
| vydavatel = Microsoft Corporation
| url = http://msdn.microsoft.com/en-us/library/ms811694.aspx
| datum přístupu = 2009-07-11}}</ref> V&nbsp;současné době Microsoft poskytuje několik řešení tohoto problému. Patří mezi ně
*platforma [[Microsoft .NET]] nebo
*virtualizace založená na [[Microsoft Virtual PC]] a&nbsp;[[Microsoft Application Virtualization]], protože nabízí vysoký stupeň izolace aplikací.
*Dalším řešením pak je implementace [[Side-by-Side Assembly]].
 
== Funkce knihovny DLL ==