close

Dinamik bağlantı kitaplığı

Navigasyona git Aramaya git
dinamik bağlantı kitaplığı
Crystal Clear mimetipi make.png
geliştirici
microsoft
Genel bilgi
Dosya uzantısı .dll
mim tipi application/x-msdownload
Tek Tip Tip Tanımlayıcı com.microsoft.windows-dinamik-bağlantı-kütüphanesi
sihirli sayı MZ
için konteyner paylaşılan kitaplık
açık biçim ?

Dinamik bağlantı kitaplığı ( DLL ) , bir program için işletim sistemi tarafından istendiğinde yüklenen yürütülebilir kod içeren dosyalar için kullanılan terimdir . Bu ad, Windows işletim sistemlerine özeldir ve ".dll" bu dosyaların tanımlandığı uzantıdır , ancak kavram hemen hemen tüm modern işletim sistemlerinde bulunur.

Avantajlar

DLL'ler (çeşitli sistemlerde) statik kitaplıkların evrimi olarak görülebilir veya görülebilir ve benzer şekilde diğer uygulamalar tarafından kullanılan işlevsellik veya kaynakları içerir. Kullanımı bazı avantajlar sağlar:

  • Yürütülebilir dosyaların boyutunu azaltırlar: Kodun çoğu, yürütülebilir dosyanın kendisinde değil kitaplıklarda saklanabilir, bu da daha iyi modülerleştirme ile sonuçlanır.
  • Birkaç uygulama arasında paylaşılabilirler: Kod yeterince genelse, birden çok uygulama için yararlı olabilir (örneğin, MFC , Windows grafik API'sini kapsayan ve çoğu uygulama tarafından kullanılan genel sınıflara sahip dinamik bir kitaplıktır ).
  • Sistem belleğinin yönetimini ve kullanımını kolaylaştırırlar: Dinamik yükleme, işletim sisteminin bu kitaplıklar yüklendiğinde sistem performansını iyileştiren algoritmalar uygulamasını sağlar. Ayrıca paylaşıldıkları için onu kullanan tüm programlar için bir kopyasının bellekte tutulması yeterlidir.
  • Değişiklikler karşısında daha fazla esneklik sağlarlar: Dinamik kitaplığın yalnızca yeni bir sürümünü dağıtarak performansı artırmak veya küçük hataları düzeltmek mümkündür. Yine, bu düzeltme veya geliştirme, kitaplığı paylaşan tüm uygulamalar tarafından yararlanılacaktır.

"

Ancak, tüm faydalar değil. Windows sistemlerinde DLL'ler çok yaygındır ve birçok program aynı dinamik bağlantı kitaplıklarını kullanır. Ancak evrim nedeniyle, kitaplıkların her biri, iyileştirmeleri birleştirerek, ancak bunları artık uyumlu olmayacak şekilde değiştirerek gelişir. Bu iki istenmeyen etki yaratabilir:

  • Bir program yüklemesinin bir DLL dosyasını yeni uyumsuz bir sürümle değiştirmesi.
  • Programın kaldırılması, paylaşılan bir DLL dosyasını siler.

Her iki durumda da sonuç, eski sürümü kullanan programların çalışmayı durdurmasıdır. Bu sorunlara " DLL cehennemi " adı verildi.

Windows'un modern sürümleri ve daha yeni MSI yükleme komut dosyaları (özellikle yerleşik yükleme özelliği) bu sorunu ele alır ve çözer. Ancak, diğer yükleyiciler (eski sürümler) kullanıldığında veya manuel değişiklikler yapıldığında sorun devam eder.

Kitaplıkları içe aktar

Statik kitaplıklar gibi, DLL'lerin içe aktarma kitaplıklarının da bir .lib uzantısı vardır. Örneğin, çekirdek Windows işlevleri için ana dinamik kitaplık olan kernel32.dll , kernel32.lib aracılığıyla bağlanır. Bir içe aktarma kitaplığını statik bir kitaplıktan ayırt etmek için boyut dikkate alınabilir, çünkü içe aktarma kitaplıkları yalnızca DLL'ye başvuran semboller içerir. Bu nedenle, bir içe aktarma kitaplığının boyutu genellikle küçüktür. Ancak, her iki durumda da Unix ar biçimi kullanılır .

Yürütülebilir dosya oluşturulduğunda, DLL'ye başvuran harici sembolleri çözümlemek için statik kitaplıklar kullanılır. Yürütülebilir dosya, tüm DLL işlev çağrılarına başvurulan (her DLL işlevi kendi IAT girişini içerir) bir IAT içe aktarma adres tablosu ( Import Address Table ) içerir. Çalışma zamanında, IAT'deki girişler, DLL işlevlerinin gerçek bellek adresleriyle değiştirilir. [ 1 ]

Ayrıca

Referanslar

Dış bağlantılar