„DLL hell” változatai közötti eltérés
[ellenőrzött változat] | [ellenőrzött változat] |
a Átirányítások javítása (Turkásznivalók), replaced: Microsoft Windows → Microsoft Windows |
kiegészítés angolból |
||
1. sor: | 1. sor: | ||
A '''DLL-hell''' (DLL pokol) egy színes kifejezés arra a helyzetre, amikor a [[Windows]] [[operációs rendszer]] képtelen helyesen kezelni a [[telepítés (számítástechnika)|telepített]] [[Dinamikus csatolású könyvtár|DLL]]-eket. Ennek több oka is lehet: |
A '''DLL-hell''' (DLL pokol) egy színes kifejezés arra a helyzetre, amikor a [[Windows]] [[operációs rendszer]] képtelen helyesen kezelni a [[telepítés (számítástechnika)|telepített]] [[Dinamikus csatolású könyvtár|DLL]]-eket (dinamikus linkelésű könyvtárakat). Az általánosabb [[verziópokol]] speciális este. Ennek több oka is lehet: |
||
* A futtatott DLL számára szükséges másik DLL nem található vagy inkompatibilis a verziója; |
* A futtatott DLL számára szükséges másik DLL nem található vagy inkompatibilis a verziója; |
||
* Ugyanannak a DLL-nek több verziója is fenn van a rendszeren; |
* Ugyanannak a DLL-nek több verziója is fenn van a rendszeren; |
||
A DLL-ek lényege, hogy több [[Számítógépes program|program]] is használhatja ugyanazokat az eljárásokat, így [[memória (számítástechnika)|memóriát]] és [[lemez (számítástechnika)|lemezterületet]] takarítva meg, valamint a programok készítése is egyszerűsödik, mivel ugyanazt a rutineljárást csak egyszer kell elkészíteni. Azonban, ha egy új program úgy [[telepítés (számítástechnika)|telepít]] egy DLL-t, hogy felülírja annak régebbi változatát, ez eredményezheti, hogy régebb telepített programok (amelyek a régi DLL-t használták) többet nem fognak futni. |
A DLL-ek lényege, hogy több [[Számítógépes program|program]] is használhatja ugyanazokat az eljárásokat, így [[memória (számítástechnika)|memóriát]] és [[lemez (számítástechnika)|lemezterületet]] takarítva meg, valamint a programok készítése is egyszerűsödik, mivel ugyanazt a rutineljárást csak egyszer kell elkészíteni. Azonban, ha egy új program úgy [[telepítés (számítástechnika)|telepít]] egy DLL-t, hogy felülírja annak régebbi változatát, ez eredményezheti, hogy régebb telepített programok (amelyek a régi DLL-t használták) többet nem fognak futni, vagy hibásan működnek. |
||
Okozhatja a káoszt az is, ha egy [[Alkalmazás (számítástechnika)|alkalmazás]] nem törli le a csak általa használt DLL-t mikor a rendszerből eltávolítják. |
Okozhatja a káoszt az is, ha egy [[Alkalmazás (számítástechnika)|alkalmazás]] nem törli le a csak általa használt DLL-t, mikor a rendszerből eltávolítják. |
||
Extrém esetben ez az [[operációs rendszer]] teljes összeomlását is eredményezheti: a [[Windows|Microsoft Windows]] rendszerekben ez [[kék halál]]ként ismeretes. |
Extrém esetben ez az [[operációs rendszer]] teljes összeomlását is eredményezheti: a [[Windows|Microsoft Windows]] rendszerekben ez [[kék halál]]ként ismeretes. |
||
== Hasonló problémák más operációs rendszerek alatt == |
== Hasonló problémák más operációs rendszerek alatt == |
A lap 2018. október 18., 09:44-kori változata
A DLL-hell (DLL pokol) egy színes kifejezés arra a helyzetre, amikor a Windows operációs rendszer képtelen helyesen kezelni a telepített DLL-eket (dinamikus linkelésű könyvtárakat). Az általánosabb verziópokol speciális este. Ennek több oka is lehet:
- A futtatott DLL számára szükséges másik DLL nem található vagy inkompatibilis a verziója;
- Ugyanannak a DLL-nek több verziója is fenn van a rendszeren;
A DLL-ek lényege, hogy több program is használhatja ugyanazokat az eljárásokat, így memóriát és lemezterületet takarítva meg, valamint a programok készítése is egyszerűsödik, mivel ugyanazt a rutineljárást csak egyszer kell elkészíteni. Azonban, ha egy új program úgy telepít egy DLL-t, hogy felülírja annak régebbi változatát, ez eredményezheti, hogy régebb telepített programok (amelyek a régi DLL-t használták) többet nem fognak futni, vagy hibásan működnek.
Okozhatja a káoszt az is, ha egy alkalmazás nem törli le a csak általa használt DLL-t, mikor a rendszerből eltávolítják.
Extrém esetben ez az operációs rendszer teljes összeomlását is eredményezheti: a Microsoft Windows rendszerekben ez kék halálként ismeretes.
Hasonló problémák más operációs rendszerek alatt
A "DLL hell", magyarul "DLL pokol" szakkifejezés definíció szerint kizárólag Windows operációs rendszerre vonatkozhat, mivel a több processz által is használható megosztott eljáráskönyvtárakat egyedül itt hívják DLL-nek, ugyanis eredetileg ez a kiterjesztés tartozott hozzájuk.
Ugyanakkor megosztott eljáráskönyvtárak minden modernebb operációs rendszerben előfordulnak, csak a nevük más. Például Linux/Unix rendszerekben shared lib a nevük. A "DLL hell" probléma megfelelője elvileg velük kapcsolatban is előállhat, ám a ma használatos Linux rendszerek esetén több tényező is gátat vet neki:
- Linux (és a legtöbb Unix) alatt a kernel és a userspace folyamatok mind koncepcionálisan, mind strukturálisan élesen elhatárolódnak. Teljes rendszerleállást csak kernelhiba tud okozni, ám a shared libek teljes mértékben userspace-ben vannak. Ezért bármilyen shared lib-eredetű programhiba csak egyes programok hibás működését tudja okozni, magát a rendszert nem állíthatja le.
- A rendszer nyílt forráskódú volta miatt az egyes shared libek kezelői felülete is teljes mértékben megismerhető, és általában jól is dokumentált, ezért könnyebb őket a különböző verzióik között egymással kompatibilisre megírni
- A rendszer dinamikus linkere felhasználóként, akár futásidőben is beállítható, ezért nagyon könnyen kivitelezhető, hogy az egyes szoftverek más és más shared libeket használjanak. Erre szolgáló mechanizmus később a Windows-ban is megjelent (GAC: Global Assembly Cache).