08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

İŞLEV GÖSTERİCİLERİ<br />

Çalıştırılabilen bir programın diskteki görüntüsüne program denir. Bir program<br />

çalıştırılmak üzere belleğe yüklendiğinde, yani çalışır duruma getirildiğinde process ya da<br />

task biçiminde isimlendirilir. Yani program diskteki durumu, process ise çalışmakta olan<br />

bir programı anlatır.<br />

Çalıştırılabilen bir program içerik olarak üç kısımdan oluşur:<br />

Çalıştırılabilen bir dosyanın işletim sistemi tarafından çalıştırılabilmesi için, önce diskten<br />

RAM'e yüklenmesi gerekir. İşletim sisteminin programı diskten alıp belleğe yükleyip<br />

çalıştıran kısmına yükleyici (loader) denir. Normal olarak bir programın belleğe<br />

yüklenmesi için, programın toplam büyüklüğünün bellekteki boş alandan küçük olması<br />

gerekir. Ancak UNIX, Windows gibi sistemlerde programlar küçük bir bellek altında<br />

çalıştırılabilir.<br />

Bu özelliğe "sanal bellek" (virtual memory) özelliği denir. Sanal bellek kullanımı ile önce<br />

programın küçük bir kısmı RAM'e yüklenir. İşletim sistemi, program çalışırken programın<br />

akışının kod ya da data bakımından RAM'de olmayan bir kısma geçtiğini anlar. Programın<br />

RAM'deki kısmını boşaltarak bu kez gereken kısmını RAM'e yükler. Yani program parçalı<br />

olarak çalıştırılır. DOS işletim sistemi sanal bellek kullanımı yoktur. DOS sisteminin<br />

program çalıştırmaktaki bellek miktarı en fazla 640KB kadardır.<br />

C'deki tüm statik ömürlü varlıklar, yani global değişkenler, statik yerel değişkenler,<br />

dizgeler çalıştırılabilir dosyanın "veri" (data) bölümüne yerleştirilir. Statik ömürlü<br />

değişkenler bu bölüme ilkdeğerleriyle yerleştirilir. Yerel değişkenler ile parametre<br />

değişkenleri çalıştırılabilir dosyanın "yığın" (stack) bölümünde geçici olarak yaratılırlar.<br />

Programın tüm işlevleri derlenmiş olarak "kod" (code) bölümünde bulunur.<br />

Nesnelerin nasıl adresleri varsa işlevlerin de adresleri vardır. Bir işlevin adresi, o işlevin<br />

makine kodlarının bellekteki başlangıç adresidir. İşlevlerin başlangıç adresleri işlev<br />

göstericileri denilen özel göstericilere yerleştirilebilir. Bir işlev göstericisine geri dönüş<br />

değeri ve parametreleri belirtilen türden olan bir işlevin adresi atanabilir.<br />

İşlev Göstericisi Değişkenlerin Tanımlanması<br />

Bir işlev göstericisi özel bir sözdizimi ile tanımlanır:<br />

int (*fp)(void);<br />

Yukarıdaki deyim ile ismi fp olan bir işlev gösterici değişkeni tanımlanıyor. fp gösterici<br />

değişkeni, geri dönüş değeri int türden olan, parametre değişkeni olmayan bir işlevi<br />

gösterebilir. Bir başka deyişle, fp gösterici değişkenine geri dönüş değeri int türden olan,<br />

parametre değişkeni olmayan bir işlevin adresi atanabilir.<br />

Tanımlamada '*' atomu ve bunu izleyen gösterici isminin ayraç içine alındığını<br />

görüyorsunuz. Bu ayracın soluna işlev göstericisinin göstereceği işlevin geri dönüş<br />

değerinin türü yazılır. Ayracın sağındaki ayraç içinde, işlev göstericisinin göstereceği<br />

işlevin parametre değişkenlerinin türü yazılır.<br />

Bir başka örnek:<br />

int (*fptr) (int, int);<br />

507

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!