Bilgi Merkezi
Bundan sıkıldım, bana başka bir şey göstersen?

Library (computing)


Libvorbisfileyi kullanabilen bir uygulamanın örneği. Bu yüzden bir Ogg Vorbis dosya oynamak için. Bilgisayar bilimindeki

, bir kütüphane yazılımı geliştiren subprograms olan bir koleksiyonu olan. Kütüphaneler içerir" Yardımcı" Bağımsız kimse programlarına servisi sağlayan kod ve veri ,. Bu koda izin verir ve Veri ol paylaşılmış ve modül gibi bir modada değiştirdi. Bazı işletilebilirler her ikisi standalone programlardır ve Kütüphaneler , fakat çoğu kütüphaneler işletilebilirler değildir. İşletilebilirler ve kütüphaneler bil tipik olarak bir linker tarafından yapılan ,ı birleştiriyor olduğun gibi işlemden geçerek birbiriniye birleştirdiği gibinin, bil olanı bililen havale etmeleri yapar.

çoğu modern işletim sistemleri( OS) Sistem servisi kütüphaneler o alet çoğunluğunu sağlayın. Bunun gibi kütüphanelerin sağlamak için bir OS'i bekleyen commoditized servis modern bir uygulaması var. , çoğu kod Bu kütüphanelerde sağlanan modern uygulamalar tarafından kullandı.



içerikler

4 dinamik yükleme5 uzaktan kütüphaneler6 'da

//

inceleme

kütüphaneler onların, onlar onlar gören10'e işaret edeni birleştirilen oluncanın, , veyi nasıl birleştirdiği ,ı nasıl paylaştığı sınıflanmış olabilir.

geleneksel kütüphaneler

, kütüphaneler parazit tarihe göre yalnızca olabildi. Bir parazit kütüphanesi , hatta bilinen , bir arşiv gibi derleyici tarafından bir hedef uygulamasına kopya edilen alışılmışların bir takımından oluşun. , Linker , veya ciltçi , bir standalone işletilebilir uygulamayı üretiyor Derleyici üretimcileri standart kütüphaneleri sağlar( E. G. , standart C kütüphane) fakat Bilgisayar programcısılar kendi kullanmaları için kendi kütüphaneleri veya dağıtımı hatta yaradabilir.

bir linker nesne dosyalarının belirli tiplerinde çalışabilir , Ve belirliyi böyle gerektirin( Uyuşan) Kütüphanelerin tipleri. Bir parazit kütüphanesine nesne dosyalar toplama dağıtımları ve kullanmayı rahatlatabilir. Bir müşteri , hem ana program veya bir kütüphane subroutine , sadece adına işaret ediyor olan bir kütüphane parçasına ulaşır. Birleştirme işlemi kararı havale etmeleri verilen düzende kütüphaneleri araştırıyor. Eğer bir ad kütüphanelerin belirli takımında çoklu zamanları tesis eden olursa , o bir hatayı ekseriyetle düşünülmez.

dinamik bir kütüphanede verinin, kasteten yeni bir işletilebilire kopya etmenen olmadığını birleştiriyor olan

dinamiği birleştiriyor. veya Derlenmiş zamandaki kütüphane , fakat diskte ayrı bir dosyada kalır İşin yalnızca en az bir miktarı ne kütüphaneler işletilebilir ihtiyaçlar ve indeks adları veya numaraları kaydeden linker—it tarafından derlenmiş zamanda yalnızca yaptı. Birleştirmenin işinin çoğunluğu yüklenen zaman uygulamasında yaptı( Loadtime) Veya işlemin infazı boyunca( Çalışma aşaması) . Gerekli kodu birleştiriyor , Bir dolduran kimseyi çağırdı , aslında altta bulunan işletim sisteminin bölümüdür. Uygun zaman dolduran kimsesinde diskte uygun kütüphaneleri bulur ve İşlemin bellek uzayına kütüphanelerden uygun veriyi ilave eder.

bazı işletim sistemleri işlem başlangıcı çalıştırmasıdan önce loadtimede bir kütüphanede , yalnızca birleştirebilir; Diğerleri işlem o iken ve kütüphane sadecede linki çalıştırmaya başladıktan sonranın, bekleyen yapabilen( aslında İşaret etti Ben. E. , çalışma aşaması boyunca) . İkincisi sık sık çağırılır" Yüklemeyi erteleyin" . Hem durumda , bunun gibi bir kütüphane kütüphaneyi birleştirilen bir dynamicallyı çağırdı.

Plugins değiştir kütüphaneler oluncanın, benzer bir arayüzle diğer kütüphaneler tarafından , fakat farklı işlevsellik değiştir olan özellikle yararlı olan kütüphaneler ,ı birleştiren dynamicallyın bir yaygın kullanımıdır. Yazılım bire sahip olmak için söylenen olur" Plugin mimarlık" Eğer o niyet onunla esas işlevsellik için kütüphaneleri kullanırsa onlar değiştirilmiş olabilirler. Dynamicallyın kullanmasının, ister istemez onların, değiştirilmiş olabildiklerini kasteten bir uygulamanın mimarlık değilinde kütüphaneleri birleştirmediği not , bununla beraber ,.

dinamik Multics işletim sisteminde geliştirilen özgün biçimde birleştiriyor , 1964'i çalışmaya başlatıyor. O hatta MTS 'ın bir özelliğiydi( Michigan terminal sistemi) , geç 1960sı dahil etti. ( " MTS 'ın bir tarihi" , bilgi teknolojisi özeti , Vol. 5 , hayır. 5) Microsoft pencerelerde , Dynamically-linked kütüphaneler dinamik-link kütüphaneler veyayı çağırılır" DLLs" .

Relocation

birisi gerçek kütüphane verisinin anısına yerin, yükle işletilebilir ve tüm dynamically kütüphaneler birleştirdikten sonranın, belleğe yükle olan bilinen olamadığını ele alan dolduran kimse olduğunu karıştırır. Bu çünkü Bellek yerleri belirli dinamik kütüphanelerin, hangi yüklediğine bağlı olanı kullandı. O sonuçlanan farklı kütüphaneler arasında çatıştığından beri , kütüphanede ne de , işletilebilirde verinin kati yerini saklamak için hatta mümkün değildir: Eğer onların ikisi aynı belirtseydi o imkansız aynı programda her ikisiyi kullanmak için olacaktı. veya Adresleri üst üste bindiriyor Bu ver her kütüphanenin, şimdiye kadar kendi özgün adres aralığını yazdığı 64-parça mimarlıkların evlat edinmesi ,den artılan değiştirir.

o theoretically mümkün yük zamanında programı incelemek için olur ve Uygun bellek yerleri bir defa tüm kütüphanelerne işaretçilerle kütüphanelerde veriye işaret eden tümü değiştirir fakat Bu yöntem dolu olulan hem zamanın kabul edilemez miktarları veya belleği tüketecekti. , en dinamik kütüphane sistemleri derlenmiş zamanda programa boş adreslerle bir sembol masayı yerine birleştirir. Tüm kodlamak için işaret eder veya Kütüphanedeki veri bu masa , ithal malı dizinine geçer. Yük zamanı masasında loader/linker tarafından kütüphane kod/verinin yeriyle modifiye edilmiştir. Bu işlem çok yüksek bir oranda o bağırma diğer programlar , meselâ kesin kabuğu el yazılarını programlayan hızını etkileyen significantlya hala yeterince yavaştır.

kütüphane kendi giriş noktaları gibi onun içinde tüm yöntemlerin bir masası , bilineni içerir. Kütüphaneye bağırmalar" Sıçrayış" Bu masa , Bellekte kodun yeri , o zaman adında ona bakıyor. Bu kütüphaneye adındada giderleri içeri sokar , Fakat gecikme önemsiz olmak gibi ekseriyetle çok küçüktür. Çalışma aşaması

dinamik linkers/loadersteki

belirleme kütüphaneler işlevsellikte geniş çapta değişir. Bazı işletilebilirde saklanan oluyor olan kütüphanelere açık yollara bağlı olur. Kütüphane isimlendirmesine herhangi bir değişme veya filesystemin planı Bu sistemlere başarısız olmak için sebep olacak. Daha fazla , kütüphanenin yalnızca adı oğunlukla( Ve yol) İşletilebilirde saklanır mı , İşletim sistemiyle bir sistemi bazı algoritmaya dayalı kütüphane diski bulmak için sağlıyor.

birisi . , veya renamed , veyaya hareket etti , Eğer DLL 'ın uyumsuz bir versiyonu eğer kütüphane sililen olsaydının, aramada daha erken olan bir yere kopya edilen olsaydı işletilebilir bozukluk veya yüklemek için hatta başarısız olur; Hayati kütüphane dosyalar zarar verme sistemde hemen hemen herhangi bir işletilebilir tarafından kullandı( Meselâ C kütüphane libc. Bu yüzden Unix sistemlerdeki) Sistem unusableyi ekseriyetle tamamen icra edecek mi. Pencereler bunda DLL Kahrolsun gibi oğunlukla bilinir.

dinamik yükleme

dinamik yükleme bir dynamicallyın, kütüphane yükleri nerede birleştirdiğini birleştiriyor olan dinamiğin bir subsetidir. ve Yürütme süresinde istek üzerine yükünü boşaltır Yükle bunun gibi bir dynamically compile-zamanda yapılmış implicity , veya yürütme süresinde uygulama tarafından olan kütüphaneni açık bir şekilde birleştirdi. Tam istekler basitçe dosya yolları veya bir linker tarafından compile-zamanda bir nesne dosyasına dosya adları içerebilen kütüphane havale etmeleri ilave etme tarafından , yapılır. Açık istekler bir yürütme süresi linker API'i kullanıyor olan uygulamalar tarafından yaptı. Destek dynamicallyın, kütüphaneler hatta bir yürütme süresi linker API 'ın yolu ile destek dynamically yükleme bunun gibi kütüphaneleri birleştirdiği

çoğu işletim sistemleri. örneğin Microsoft pencereler LoadLibrary , LoadLibraryEx , FreeLibrary ve Microsoft dinamik link kütüphaneleriyle GetProcAddress'i işleyen API'i kullanır; POSIX sistemleri kurdu , Çoğu UNIX ve UNIX-gibi sistemler , kullanma dlopen , dlclose ve dlsymı içeriyor. Bazı gelişme sistemleri bu işlemi otomatikleştirir. Kütüphane konusuna

uzaktan kütüphaneler

başka çözüm işletilebilirlerden ayıran tamamen kullanmaktır( Bazı hafifsıklet formunda sık sık) Ve uzaktan bir prosedür bağırmasını kullanıyor olan onları çağırır( RPC) . Bu yaklaşma işletim sistemi dair-useyi yükseltir: Kütüphaneyi destekleme ihtiyaç duyulan kod Olun, uygulama desteği ve her diğer program için güvenlik oluyor olan kütüphaneyi desteklemene ihtiyaç duyulan kütüphaneyi desteklemene ihtiyaç duyulan kod Aynı koddur. Ek olarak , Bunun gibi sistemler kütüphaneyi ağın üzerinde istekler fakat , aynı makinede var olmak için ileri gerektirmez. Bunun gibi bir yaklaşmaya

downside her kütüphane bağırmasının, baştan yukarının önemli bir miktarını gerektiren. RPC bağırmalar genellikle çok pahalıdır , Ve nerede mümkün olduğundan sık sık kaçındı. yine de Bu yaklaşma birtakım bilgi alanı-belirli alanlarda popüler , istemci-sunucu sistemleri ve uygulama sunucuları meselâ girişim JavaBeans özellikle oldu.

dolu olmaya ek olarak kütüphane

'i durarak paylaştı veya Dynamically , kütüphaneler onların, programların arasında nasıl paylaştığı hatta sık sık sınıflara ayırılır. Paylaşmanın dinamik kütüphaneler teklif bazı formu , aynı zamandaki çoklu programlar tarafından kullanılmış olmak için izin verme aynı kütüphane izin verme hemen hemen her zaman. Parazit kütüphaneleri , tanım tarafından , paylaşılmış olamaz; Onlar her bir programa birleştirilirler.

paylaşılmış kütüphane dönemi biraz belirsizdir , Çünkü o hiç olmazsa iki farklı kavramı kapsar. İlk , o unrelated programlar tarafından diskte belirleyen kod paylaşmasıdır. İkinci kavram bellekte kod paylaşması ,dir , RAM 'ın aynı fiziksel sayfasını çalıştıranı programlayınca farklı adres uzaylarına haritasını yaptı. İkincisinin, daha iyi olacak olduğuna benzeyecekti. , Ve onun ünlem hakikate birtakım avantajları var örneğin OpenStep sistemde , Uygulamalar sık sık büyüklükte yalnızca birkaç yüz kilobytesti ve Hemen hemen hemen yükledi; Kodlarının muazzam çoğunluğu zaten işletim sistemi tarafından diğer amaçlar için yüklenmiş olan kütüphanelerde belirlendi. Mal olunmuş bir , bununla beraber var; Bir çok görevlilik çevresinde koşmak için yazılan kodu belirli bir şekilde paylaştı , Ve bunun başarıda etkileri var.

RAM kompleks fakat esnek bir mimarlık , veya normal kullanma tarafından , ieye götüren Unix 'de , gibinin, pozisyon bağımsız kod kullanma tarafından başarılmış olanı paylaşıyor. pencerelerde ve OS/2 gibi pozisyon bağımsız kod değildir. Bu sistemler emin olur , Çeşitli hileler tarafından pre-mapping adres uzayından hoşlanır ve Kodun paylaşan olmanın muhteşem bir olasılığı var olduğu her bir DLL için delikler ,ı ayırtıyor. Pencereler DLLs Unix duyumda kütüphaneleri paylaşılmaz. Bu makalenin geri kalanı her ikisi değişiklere görünüşler yaygında toplar. Çoğu modern işletim sistemlerindeki

, formadını olan kütüphaneler paylaştı" Düzenli" İşletilebilirler. Bu iki ana avantaja izin verir: İlk , İki yerine onların her ikisisi için yalnızca olan dolduran kimse yapma. Bir dolduran kimsenin ilave edilmiş karmaşıklığı iyi değer mal olunmuşu düşünülür. İkinci sınıf , o eğer onların bir sembol masası var DLLs , gibi işletilebilirler hattaya kullanılmış olmak için izin verir. Tipik çalıştırılabilir/DLL formatlar cin ve mah sayısı-Odır( Unix) Ve PE( Pencereler) . Pencerelerde , Kavram bir adım daha ileriyi alındı , Hatta sistem kaynakları meselâ fontlarla DLL dosya formadında toplanan oluyor. Aynı nerede evrensel olduğu OpenStep 'in altında doğru ,dir" Paket" Format hemen hemen tüm sistem kaynakları için kullanılır.

dönem DLL pencerelerde ve OS/2 ürünler çoğunlukla kullanılır. Unix platformlarda , Dönem kütüphaneyi paylaştı veya Nesneyi oğunlukla paylaştı Kullanan daha fazla olan; Kütüphane dosyaları paylaşılan , en yaygın dosya adı uzatma sonuç olarak . bu yüzden Başka nokta tarafından ve bir versiyon numarası ekseriyetle takibetti. Bu farklı anlama aitlerin görünürdesini teknik olarak doğrulanır. Daha fazla açıklamalar pozisyon bağımsız kod makalesinde müsaittir. Bazı durumlardaki

, Bir işletim sistemi DLLs 'ın farklı versiyonlarıyla , impedes hangisi başarısı ve istikrar fazla yüklenen oldu. Bunun gibi bir senaryo DLL Kahrolsun gibi bilinir.

nesne kütüphaneleri

dinamik özgün biçimde 1960sta geliştirilen birleştiriyor olmasına rağmen; , O geç 1980sa kadar tüketici işletim sistemlerine ulaşmadı O erken 1990s tarafından çoğu işletim sistemlerinde bazı formda genellikle müsaitti. O bu aynı devir o nesne-oriented programlama boyuncaydı( OOP) Programlama manzarasının önemli bir bölümü oluyor muydu. Çalışma aşaması ciltlemesiyle OOP geleneksel kütüphanelerin, sağlamayan ek bilgini gerektirir; Adlara ek olarak ve Kodun giriş noktaları belirledi , Onlar hatta onların, bağlı oldıkları nesnelerin bir listesini gerektirirler. Bu herhangi bir yöntemin tam tanımının, birtakım yerlerde tanımlanan olduğunun, kasteten OOP'in ana avantajlarının birisinin bir yan-etkisi , miras ,dir. Bu kayıt şusu kütüphanesi basitçe başkanın servisi gerektirdiğinden daha fazladır. , Doğru bir OOP sistemde , Kütüphaneler kendileri derlenmiş zamanda bilinen olmayabilir , Ve sisteme sistemden değişin Gelişme için aynı zaman başka ortak olandaki

hangisi birde programlayan multi-tierin fikiriydi" Görüntüleme" Bir masaüstü bilgisayar devam etme bir ana çerçevenin servisi veya veri deposu için minicomputer veya processingilizceyi kullanacaktı: Örneğin , bir GUI-based bilgisayardaki bir program bir minicomputere haberleri görüntüleme için kocaman bir veri kümesinin küçük örneklerine geri dönmek için gönderecekti. Uzaktan prosedür Bu görevler ele alılanı zaten çağırır , Fakat standart RPC sistem yoktu.

o her yerde kullanılmış olabildiği minicomputerin çoğunluğudan önce uzun değildi. ve Ana çerçeve satıcıları projelerde ikiyi birleştirmek için çalışıyordu , Formatlayan bir OOP kütüphaneni üretiyor Bunun gibi sistemler eğer onlar uzaktan erişimi destekleselerdi nesne kütüphaneleri , veya dağıtımlı nesneler gibi bilindi( Yapan tüm değildir) . Microsoft'un COMi yerel kullanma için bunun gibi bir sistemin bir örneği , DCOM modifiye edilmiş bir versiyon o destek uzaktan erişimidir. Bazı zaman nesnesi kütüphaneleri için

" Sonraki büyük şey" Programlama dünyasında. Sistemler yaratmak için birtakım eforlar platformlar tesadüf edecek olan vardı. , Ve şirketler kendi sistemlerine kilitlenen geliştiricileri alan çalışmayla yarıştı Örnekler IBM'in sistem nesne örneğini içerir( SOM/DSOM) , güneş Microsystem'in dağıtımlı nesneleri her yerde( Dişi geyik) , sonrakinin portatif dağıtımlı nesneleri( PDO) , dijitalın ObjectBrokeri , Microsoft'un bileşen nesne örneği( COM/DCOM) , ve CORBA-based sistemlerin herhangi bir numarası.

, o OOP kütüphanelerin, sonraki büyük thingilizce olmadığını sonunda ters çevirdi: Microsoft'un COMi ve sonrakinin ın dışında( Elma bilgisayarı şimdi) PDO'in , Bu eforların tamamının bittiğinden beri.

kavanoz( Dosya formadı) Dili programlıyor olan Java 'nda nesne kütüphaneleri için başlıca kullandı mı. O oluşur( Sıkıştırdı) Bytecodedeki sınıflar formatlar ve Bir Java sanal makine tarafından veya özel sınıfı dolduran kimseleri yüklenir.

isimlendirme

dinamik link kütüphaneleri hakkında

^ , Microsoft geliştirici ağ , httpa işaret eder: //msdn. Microsoft. Com/kütüphane/varsayılan. ASP? Url = /library-en-biz-dllproc-temel-dinamik-link _ kütüphane _ arama _ düzen. ASP

hatta

dış linkler

software library ile ilgili Anahtar Kelimeler :the time systems shared with used Dynamic system library libraries are not linking that and The for which can code
Bu makale Wikipedia' dan çarpma olup GNU FDL lisansı altındadır. Bu yazıyı yazan arkadaşlar buradadır.
Bir Şey Öğren bir Ferruh Mavituna aksiyonudur ve aktivist bir Wiki forkudur.

Wußten Sie das? - Lernet was