En başından…
Bilgisayarında bir program çalıştırdığında tam olarak ne oluyor?
Soru masum görünüyor. Ama cevabı, diskte duran ölü bir dosyadan CPU’nun içindeki milyarlarca transistöre kadar uzanan koca bir zincir — ve o zinciri baştan sona, hiçbir halkasını atlamadan kurabilen şaşırtıcı derecede az insan var. Çoğumuz halkaların bir kısmını gayet iyi biliriz: derleyicinin ne yaptığını, RAM’in ne işe yaradığını, syscall’ın hangi başlık dosyasında durduğunu. Parçaları tek tek bilmek yetmiyor; asıl iş onları doğru sırayla birbirine bağlamak.
Bu kitap tam olarak o bağlantıyı kuruyor. Üç soruyu omurga olarak alıyorum:
- Programlar gerçekten doğrudan CPU üzerinde mi çalışıyor, yoksa arada başka katmanlar mı var?
- Syscall dediğimiz şey tam olarak nedir ve nasıl çalışır?
- Tek bir çekirdek aynı anda tek bir talimat yürütebiliyorsa, birden fazla program nasıl aynı anda çalışıyor?

Bu konuyu tek parça hâlinde anlatan derli toplu bir kaynak, özellikle Türkçede neredeyse yok. Var olanlar ya tek bir katmana odaklanıyor — sadece CPU, sadece kernel, sadece derleyici — ya da okuru üç paragraf sonra kaynak kodun ortasında yalnız bırakıyor. Aradaki köprüyü kimse kurmuyor.
Anlatım sırasını buna göre kurdum: her bölüm bir öncekinin bıraktığı yerden başlıyor ve hiçbir kavramı, sana anlatmadan kullanmıyorum. Kitabı bitirdiğinde bilgisayarın açıldığı andan bir programın ilk talimatını yürüttüğü ana kadar olan zinciri kafanda baştan sona kurabiliyor olacaksın. Hedef bu, ölçü de bu.
Her Şeyin Tek Cümlelik Özeti
Bir uygulamaya çift tıkladığında ya da terminalde bir komut çalıştırdığında olay şuna benzer: programın dosyası diskten okunur, bellekte ona kendine ait bir çalışma alanı hazırlanır — o alan yalnızca ona görünür, başka hiçbir program oraya uzanamaz —, CPU o alandaki talimatları tek tek kendi içine çekip yürütür, kernel ise hem kaynakları paylaştıran hem de herkesin kendi sınırında kalmasını sağlayan hakem gibi davranır.
O tek cümlenin her kelimesini teker teker açacağız: CPU talimatları nasıl okur, RAM neden her programa sanki bilgisayardaki tek program oymuş gibi görünür, aynı anda birden fazla program nasıl çalışır, syscall neden gerekir ve Linux bir dosyayı gerçek bir programa nasıl dönüştürür?
Okurken Bilmen Gereken 6 Kavram
| Kavram | Tek cümlelik karşılığı |
|---|
| CPU | Talimatları okuyup uygulayan işlemci; bilgisayarın hesap yapan motoru. |
| RAM | Çalışan programların o anda kullandığı hızlı çalışma masası; elektrik kesildiği anda üzerindeki her şey silinir. |
| Disk/SSD | Programların ve dosyaların kapalıyken de durduğu kalıcı depo. |
| Kernel | Donanımı, belleği ve programları yöneten işletim sistemi çekirdeği. |
| Process | Çalışan bir programın işletim sistemi tarafından takip edilen örneği. |
| Syscall | Programın kernel’dan dosya okuma, bellek ayırma gibi kontrollü yardım istemesi. |
Program mı, process mi?
Kitap boyunca en çok karıştırılan ayrım bu, o yüzden baştan netleştirelim. Program, diskte duran ölü bir dosyadır; kimse çalıştırmadığı sürece hiçbir şey yapmaz. Process ise o dosyanın çalışır hâle gelmiş, kendi belleği ve kendi durumu olan canlı bir örneğidir. Aynı programdan aynı anda beş process çalıştırabilirsin: beşi de aynı dosyadan doğar, ama beşinin de belleği ayrıdır ve birbirlerinden habersizdirler.
Yol Haritası
Başlamadan önce sana üç şey söyleyeyim:
- İlk kez okuyorsan sırayla git ve ilk beş bölümü atlama. Orada kurduğumuz temeli atlarsan sonraki bölümler gereğinden çok daha ağır gelir.
- Register, user/kernel mode, syscall ve process kavramları sana tanıdık geliyorsa doğrudan 10. bölüme geçebilirsin. Tanıdık gelmiyorsa hiç dert etme; hepsini ilk beş bölümde sıfırdan kuruyoruz.
- Katlanmış “Derinleşme” panellerini ilk okumada açman gerekmez. Onlar ana anlatının dışında duruyor; her biri bir konuyu kaynağına kadar takip ediyor ve hiçbirini açmadan kitabın tamamını anlayabilirsin. İkinci okumada ya da merak ettiğin yerde aç.
Bir şeyi ancak başka birine anlatabildiğinde gerçekten anlarsın. Bu kitabın ölçüsü de bu: son sayfayı kapattığında, bilgisayarında bir programın nasıl çalıştığını baştan sona bir başkasına anlatabiliyor olacaksın.
1. bölüme devam et: Başlamadan Önce»