Ana içeriğe geç

CPU'ya “Sen”i Katmak

Bir programı çalıştırınca CPU, RAM, disk ve kernel perde arkasında ne yapar? Hiç bilmeyenler için kolaydan zora ilerleyen bu rehberde bit/byte temelleri, bellek hiyerarşisi, process, syscall, multitasking, shell, sanal bellek, ELF, fork/COW ve Linux program yükleme akışını adım adım öğren.

Emircan Demir · Ağustos 2026

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:

Karalanmış bir dijital çizim. Uzun saçlı birisi, ikili dosyaları okuyan bir bilgisayarı inceliyor; sonra duruşu bozuk bir masaüstü bilgisayarda konuyu kazmaya başlı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

KavramTek cümlelik karşılığı
CPUTalimatları 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/SSDProgramların ve dosyaların kapalıyken de durduğu kalıcı depo.
KernelDonanı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.
SyscallProgramı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ı

BölümBaşlıkNe öğreneceksin?
1Başlamadan ÖnceBit, byte, ikilik sistem, hex, negatif sayılar, ASCII, bellek adresi ve assembly
2TemellerCPU, register, instruction pointer ve fetch-execute döngüsü
3Kernel, User Mode ve SyscallAyrıcalık seviyeleri, interrupt, syscall giriş yolu ve libc sarmalayıcıları
4Mimariler: x86, ARM ve DiğerleriTalimat kümesi ne demek, 32/64 bit farkı, x86-64 ile ARM, CISC ve RISC
5Bellek HiyerarşisiRegister, L1/L2/L3 cache, RAM ve disk piramidi; SRAM ile DRAM farkı
6Cache Nasıl ÇalışırCache line, locality, tag/index/offset, associativity, MESI ve false sharing
7Zamanı DilimleTimer interrupt, preemption, zaman dilimleri, context switch, EEVDF
8İşlemciyi Hızlandıran HilelerDennard duvarı, pipeline, hazardlar, superscalar, çok çekirdek, SMT ve SIMD
9Tahmin, Spekülasyon ve SpectreBranch prediction, spekülatif yürütme, yan kanallar, Spectre ve Meltdown
10Bir Program Nasıl Çalıştırılır?execve syscall'ı, kernel'ın binary format dedektifliği, shebang, binfmt_misc
11Shell'den Kernel'eShell, PATH, fork+execve, pipeline, yönlendirme, iş kontrolü ve sinyaller
12Bir ELF Ustasına DönüşmekELF formatı, program header, section header, static ve dynamic linking, GOT/PLT
13Bellek Aslında SanalSanal adres, sayfa, çerçeve, MMU, izolasyon, higher-half kernel ve ASLR
14Adres Çevirisi ve TLBÇok seviyeli sayfa tabloları, sayfa yürüyüşü, TLB, page fault ve demand paging
15Bellek Güvenliği ve SertleştirmeBuffer overflow, NX, stack canary, ASLR, PIE ve RELRO ile savunma katmanları
16Fork'lar ve COW'lar Hakkında Konuşalımfork syscall'ı, Copy-on-Write, init process, boot zinciri
17Dosya Sistemi ve I/OHer şey dosyadır, file descriptor, VFS, inode, page cache, mmap ve epoll
18Sanal Makineler ve Container'larHypervisor, donanım desteği, namespace ve cgroup ile iki farklı izolasyon yolu
19Son SözBüyük resim, buradan sonra ne okumalı, birkaç küçük not

Başlamadan önce sana üç şey söyleyeyim:

  1. İ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.
  2. 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.
  3. 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