B.5. unix Programları
unix C programlarında kullanılan fonksiyonlar iki kısma ayrılabilir: (1) unix temel sistem fonksiyonlarını doğrudan çağıran fonksiyonlar; bunlara sistem çağrısı denir. (2) Çeşitli kütüphanelerde bulunan işlevler; bunlara kütüphane yordamı denir. Şöyle ki:
Bir sistem çağrısı, işletim sistemine kullanıcı programı adına bir şey
yaptırma isteğidir. Örneğin, read
sistem çağrısı, işletim
sisteminden bir diskte depolanan bir dosyadaki verileri, kullanıcı programı
için ayrılmış bir bellek bölgesine okunması isteğidir. Bu, böyle bir işlemin
işletim sisteminin gözetimi altında yapılması gereken tipik bir durumdur.
Çok kullanıcılı, çok görevli bir sistemde, kullanıcı seviyesinde
çalışan bir programın donanım aygıtlarına doğrudan erişmesine izin verilmez;
çünkü aksi takdirde, hem sistem tutarlılığı, hem de güvenlik açısından
olumsuz sonuçlar ortaya çıkar.
Öte yandan, bir kütüphane yordamı, doğrudan bir işletim sistemi çağrısına
dönüştürülmeyen bazı görevleri gerçekleştirmek için bir kullanıcı programından
çağrılabilen bir modüldür, yani bir C fonksiyonudur. Örneğin, sort
kütüphane yordamı yapılardan oluşan bir diziyi sıralar. Uygun bir sıralama
algoritması kullanan benzer bir yordam, herhangi bir programcı tarafından
yazılabilir ve program içinden çağrılabilir. Bununla birlikte,
aynı işlevsellik C kütüphanesi tarafından sağlandığı için, genellikle
böyle bir şeye ihtiyaç yoktur. Bazı kütüphane
fonksiyonlarının (örneğin, printf
) önünde sonunda görevlerini
tamamlamak için bir sistem çağrısı (örneğin, write
) yapabileceğini
unutmayın.
Başka bir açıdan baktığımızda, C programlarından çağrılan fonksiyonları iki kısma ayırabiliriz: (1) Standart C kütüphanesini oluşturan yordamlar; bunlar Bölüm 9’da açıklanmıştır. (2) Genellikle çoğu unix sisteminde bulunan, ancak diğer C ortamlarında bulunmayabilen bazı yordamlar. İkinci gruptaki yordamlara unix sistemlerine özgü sistem çağrıları da dahildir ve unix dışındaki işletim sistemlerinde benzer, fakat özellikleri ve kullanımları açısından çok farklı sistem çağrıları yapan fonksiyonlar bulunabilir. Bunlar alt düzey girdi/çıktı, dosya ve dizin yönetimi, cihaz girdi/çıktı kontrolü, kullanıcı ve yetkilendirme işlemleri, zaman fonksiyonları, süreç ve iş yönetimi, süreçlerarası iletişim, ağ iletişimi gibi işlemler için kullanılır.