Sdílená knihovna

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 23. března 2021; kontroly vyžadují 17 úprav .

Sdílená knihovna nebo sdílená knihovna je soubor  , který je určen ke sdílení mezi . Moduly používané programem jsou načteny ze samostatných sdílených objektů do paměti, spíše než aby byly zkopírovány linkerem , když kopíruje jeden spustitelný soubor pro program.

Sdílené knihovny mohou být staticky propojeny, což znamená, že odkazy na moduly knihoven jsou vyřešeny a paměť je modulům přidělena při vytvoření spustitelného souboru. Ale často je propojení sdílených knihoven zpožděno, dokud nejsou načteny.

Některé starší systémy, např. Burroughs MCP , Multics , mají také pouze jeden formát pro spustitelné soubory, ať už jsou nebo nejsou generické. Mají sdílené soubory knihovny ve stejném formátu jako spustitelné soubory. To má dvě hlavní výhody: za prvé, každý z nich vyžaduje pouze jeden zavaděč, nikoli dva (samostatný zavaděč přináší další složitost). Za druhé, umožňuje také použití spustitelných souborů jako sdílených knihoven, pokud mají tabulku symbolů . Typické kombinované formáty spustitelných a sdílených knihoven jsou ELF a Mach-O (oba na Unixu) a PE (Windows).

V některých starších prostředích, jako je 16bitový Windows nebo MPE pro HP 3000 , byla kódu sdílené knihovny povolena pouze data založená na zásobníku (místní) nebo byla na kód sdílené knihovny uložena jiná významná omezení.

Sdílená paměť

Kód knihovny lze sdílet v paměti s procesy i na disku. Pokud je použita virtuální paměť, procesy poběží na fyzické stránce RAM, která je mapována na různé adresové prostory procesů. To má své výhody. Například v systému OpenStep mají aplikace často velikost jen několik set kilobajtů a rychle se načítají; většina jejich kódu byla v knihovnách, které již byly načteny operačním systémem pro jiné účely.

Programy mohou sdílet RAM pomocí nezávislého kódu , jako v Unixu , což má za následek komplexní, ale flexibilní architekturu. To zajišťuje, že díky různým trikům, jako je předmapování adresního prostoru a rezervace stránek pro každou sdílenou knihovnu, má větší šanci na sdílení. Třetí možností je jednoúrovňové úložiště používané IBM System/38 a jeho nástupci.

V některých případech mohou různé verze sdílených knihoven způsobit problémy, zvláště když knihovny různých verzí mají stejný název souboru a jsou používány různými aplikacemi nainstalovanými v systému, z nichž každá vyžaduje jinou verzi. Takový skript je známý jako DLL hell , pojmenován po Windows a OS/2 DLL . Většina moderních operačních systémů po roce 2001 má k řešení takových situací metody čištění nebo používají „soukromé“ knihovny specifické pro aplikaci.

Viz také

Poznámky