📄 dso.html.tr.utf8
字号:
s谋ras谋nda ilintileyici komutuna <code>-lfilanca</code> 艧eklinde belirtilerek 莽al谋艧t谋r谋labilir programla ilintilenirler. Do臒rudan 莽al谋艧t谋r谋labilir koda eklenen bu kodlar Unix y眉kleyicisinin program谋n ba艧lat谋lmas谋 s谋ras谋nda k眉t眉phaneyi <code>/usr/lib</code> alt谋nda <code>libfilanca.so</code> ad谋yla bulabilmesini sa臒lar. K眉t眉phanelerin aranaca臒谋 yerler ya <code>-R</code> gibi bir ilintileyici se莽ene臒i ile koda eklenir ya da arama yollar谋 <code>LD_LIBRARY_PATH</code> ortam de臒i艧keni arac谋l谋臒谋yla yap谋land谋r谋l谋r. B枚ylece 莽al谋艧t谋r谋labilir programda hen眉z 莽枚z眉mlenmemi艧 simgeler DSO i莽inde bulunarak 莽枚z眉mlenebilir.</p> <p>脟al谋艧t谋r谋labilir program i莽indeki simgelere normalde DSO i莽inden at谋fta bulunulmaz (genel kod k眉t眉phanesinin ba艧ka programlarca da kullan谋lmas谋 nedeniyle). Bu bak谋mdan DSO taraf谋nda b枚yle bir 莽枚z眉mleme yap谋lmaz. 脟al谋艧t谋r谋labilir program da DSO鈥檇aki simgeleri kendisi 莽枚z眉mlemeye u臒ra艧maz, bu i艧lemlerden tamamen Unix y眉kleyicisi (<code>ld.so</code>) sorumludur. (Asl谋nda, <code>ld.so</code>鈥檡u 莽a臒谋racak kod, her 莽al谋艧t谋r谋labilir program谋n i莽ine ilintilenmi艧 (dura臒an de臒il) ba艧latma kodunun bir par莽as谋d谋r.) Programlar taraf谋ndan ortakla艧a kullan谋lan k眉t眉phanelerin devingen olarak y眉klenmesinin sebebi basittir: K眉t眉phane kodu <code>libc.so</code> gibi bir sistem k眉t眉phanesine bir kere kaydedilip disk alan谋ndan yer kazan谋lm谋艧 olur.</p> <p>陌kinci y枚ntemde kullan谋lan DSO鈥檒ara yine <em>payla艧谋ml谋 k眉t眉phaneler</em> veya <em>DSO k眉t眉phaneleri</em> ad谋 verilir fakat bunlar谋n dosyalar谋 ge莽erli kabule g枚re <code>filanca.so</code> gibi isimlendirilse de genelde keyfi olarak se莽ilen bir dosya uzant谋s谋 kullan谋larak isimlendirilirler. Bu dosyalar genellikle programa 枚zel bir dizinde dururlar ve bu dosyalar谋 kullanacak olan 莽al谋艧t谋r谋labilir programla aralar谋nda 枚zdevimli olarak ba臒 kurulmam谋艧t谋r. Bunun yerine, 莽al谋艧t谋r谋labilir program DSO鈥檡u 莽al谋艧ma an谋nda <code>dlopen()</code> sayesinde kendi adres uzay谋na ekler. 脟al谋艧t谋r谋labilir program i莽in DSO鈥檇aki simgeler bu s谋rada 莽枚z眉mlenmez. 脰zdevimli olarak devreye giren Unix y眉kleyicisi, (varsa) artakalan simgeleri, 莽al谋艧t谋r谋labilir ihra莽 edilen simge k眉melerini (ve 枚zellikle her yerde haz谋r ve naz谋r <code>libc.so</code> i莽indeki t眉m simgeleri) kullanarak 莽枚z眉mler. Bu yolla DSO, 莽al谋艧t谋r谋labilir program谋n simge k眉mesi bilgilerini sanki kendisine ba艧tan dura臒an olarak ilintilenmi艧 gibi ula艧abilir.</p> <p>Son olarak, DSO鈥檔un programlama aray眉z眉n眉n getirilerinden yararlanmak amac谋yla 莽al谋艧t谋r谋labilir program, daha sonra da臒谋t谋m tablolar谋 vb. yerlerde kullanmak 眉zere <code>dlsym()</code> 眉zerinden DSO鈥檇aki belli simgeleri 莽枚z眉mlemek zorundad谋r. Ba艧ka bir deyi艧le: 脟al谋艧t谋r谋labilir program ihtiya莽 duydu臒u her simgeyi kullanmak i莽in kendisi 莽枚z眉mleme yapmak zorundad谋r. B枚yle bir mekanizman谋n getirisi, program谋n iste臒e ba臒l谋 par莽alar谋n谋n gerekli olana kadar y眉klenmemesidir (b枚ylece daha az bellek alan谋 kullan谋l谋r). Gerekti臒i zaman program谋n i艧levselli臒ini artt谋rmak amac谋yla bu par莽alar devingen olarak programa y眉klenebilir.</p> <p>DSO mekanizmas谋n谋n bu basit gibi g枚r眉nen i艧leyi艧inde zorluk i莽eren bir ad谋m 艧udur (ba艧kalar谋 da olabilir): Bir program谋n i艧levselli臒ini geni艧letmek i莽in DSO kullan谋l谋rken (ikinci y枚ntem) 莽al谋艧t谋r谋labilir programdan DSO i莽in simgelerin 莽枚z眉mlenmesi. Zorlu臒un sebebi, "tersine 莽枚z眉mleme" yap谋lmas谋d谋r; 莽al谋艧t谋r谋labilir program谋n simge k眉mesindeki DSO simgeleri k眉t眉phane tasar谋m谋na ayk谋r谋 bir 艧ekilde 莽枚z眉mlenir ve bu uygulama t眉m platformlarda haz谋r olarak desteklenmedi臒i gibi standartla艧m谋艧 da de臒ildir. Ge莽er uygulamada 莽al谋艧t谋r谋labilir program谋n evrensel simgeleri 莽o臒unlukla yeniden d谋艧a verilmez ve bu bak谋mdan bir DSO i莽inde kullan谋lmalar谋 uygun de臒ildir. Esas sorun, 莽al谋艧t谋r谋labilir bir program谋n i艧levselli臒ini 莽al谋艧ma an谋nda geni艧letmek i莽in DSO kullan谋m谋 s谋ras谋nda ilintileyicinin t眉m evrensel simgeleri d谋艧a vermesini zorlaman谋n bir yolunu bulmakt谋r.</p> <p>Payla艧谋ml谋 k眉t眉phane yakla艧谋m谋 bu bak谋mdan t眉r眉n眉n tek 枚rne臒idir, 莽眉nk眉 DSO mekanizmas谋 枚zellikle bunun i莽in tasarlanm谋艧t谋r, dolay谋s谋yla i艧letim sisteminin sa臒lad谋臒谋 hemen hemen t眉m k眉t眉phaneler i莽in kullan谋labilir. Di臒er taraftan, bir program谋n i艧levselli臒ini geni艧letmek i莽in payla艧谋ml谋 nesne kullan谋m谋 莽o臒u program taraf谋ndan kullan谋lan bir 艧ey de臒ildir.</p> <p>1998 itibariyle, DSO nesneleriyle 莽al谋艧ma an谋nda 莽al谋艧t谋r谋labilir program i艧levselli臒ini geni艧leten ba艧l谋ca birka莽 yaz谋l谋m paketi vard谋r: Perl 5 (XS mekanizmas谋 ve DynaLoader mod眉l眉 眉zerinden), Netscape Sunucusu, vd. 1.3 s眉r眉m眉nden itibaren Apache de bu gruba kat谋ld谋. 脟眉nk眉 Apache, mod眉l kavram谋n谋 zaten program i艧levselli臒ini geni艧letmek i莽in kullan谋yordu ve temel i艧levselli臒ine d谋艧 mod眉lleri ilintilemek i莽in dahili olarak da臒谋t谋m listesine dayal谋 bir yakla艧谋m kullanmaktayd谋. Dolay谋s谋yla Apache, mod眉llerini 莽al谋艧ma an谋nda y眉klemek i莽in DSO kullanmaya ba艧tan yazg谋l谋yd谋.</p></div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div><div class="section"><h2><a name="advantages" id="advantages">Getiriler ve G枚t眉r眉ler</a></h2> <p>Yukar谋da bahsedilen DSO鈥檡a dayal谋 枚zelliklerin getirileri 艧unlard谋r:</p> <ul> <li>Sunucu paketi 莽al谋艧ma an谋nda daha esnektir 莽眉nk眉, as谋l sunucuyu olu艧turan par莽alar derleme s谋ras谋nda <code class="program"><a href="./programs/configure.html">configure</a></code> se莽enekleriyle birle艧tirilmek yerine <code>httpd.conf</code> i莽inde <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> y枚nergeleri sayesinde 莽al谋艧ma an谋nda birle艧tirilebilmektedir. Bu yolla, 枚rne臒in tek bir Apache kurulumuyla birbirinden farkl谋 yap谋land谋rmalara sahip 莽ok say谋da sunucu 莽al谋艧t谋rmak m眉mk眉nd眉r. (standart veya SSL s眉r眉m眉; basitle艧tirilmi艧 veya g眉莽lendirilmi艧 s眉r眉m眉 [mod_perl, PHP3], vs.)</li> <li>Sunucu paketi kurulumdan sonra bile 眉莽眉nc眉 parti mod眉llerle kolayca geni艧letilebilir. Bu 枚zellikle, bir Apache temel paketinin yan谋nda PHP3, mod_perl, mod_fastcgi gibi ek paketler olu艧turan paket da臒谋t谋c谋lar谋na b眉y眉k yarar sa臒lar.</li> <li>Yeni Apache mod眉lleri i莽in daha kolay prototip geli艧tirilebilir: Mod眉l kaynak kodunu DSO/<code class="program"><a href="./programs/apxs.html">apxs</a></code> 莽ifti sayesinde Apache kaynak a臒ac谋n谋n d谋艧谋nda derleyip mod眉l眉n yeni bir s眉r眉m眉n眉 bir <code>apxs -i</code> komutunun ard谋ndan <code>apachectl restart</code> yaparak 莽al谋艧an bir Apache sunucusunda denemek daha kolay hale getirilmi艧tir.</li> </ul> <p>DSO kullan谋m谋n谋n g枚t眉r眉leri ise 艧unlard谋r:</p> <ul> <li>Her platformda haz谋r olarak desteklenmeme: T眉m i艧letim sistemleri bir programa devingen olarak kod y眉kleme becerisine sahip olmad谋臒谋ndan DSO mekanizmas谋 her platformda kullan谋lamaz.</li> <li>陌lk y眉klemede %20 yava艧lama: Unix y眉kleyicisi simgeleri 莽枚z眉mlemek zorunda oldu臒undan sunucu ilk ba艧lat谋l谋rken yakla艧谋k %20 daha yava艧 faaliyete ge莽er.</li> <li>脟al谋艧ma s谋ras谋nda % 5 yava艧lama: Konumdan ba臒谋ms谋z kodun (PIC - Position Independent Code) g枚reli adresleme i莽in karma艧谋k oyunlara girmesi ve bunun mutlak adresleme kadar h谋zl谋 olmamas谋 nedeniyle sunucu baz谋 platformlarda 莽al谋艧ma an谋nda yakla艧谋k %5 daha yava艧 莽al谋艧abilir.</li> <li>DSO'nun t眉m mod眉ller i莽in uygun olmamas谋: DSO mod眉lleri baz谋 platformlarda di臒er DSO temelli k眉t眉phanelerle ilintilenemedi臒inden (<code>ld -lfilanca</code>) DSO mekanizmas谋n谋 t眉m mod眉l t眉rleri i莽in kullanamazs谋n谋z (枚rne臒in a.out temelli platformlar bu i艧levselli臒i ELF temelli platformlar kadar iyi sa臒lamaz). Ba艧ka bir deyi艧le, DSO dosyalar谋 olarak derlenmi艧 mod眉llerin kullanabilece臒i simgeler ya Apache temel kodunda vard谋r ya Apache temel kodunun kulland谋臒谋 C k眉t眉phanesinde (<code>libc</code>) ve di臒er dura臒an ve devingen k眉t眉phanelerde vard谋r ya da konumdan ba臒谋ms谋z kodu i莽eren dura臒an k眉t眉phane ar艧ivlerinde (<code>libfilanca.a</code>) vard谋r. Di臒er mod眉lleri kullanmak i莽in tek 艧ans谋n谋z ya Apache 莽ekirde臒inin mod眉le bir at谋f i莽ermesini sa臒lamak ya da mod眉l kodunu <code>dlopen()</code> vas谋tas谋yla y眉klemektir.</li> </ul></div></div><div class="bottomlang"><p><span>Mevcut Diller: </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> |<a href="./ja/dso.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |<a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |<a href="./tr/dso.html" title="T眉rk莽e"> tr </a></p></div><div id="footer"><p class="apache">Copyright 2008 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> alt谋nda lisansl谋d谋r.</p><p class="menu"><a href="./mod/">Mod眉ller</a> | <a href="./mod/directives.html">Y枚nergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritas谋</a></p></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -