Gazi Osman Pasa
Would you like to react to this message? Create an account in a few clicks or log in to continue.



 
AnasayfaAnasayfa  PortalliPortalli  GaleriGaleri  Latest imagesLatest images  AramaArama  Kayıt OlKayıt Ol  Giriş yap  

 

 DLL Nedir?

Aşağa gitmek 
YazarMesaj
GüLNuR
Admin
Admin
GüLNuR


Kadın
Mesaj Sayısı : 543
Yaş : 36
Location : Tokat
İş: : ögrenci
Lakabı : Senarist
Tuttuğunuz Takım? : DLL Nedir? 1444
Ruh Halin? : DLL Nedir? 1131
Kayıt tarihi : 25/09/07

Kişi sayfası
Başarı Puanı:
DLL Nedir? Img_left0/0DLL Nedir? Empty_bar_bleue  (0/0)
Seviye:
DLL Nedir? Img_left0/0DLL Nedir? Empty_bar_bleue  (0/0)
Güçlülük:
DLL Nedir? Img_left0/0DLL Nedir? Empty_bar_bleue  (0/0)
DLL Nedir? Empty
MesajKonu: DLL Nedir?   DLL Nedir? EmptyPtsi Ekim 01, 2007 12:09 am

DLL (Dynamic Link Library) yani dinamik link kütüphaneleri olarak isimlendirilen dosyalar Windows'un en önemli parçalarından birisidir. Bir DLL dosyası .exe gibi çalıştırılabilir bir programın icrası anında çağırabileceği fonksiyonları barındırmaktadır.

Yani diğer bir değişle dll, programların dinamik olarak bağlantı kurabileceği fonksiyonların bir kütüphanesidir.

Bağlantılar statik ve dinamik olmak üzere ikiye ayrılmaktadır:

1-) Statik bağlantılar icra sırasında değişmezler ve programınızın icrası sırasında kütüphane içindeki
fonksiyonlara erişim için gerekli tüm adres bilgileri icra edilebilir dosya derlendiği sırada
belirlenmiştir ve sabittir.

2-) Dinamik bağlantılar ise sadece gerektiği zaman kurulurlar. Eğer programınız ihtiyaç duyduğu bir
fonksiyonu kendi içinde bulamazsa o zaman Windows gerekli dll'i yükler ve içindeki fonksiyonları
programınızın emrine verir. Bu sırada Windows dll içindeki tüm fonksiyonların adreslerini çözümler
ve dinamik olarak programınız arasında bağlantı kurulmasını sağlar.

Örneğin Visual Basic içinde kullanılan tüm özel kontroller birer dll'dir. Tek farkı sadece Visual Basic tarafından işlenen mesajların kendine özgü işlem gerektirmesidir.

Neden DLL kullanılır?

Dll neden kullanmamız gerektiğini 4 ana başlık altında toplayabiliriz.

- C İcra anı (Run-Time) fonksiyonlarına erişim:

C İcra anı kütüphanesi Visual Basic programcılarına bahşedilmeyen bir çok yararlı fonksiyonları barındırır. Örneğin _dos_getdiskfree fonksiyonu diskteki mevcut boş alanı hesaplamak için kullanılmaktadır.

- Windows API'ye (Uygulama Programlama Arayüzü) Erişim:

Bazı Windows API fonksiyonları "Callback" özelliğine sahiptir. Yani bunu açıklamak gerekirse API çağrısının işlenmesi sırasında Windows'un o fonksiyonu rekürsif olarak yani tekrarlı olarak çağırması diyebiliriz. Buna örnek olarak "EnumTaskWindows" fonksiyonunu verebiliriz. Bu fonksiyon o anda icra edilen görevlerin sahiplendiği pencerelerin "handle" yani bir çeşit tanımlayıcısını geri döndürmede kullanılır diyebiliriz.

- Hız:

C, 0 ve 1 gibi doğal makine diline en yakın programlama dillerinden biridir. Bu programlarınızın eğer doğru olarak kodlanmış ise c dilinde en hızlı olarak çalışacağı anlamına gelmektedir.

- Kullanılacağı zaman yüklenme:

Bir dll içindeki kod veya veri sadece gerektiği zaman belleğe alınır. Bu programların ihtiyaç duyduğu bellek miktarının düşük olmasını sağlamakla beraber yüklenme süresini azaltırlar.

Bir Dll'in Anatomisi

Her dll, çalıştırılabilir dosyalar tarafından kullanılabilmesi için içinde mutlaka bir LibMain fonksiyonu ve Windows Çıkış Prosedürü(WEP) bulundurması gerektirmektedir.

- LibMain:

Bir DLL yukarıda da belirtildiği gibi mutlaka LibMain fonksiyonu barındırması gerekir. LibMain fonksiyonu DLL'in yüklenmesini isteyen ilk program tarafından çağırılır ve aşağıdaki açıklanan parametreler bu fonksiyona aktarılır:

- HANDLE : DLL örneğinin handle değerini belirtir.
- WORD : Kütüphane'nin veri segmentini belirtir.
- WORD : Yığın boyutu
- LPSTR : Komut satırı parametreleri

-WEP:

WEP(Windows Çıkış Prosedürü) bir dll'in bellekte artık görevi bittiğinde temizlenmesi işlemini gerçekleştirir. Windows işletim sistemlerinde her dll içinde bir tane WEP fonksiyonu gereklidir. Windows 3.1 için bu seçimliktir. Bir WEP fonksiyonu Visual C'de modül tanımlama dosyasında (.DEF) aşağıdaki gibi bulunmalıdır.

EXPORTS
WEP

- İhraç edilmiş Fonksiyonlar:

Bu fonksiyonlar sizin DLL içinden çağırmak istediğiniz fonksiyonlardır. Bunlar geriye doğru uyumluluk sağlamak için _export._export ile gösterilir. Ayrıca çağırmak istediğiniz tüm fonksiyonlar dll'inizin (.DEF) dosyası içinde listelenmiş olması gerekmektedir.

DLL Bellek Yönetimi Konuları

Geniş bellek modelinde C, statik veya global tüm değişkenleri (Bir fonksiyon dışında tanımlanmış) programın yığın boşluğunda saklar. Diğer değişkenleri de yığın(Stack) da saklar.

Küçük ve orta bellek modelinde ise tüm işaretçiler(Pointers) geçerli olarak near özelliğindedir. Bu veri segmenti (DS) kayıtçısına veya yığın segmenti (SS) kayıtçısına 16-bit ofset değerleriyle ulaşılacağını belirtir. Ne yazık ki derleyiciye bunun DS' ten mi yoksa SS' ten gelen bir ofset mi olduğunu anlatmak için bir yol yoktur. Birçok programda DS ve SS aynı segmenti işaret ettiği için bu bir problem olmaz. Bununla birlikte dll özel bir durumdur.

Bir DLL kendi veri segmentine sahiptir fakat yığınını çağıran program ile birlikte ortaklaşa kullanır. Bu DS ve SS'in aynı konuma işaret etmeyeceğini anlamına gelmektedir. Bu problemi çözmenin en kolay yolu DLL'i tüm değişkenlerin 32-bit değerleriyle referans verildiği geniş bellek modelini kullanmaktır.

Neden Bellek Dinamik olarak Tahsis edilir?

Belleği dinamik olarak tahsis etmek Windows'a özgü bir yöntemdir. Büyük boyutta veriyi bir dizi içinde deklare etmek hem programınızın 64k'lik yığınını hem de program veri segmentinin dolmasına neden olur ve bununla birlikte disk ve bellek boşluğu boşuna doldurulmuş olur. En iyisi ihtiyaç olduğu zaman belleği doldurmak ve işimiz bittiğinde de belleği boşaltmaktır.
Sayfa başına dön Aşağa gitmek
http://www.gopforum.okuyoruz.biz
 
DLL Nedir?
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» API Nedir
» Seri Port nedir?
» Modem Nedir ?
» Topoloji nedir ve fiziksel topolojiler nelerdir?

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Gazi Osman Pasa :: Bilgisayar/ Teknoloji Dünyası :: Donanım-
Buraya geçin: