Bir programcının en belli başlı üç özelliği: tembellik, sabırsızlık ve kibirdir.

Larry Wall

Bana Atılan E-Postaların Yanıtları

Sevgili Arkadaşlar...

Bu site aracılığıyla -bazıları sorulardan oluşan- pek çok e-posta alıyorum. Ancak yoğunluk nedeniyle bazılarına yanıt yazamadım.  Sakın unuttum sanmayın ve "adam bir yanıt bile yazmadı" diye düşünmeyin :-). Bundan sonra atacağınız e-postalara da daha kısa bir süre içinde yanıt vermeye çalışacağım. Gecikme için özür diliyorum...

 

Lütfen Alıntılarda Kaynak Belirtiniz

Çeşitli Internet sitelerinde yazmış olduğum makalelerden, ders notlarından, çizimlerden, kaynak kodlardan vs. bire bir alıntı yapıldığını, ancak kaynak belirtlmediğini görüyorum. Lütfen bu gibi alıntlarda kaynak belirtiniz.

Kitap Eleştirisi

Artık her hafta sitede bilgisayar alanında basılmış bir kitabın eleştirisini göreceksiniz. Umarım beğenirsiniz...

Haftanın Şarkısı

Casa Bianca
[Don Backy / Marisa Sannia / Ornella Vanoni]
Casa Bianca (1968)

Beyaz Ev anlamına gelen Casa Bianca 1968 yılında Don Backy tarafından bestelenmiş bir parça. İlk olarak Sanremo müzik festivalinde Ornella Vanoni ve Marisa Sannia tarafından söylendi. Ben en çok Don Backy’nin kendi yorumunu beğeniyorum. Fakat diğerleri de güzel...


Don Backy Söylüyor (1968)...


Marisa Sannia Sanremo'da söylüyor (1968)...


Ornella Vanoni Sanremo'da söylüyor (1968)...


Eski Haftalar

Yeni İçerik

C’nin Standart Dosya Fonksiyonlarının Uyguladığı Tamponlama Mekanizması

    Standart C fonksiyonlarını kullanmadan bir dosyanın her byte’ı üzerinde sırasıyla işlem yapmak isteyelim. Herhalde ilk akla gelecek yöntem doğrudan işletim sisteminin sistem fonksiyonlarını çağırmak olacaktır. Örneğin UNIX/Linux sistemlerinde dosyayı read fonksiyonuyla (Windows sistemlerinde ReadFile fonksiyonuyla) byte byte aşağıdaki gibi okuyabiliriz:
 
int fd;
ssize_t result;
unsigned char ch;

if ((fd = open("test", O_RDONLY)) < 0) {
    perror("open");
    exit(EXIT_FAILURE);
}

while ((result = read(fd, &ch, 1)) > 0) {
    /* Okunan byte işleniyor */
}   

if (result < 0) {
    perror("read");
    exit(EXIT_FAILURE);
}   

close(fd);

Programların Komut Satırı Argümanları

    İşletim sistemi tarafından prosese geçirilen komut satırı argümanları program içerisinden çeşitli biçimlerde elde edilebilmektedir. En yaygın yöntem komut satırı argümanlarının programın başlangıç fonksiyonunun parametrelerinden elde edilmesidir. Örneğin, C ve C++’ta komut satırı argümanları main fonksiyonuna parametre olarak geçirilirler. Bu dillerin standartlarına göre programın başlangıç noktasını (entry point) belirten main fonksiyonunun parametrik yapısı ve geri dönüş değeri aşağıdaki iki durumdan biri biçiminde olmalıdır:

int main(void)  { /* ... */ }
int main(int argc, char *argv[]) { /* ... */ }

UNIX/Linux Sistemlerinde Proseslerin Yaratılması ve Sonlandırılması

    Hemen her işletim sistemi bir proses yaratıldığında, o prosese ilişkin bilgileri bir veri yapısında saklar. Proses bilgilerinin saklandığı bu veri yapısına proses kontrol bloğu (process control block) denilmektedir.[1] Örneğin UNIX türevi sistemlerde proseslerin gerçek (real) ve etkin (effective) kullanıcı ve grup id’leri, çalışma dizinleri (current working directories), açmış olduğu dosyalar gibi önemli bilgilerin hepsi, onların kontrol bloklarında tutulmaktadır. Proses kontrol bloğunun nasıl düzenlendiği ve tam olarak hangi elemanlara sahip olduğu sistemden sisteme, hatta aynı sistemlerde versiyondan versiyona değişebilmektedir. Örneğin Linux sistemlerinde proses kontrol bloğu oldukça fazla elemana sahip olan task_struct yapısı ile temsil edilmiştir.  Bu yapının bir bölümünü aşağıda veriyoruz (Version:2.6.35, include/linux/sched.h):

UNIX/Linux Sistemlerinde exec İşlemleri

    UNIX/Linux sistemlerinde fork fonksiyonu prosesin yeni ve özdeş bir kopyasını oluşturmaktadır. Yani fork işlemi sonrasında alt ve üst prosesler aynı program kodunu (muhtemelen onların farklı kısımlarını) çalıştırıyor durumda olurlar. Halbuki pek çok uygulamada programcı yaratmış olduğu alt prosesin farklı bir program kodunu çalıştırmasını ister. İşte exec fonksiyonları prosesin başka bir program olarak çalışmaya devam etmesini sağlamaktadır. exec işlemleri sonrasında prosesin id değeri ve kontrol bloğu değişmez. Prosesin kod, data ve bss alanları çalıştırılabilen (executable) dosyadan alınarak yüklenir. Proses artık yaşamını başka bir program olarak sürdürür.

UNIX Türevi Sistemlerde Blokeli ve Blokesiz Modda Dosya İşlemleri - Temel Bilgiler



    Disk tabanlı dosyalar (regular file) üzerinde read ve write fonksiyonları ile okuma ve yazma yaparken uzun süreli bir bekleme söz konusu olmaz. Bu fonksiyonlar işlemlerini göreli olarak hızlı bir biçimde başarılı ya da başarısız olarak sonuçlandırırlar. Her ne kadar normal dosyalarla çalışırken işletim sistemi disk okuma ve yazmaları sırasında prosesi bloke ederek belli bir süre çizelge dışına çıkartabiliyorsa da buradaki bekleme önemli bir boyutta değildir. Halbuki bazı tür dosyalarla çalışırken bekleme belirsiz bir boyutta ve çok uzun süreli olabilmektedir

Proseslerin Çevre Değişkenleri

    Modern işletim sistemlerinde her prosesin bir çevre değişken bloğu vardır. Prosesin çevre değişken bloğu çevre değişkenlerinden ve onların değerlerinden oluşmaktadır. Örneğin, MESAJ bir çevre değişkeninin ismi olabilir, “Merhaba Dunya” ise onun değeri olabilir. Çevre değişkenleri pek çok işletim sisteminde proses yaratılırken belirlenebilmekte  ya da üst prosesten (parent process) aktarılabilmektedir. Çevre değişkenlerinin üst prosesten aktarılması en çok karşılaşılan tipik durumdur.

Kullanım Koşulları

Bu Web Sitesine (kaanaslan.com ve kaanaslan.net alan adları altında bulunan web sitesi.) girerek ve kullanarak Kullanım Koşullarına, burada bulunan her türlü koşul ve gerekliliğe veya bu Web Sitesinde gündeme getirilen her türlü koşula uymayı kabul etmiş olursunuz. Kullanım Koşullarını reddediyorsanız lütfen bu Web Sitesini kullanmayınız.

Kullanım koşulları, Site Editörleri (Web Sitesi yönetim paneline erişim hakkı olan ve bu şekilde içerik yayımlayan kişiler.) tarafından herhangi bir zamanda değiştirilebilirler. Kullanım koşullarındaki değişiklikler bu Web Sitesinde yayımlanmalarından itibaren geçerlidirler. Lütfen, olası değişikliklerden haberdar olmak için düzenli olarak Kullanım Koşulları sayfasını ziyaret ediniz.

Site Editörleri, Web Sitesinin içeriğinde Web Sitesinin formatında herhangi bir zaman, duyuruda bulunmadan değişiklik yapma hakkını saklı tutar. Site Editörleri Web Sitesine erişimi kaldırma veya kısıtlama hakkını saklı tutar.

Site Editörleri, Web Sitesindeki bilgilerin doğruluğunu sağlamak için çaba harcarlar ancak bu konuda hiçbir garanti vermezler ve sorumluluk almayı reddederler. İçeriğin tamamı "olduğu gibi" ve "erişilebildiği gibi" sunulmaktadır. Site Editörleri, açık veya dolaylı herhangi bir temsil ve garantiyi, herhangi bir istisna veya sınırlama olmaksızın, ticari amaca uygunluğu, herhangi bir amaca uygunluğu, hatasızlığı veya bu Web Sitesinin çalışması veya içeriğiyle ilgili konular dahil olmak üzere reddeder.

Site Editörleri, bu Web Sitesini güvenli bir biçimde ziyaret edebilmeniz için gereken önlemleri almaya gayret eder ancak Web Sitesinin güvenli olduğunu garanti etmezler. Gönderilen herhangi bir bilginin üçüncü şahıslar tarafından elde edilebileceğini kabul ediyorsunuz. Site Etitörleri bu Web Sitesinin, onu destekleyen sunucu ve bilgisayarların ve Site Editörleri tarafından size gönderilebilecek elektronik mesajların virus veya diğer zararlı bileşen içermediğini garanti etmezler.

Site Editörleri bu tip zararların oluşabileceği konusunda uyarılmış olsa da, Bu Web Sitesinin ve içeriğinin kullanılmasından veya yanlış kullanılmasından kaynaklanabilecek zararlar (Herhanbi bir sınırlama olmaksızın, iş kaybı, kazanç kaybı, veri kaybı, bilgi kaybı veya ticari faydaların aksaması da dahil olmak üzere.) konusunda hiçbir sorumluluk taşımazlar.

Bu Web Sitesinde, Site Editörleri'nin kontrolünde olmayan web sitelerine linkler bulunmaktadır. Site Editörleri bu web sitelerinin içeriğinden sorumlu tutulamaz. Site Editörleri bu linkleri Web Sitesi'nin kullanıcılarına kolaylık sağlamak amacı ile yayımlamaktadır ve bu durum, link verilen sitelerin içeriğinin her bakımdan onaylandığı veya önerildiği anlamına gelmez.

Web Sitesinin içeriği ile ilgili telif ve tüm diğer öncelik hakları (yazılım, ses, görüntü, metin, ve fotoğrafları içermek ancak bunlarla sınırlı olmamak üzere) Site Yöneticileri'ne aittir. Bu Web Sitesinin içeriği, kaynak göstermek şartı ile ve sadece kişisel, ticari olmayan kullanım için, değiştirilmeden çoğaltılabilir ve dağıtılabilir. İçeriğin başka bir kullanımı, dağıtımı, çoğaltımı, değiştirilmesi, sergilenmesi ve üçüncü kişilere verilmesi de dahil olmak üzere, Site Yöneticileri'nin yazılı izni alınmadan gerçekleştirilemez. Tüm çoğaltmalarda telif ve diğer öncelik hakları gözetileceklerdir.

Bu Web Sitesi üzerinden veya bu Web Sitesiyle bağlantılı olarak gönderilen herhangi bir bilgi (Kullanıcı Malzemeleri) gizlilik dışı ve öncelik dışı olarak kabul edilecek ve Site Editörleri'nin mülkiyetine geçerek, Site Editörleri'nin bu Web Sitesinde yayınladığı gizlilik politikalarına tabi olacaktır. Site Editörleri bu Kullanıcı Malzemelerini, herhangi bir sorumluluk ve tazminat taahhütü altında olmadan ve herhangi bir hak, fikir mülkiyeti hakkı ve/veya diğer mülkiyet haklarını göz önünde bulundurma gerekliliği olmaksızın, uygun gördüğü biçimde kullanabilir.

 

Haftanın Böceği Yukarı