Delat bibliotek

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 23 mars 2021; kontroller kräver 17 redigeringar .

Ett delat bibliotek eller delat bibliotek är en fil  som är avsedd att delas mellan . Moduler som används av ett program laddas från separata delade objekt till minnet i stället för att kopieras av länken när den kopierar en enda körbar fil för ett program.

Delade bibliotek kan länkas statiskt, vilket innebär att referenser till biblioteksmoduler löses och minne allokeras till modulerna när den körbara filen skapas. Men ofta fördröjs länkningen av delade bibliotek tills de laddas.

Vissa äldre system, t.ex. Burroughs MCP , Multics , har också bara ett format för körbara filer, oavsett om de är generiska eller inte. De har delat biblioteksfiler i samma format som körbara filer. Detta har två huvudsakliga fördelar: för det första kräver var och en av dem bara en starthanterare, inte två (att ha en separat starthanterare ger ytterligare komplexitet). För det andra tillåter det också körbara filer att användas som delade bibliotek, så länge de har en symboltabell . Typiska kombinerade körbara och delade biblioteksformat är ELF och Mach-O (båda på Unix) och PE (Windows).

I vissa äldre miljöer, till exempel 16-bitars Windows eller MPE för HP 3000 , var endast stackbaserad (lokal) data tillåten delad bibliotekskod, eller så lades andra betydande begränsningar på delad bibliotekskod.

Delat minne

Bibliotekskod kan delas i minnet med processer såväl som på disk. Om virtuellt minne används kommer processer att köras på en fysisk sida med RAM som är mappad till olika processadressutrymmen. Detta har sina fördelar. Till exempel, i ett OpenStep- system är applikationer ofta bara några hundra kilobyte stora och laddas snabbt; det mesta av deras kod fanns i bibliotek som redan var laddade av operativsystemet för andra ändamål.

Program kan dela RAM med hjälp av oberoende kod , som i Unix , vilket resulterar i en komplex men flexibel arkitektur. Detta säkerställer att det, genom olika knep som förmappning av adressutrymme och sidreservationer för varje delat bibliotek, har en större chans att delas. Det tredje alternativet är lagringen på en nivå som används av IBM System/38 och dess efterföljare.

I vissa fall kan olika versioner av delade bibliotek orsaka problem, särskilt när bibliotek med olika versioner har samma filnamn och används av olika applikationer installerade på systemet, som alla kräver olika versioner. Ett sådant skript är känt som DLL hell , uppkallat efter Windows och OS/2 DLL:er . De flesta moderna operativsystem efter 2001 har rensningsmetoder för att hantera sådana situationer, eller använder applikationsspecifika "privata" bibliotek.

Se även

Anteckningar