İçindekiler
CPU'ya “Sen”i Katmak kitabının tam haritası: 23 bölüm, toplam yaklaşık 304 dakikalık okuma.
Giriş
Kitabın kapsamı, örnek makinesi, altı temel kavram ve yol haritası
Kısım 1 Başlamadan Önce
1. Sayılar: Bit'ten Kayan Noktaya
Bit, byte, ikilik sistem, negatif sayılar, kayan nokta ve onaltılık sistem
2. Metin, Bellek ve Kod
ASCII ve Unicode, endianness, bellek adresi, assembly ve derleme zinciri
Kısım 2 İşlemci ve Kernel
3. Temeller
CPU, register, instruction pointer ve fetch-execute döngüsü
4. Kernel, User Mode ve Syscall
Ayrıcalık seviyeleri, interrupt, syscall giriş yolu ve libc sarmalayıcıları
5. Mimariler: x86, ARM ve Diğerleri
Talimat kümesi ne demek, 32/64 bit farkı, x86-64 ile ARM, CISC ve RISC
- Talimat Kümesi: Donanımla Yazılım Arasındaki Sözleşme
- “32 bit” ve “64 bit” Tam Olarak Neyi Ölçer?
- x86’nın Hikâyesi: Bir Geriye Uyumluluk Anıtı
- ARM: Aynı Soruya Verilen Başka Bir Cevap
- CISC ve RISC: Kavga Neydi, Bugün Ne Kaldı?
- RISC-V: Sözleşmenin Kendisi Açık Olsa?
- Peki Aynı Program Neden Her Yerde Çalışmıyor?
- Özet
Kısım 3 Saat, Çekirdek ve Bellek
6. Saat, Çekirdek ve Mantıksal İşlemci
Clock cycle, frekans, IPC, güç duvarı, turbo, fiziksel çekirdek ve mantıksal işlemci
7. Bellek Hiyerarşisi
Register, L1/L2/L3 cache, RAM ve disk piramidi; SRAM ile DRAM farkı
8. Cache Nasıl Çalışır
Cache line, locality, tag/index/offset, associativity, MESI ve false sharing
Kısım 4 Aynı Anda Birçok İş
9. Zamanı Dilimle
Timer interrupt, preemption, zaman dilimleri, context switch, EEVDF
10. Aynı Anda İki Şey
Yarış durumu, kritik bölge, mutex, semafor, ölümcül kilitlenme, kilidin bedeli ve bellek modeli
11. İşlemciyi Hızlandıran Hileler
Pipeline, hazardlar, superscalar, out-of-order yürütme, register renaming ve SIMD
12. Tahmin, Spekülasyon ve Spectre
Branch prediction, spekülatif yürütme, yan kanallar, Spectre ve Meltdown
Kısım 5 Dosyadan Process'e
13. Bir Program Nasıl Çalıştırılır?
execve syscall'ı, kernel'ın binary format dedektifliği, shebang, binfmt_misc
14. Shell'den Kernel'e
Shell, PATH, fork+execve, pipeline, yönlendirme, iş kontrolü ve sinyaller
- Shell Nedir?
- Komut Çözümleme: PATH ve Built-in’ler
- Fork + Execve + Wait: Shell’in Motoru
- Pipeline: | Karakteri
- Yönlendirme: >, <, >>
- Environment Variables (Ortam Değişkenleri)
- Subshell ve Parantezler
- Peki Kernel Tarafında Ne Oluyor?
- pipe() ve dup2() ile Pipeline
- Pratik Deney: strace ile Fork, Exec ve Pipe
- İş Kontrolü: Ctrl-C Aslında Kime Gidiyor?
- Özet
15. Bir ELF Ustasına Dönüşmek
ELF formatı, program header, section header, static ve dynamic linking, GOT/PLT
Kısım 6 Belleğin Perde Arkası
16. Bellek Aslında Sanal
Sanal adres, sayfa, çerçeve, MMU, izolasyon, higher-half kernel ve ASLR
17. Adres Çevirisi ve TLB
Çok seviyeli sayfa tabloları, sayfa yürüyüşü, TLB, page fault ve demand paging
18. Bellek Güvenliği ve Sertleştirme
Buffer overflow, NX, stack canary, ASLR, PIE ve RELRO ile savunma katmanları
- Sorunun Kökeni: Sınır Kontrolü Olmayan Bellek
- NX: Veri Sayfaları Yürütülemez
- Stack Canary: Kanaryayı Madene İndir
- ASLR: Adresleri Her Çalıştırmada Karıştır
- PIE: Programın Kendisi de Taşınabilsin
- RELRO: Fonksiyon Tablosunu Kilitle
- FORTIFY_SOURCE: Derleyici Boyutu Biliyorsa Kontrol Etsin
- Hepsini Birlikte Görmek
- Katmanlar Neden Hepsi Birden Gerekli
- Özet
19. Fork'lar ve COW'lar Hakkında Konuşalım
fork syscall'ı, Copy-on-Write, init process, boot zinciri
Kısım 7 Zincirin Ötesinde
20. Dosya Sistemi ve I/O
Her şey dosyadır, file descriptor, VFS, inode, page cache, mmap ve epoll
21. Sanal Makineler ve Container'lar
Hypervisor, donanım desteği, namespace ve cgroup ile iki farklı izolasyon yolu
- Temel Fikir: Kernel’a Kernel Olmadığını Söylememek
- İki Tür Hypervisor
- x86’nın Sanallaştırmayla İmtihanı
- Belleğin İki Kez Çevrilmesi
- Sahte Donanım: Cihazlar Nereden Geliyor?
- Container: Donanımı Değil, Görüntüyü Taklit Etmek
- Kernel Bu Pencereyi Nasıl Kuruyor?
- Container İmajı Nedir?
- docker run Yazdığında Sırayla Ne Oluyor?
- Sanal Makine mi, Container mı?
- Özet
22. Son Söz
Büyük resim, buradan sonra ne okumalı, birkaç küçük not