İnsana hiçbir şey öğretemezsin, sadece kendi başına bilgi edinmesi için ona yardım edebilirsin.

Galileo Galilei

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ı

Tug Of War - 1982
[Paul McCartney]
Tug Of War

Şarkı Paul’ün aynı adlı albümünden alınma. Albüm 1982 yılında çıktı; çıkar çıkmaz da -Amerika dahil olmak üzere- kısa sürede pek çok ülkede 1 numara oldu. Bütün ödülleri topladı, etkisini de uzun süre devam ettirdi...

Tug Of War çıktığında ben lise 2’inci sınıftaydım. 12 Eylül darbesiyle Türkiye'de siyasal, sosyal ve ekonomik yapı bütünüyle değişmeye başlamıştı. Toplum yeni düzene ayak uydurmaya çalışıyordu... John’un öldürülmesi olayı da belleklerde tazeliğini hala koruyordu...

Tug Of War
bizi çok etkilemişti. Sabah akşam dinliyorduk. Ayrıca bir Beatle’ın yıllar sonra yine liste başı olması da bizi çok mutlu etmişti…

Paul söylüyor...


Eski Haftalar

Yeni İçerik

Proseslerin Kod, Data, BSS, Stack ve Heap Alanları

Prosesler işletim sistemlerinin sundukları sistem fonksiyonlarıyla yaratılırlar. Örneğin, Windows sistemlerindeki CreateProcess, UNIX/Linux sistemlerindeki fork proses yaratan fonksiyonlardır. Windows ve UNIX/Linux sistemlerindeki proses yaratımları arasında önemli bir fark vardır. Windows sistemlerindeki CreateProcess fonksiyonu çalıştırılabilen (executable) bir dosyadan hareketle prosesi oluşturur. (Yani yaratılacak proses yol ifadesini argüman olarak verdiğimiz programın kodlarını çalıştıracaktır.) Halbuki UNIX/Linux sistemlerindeki fork fonksiyonu prosesin özdeş bir kopyasını oluşturmaktadır. Bu sistemlerde başka bir programın kodları ancak exec türevi fonksiyonlarla çalıştırılabilir. Fakat programcı bu sistemlerde doğrudan exec fonksiyonunu kullanırsa çalışmakta olan mevcut programın bellek alanı değiştirilerek proses yaşamına başka bir kodla devam eder. Bu nedenle UNIX/Linux sisteminde hem mevcut programı sürdürmek hem de yeni bir programı çalıştırmak istiyorsak fork ve exec fonksiyonlarını beraber kullanmamız gerekir. Bu sağlamak için de, tipik olarak, önce bir kez fork yaparız, alt proseste exec uygularız. Windows sistemlerindeki CreateProces fonksiyonu UNIX/Linux sistemlerindeki fork ve exec fonksiyonlarının bileşimine benzetilebilir.

Portable Executable Dosya Formatı

Microsoft, DOS işletim sisteminde çalıştırılabilen dosya formatı olarak MZ formatını kullanıyordu.[1] MZ formatı koruma mekanizması olmayan 8086 mimarisi için tasarlanmıştı ve korumalı modun gereksinim duyduğu özelliklere sahip değildi.  Bu nedenle Microsoft 16 bit Windows sistemleriyle birlikte çalıştırılabilir dosya formatını NE (New Executable) ismiyle, 32 bit Windows sistemleriyle de PE (Portable Executable) ismiyle yenilemiştir. Bugün 32 bit ve 64 bit Windows sistemlerinde çalıştırılabilen dosya formatı olarak PE formatı kullanılmaktadır. PE formatı UNIX türevi sistemlerde kullanılan ELF (Executable and Linkable Format) formatı gibi, işlemciden bağımsız olan ve bölümlerden (sections) oluşan bir formattır. Microsoft .NET ortamıyla birlikte PE formatı üzerinde bu ortamın gereksinimlerinin karşılanması için çeşitli eklentiler de yapmıştır. PE formatının orijinali 32 bittir. Fakat daha sonraları 64 bit sistemler için bu formatın 64 bit versiyonu da oluşturulmuştur. PE formatının 64 bitlik bu versiyonuna PE+ da denilmektedir.

Dinamik Diziler (Veri Yapıları 2. Bölüm)

Programlama dillerinin çoğunda diziler bir kere yaratıldıktan sonra artık büyütülemezler ve küçültülemezler. Oysa bazı durumlarda açacağımız dizinin uzunluğunu işin başında bilemeyiz. Programın çalışma zamanı sırasında onların dinamik bir biçimde büyütülmesini ya da küçültülmesini isteyebiliriz. Programın çalışma zamanı sırasında büyütülebilen ya da küçültülebilen dizilere dinamik diziler (dynamic arrays) denilmektedir.[1]  Dinamik diziler C, C++, Java ve C# gibi dillerde temel bir veri yapısı değildir. Yani bu dillerde dinamik diziler dilin sentaksı tarafından doğrudan desteklenmezler. Bunların fonksiyonlar ya da sınıflar kullanılarak gerçekleştirilmeleri gerekir. Ancak Perl ve Ruby gibi dinamik dizilerin dilin sentaksı tarafından temel bir veri türü olarak desteklendiği diller de vardır.

Önbellek (Cache) Sistemleri

Bilgisayar sistemlerinde pek çok durumda erişim hızı bakımından iki tür belleğin söz konusu olduğunu söyleyebiliriz: Yavaş bellek ve hızlı bellek. Yavaş bellek ucuz ve boldur, hızlı bellek ise pahalı ve kıttır. Tabi buradaki yavaş ve hızlı kavramları görelidir.  Sistemden sisteme yavaş ve hızlı bellekler farklılaşabilir. Örneğin bir sistemde RAM hızlı belleği temsil ederken disk yavaş belleği temsil ediyor olabilir. Başka bir sistemde ise RAM yavaş belleği temsil ederken işlemci içerisinde bulunan bellek hızlı belleği temsil ediyor olabilir. Ya da bir web sayfasının sunucuda saklandığı yer yavaş belleği temsil ederken onun istemcide bir dosyada saklanmış hali yavaş belleği temsil ediyor olabilir. Önbellek (cache) yavaş belleğin belli bölümlerinin hızlı bellekte tutularak yavaş belleğe erişim oranını azaltmak için kullanılan bir bellek yönetim tekniğidir. Önbellek sistemleri donanımsal ya da yazılımsal bir biçimde ya da karma bir biçimde gerçekleştirilebilmektedir.

UNIX/Linux Sistemlerinde Boru Haberleşmeleri

Boru haberleşmeleri yalınlığından dolayı en çok tercih edilen prosesler arası haberleşme yöntemlerindendir. Yöntem kendi içerisinde eşzamanlılığı da barındırdığından programcının ayrıca eşzamanlılık sorunuyla uğraşmasına gerek kalmaz. Boru haberleşmeleri ilk UNIX sistemlerinden beri neredeyse tüm UNIX türevi sistemlerce desteklenmiştir. Yöntem başta Windows olmak üzere pek çok işletim sisteminde de benzer biçimde uygulanmaktadır.

Temel Veri Yapıları (Veri Yapıları 1. Bölüm)

Programlarımızda tanımladığımız nesneler ya tek parçadan ya da birden fazla parçadan oluşurlar. Tek parçadan oluşan nesnelerin türlerine tekil türler, birden fazla parçadan oluşan nesnelerin türlerine ise bileşik türler denilmektedir. Örneğin, int türü tekil bir türdür. Çünkü int türden bir nesne tek parçadan oluşmaktadır. Halbuki diziler bileşik türlerdir. Bir dizi türünden nesne tanımladığımızda o nesne kendi içerisinde birden fazla parçadan oluşmaktadır. Örneğin:

C'de Bağlanım (Linkage) Nedir, Ne Değildir?

C'de kullanılan her değişken (identifier) için bir bildirimin yapılmış olması gerekir. Bağlanım (linkage) farklı bildirimlerdeki aynı isimli değişkenlerin aynı nesneyi ya da fonksiyonu belirtip belirtmediğini anlatan bir özelliktir. C'de değişkenlere ilişkin üç  bağlanım durumu söz konusudur:

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ı