Sözlük
CPU'ya “Sen”i Katmak boyunca geçen 141 terim, ilk tanımlandıkları bölüme bağlantılarıyla.
A
- AArch64 · ARM64
- ARM mimarisinin 64-bit sürümü. Güç verimliliği baskısı altında büyüdüğü için telefonlarda, Apple Silicon’da ve giderek daha çok bulut sunucusunda kullanılıyor.4. bölüm: Mimariler: x86, ARM ve Diğerleri
- Amdahl yasası
- Bir programın hızlanmasının, paralelleşemeyen seri kısmıyla sınırlı olduğunu söyleyen kural. %5'i seri olan bir program sonsuz çekirdekle bile en fazla 20 kat hızlanır. Gustafson'ın karşı argümanı, pratikte problem boyutunun da büyüdüğüdür.8. bölüm: İşlemciyi Hızlandıran Hileler
- ASCII
- Karakterleri sayılara eşleyen standart. Örneğin "A" harfi 65 sayısıyla temsil edilir; metin dosyaları bu eşlemenin (ya da onu kapsayan UTF-8'in) sonucudur.1. bölüm: Başlamadan Önce
- ASLR · address space layout randomization
- Stack, heap ve kütüphanelerin başlangıç adreslerinin her çalıştırmada rastgeleleştirilmesi. Saldırganın hedef adresi önceden bilmesini engeller.15. bölüm: Bellek Güvenliği ve Sertleştirme
- Assembly
- Makine kodunun insan tarafından okunabilir karşılığı. Her assembly satırı kabaca tek bir CPU talimatına denk gelir.1. bölüm: Başlamadan Önce
- Associativity
- Bir bellek adresinin cache içinde kaç farklı yere düşebileceği. Direct-mapped’te tek yer, fully associative’te her yer, N-way set associative’te N yer vardır; sayı büyüdükçe conflict miss azalır, karşılaştırma maliyeti artar.6. bölüm: Cache Nasıl Çalışır
B
- Bellek adresi · memory address
- Bellekteki bir byte'ı benzersiz biçimde gösteren sayı. 64-bit sistemlerde adresler 64 bit genişliğindedir.1. bölüm: Başlamadan Önce
- Bellek hiyerarşisi · memory hierarchy
- Register, cache, RAM ve diskin hız-maliyet dengesine göre katmanlandığı yapı. Yukarı çıktıkça hızlı ve pahalı, aşağı indikçe büyük ve ucuz olur.5. bölüm: Bellek Hiyerarşisi
- binfmt_misc
- Linux'un çalıştırılabilir dosya biçimlerini imzalarına göre tanıyıp uygun yorumlayıcıya yönlendirmesini sağlayan mekanizma.10. bölüm: Bir Program Nasıl Çalıştırılır?
- Bit
- 0 veya 1 değerini taşıyan en küçük bilgi birimi. Bilgisayardaki her veri nihayetinde bit dizilerinden oluşur.1. bölüm: Başlamadan Önce
- Branch prediction
- CPU'nun bir dallanmanın hangi yöne gideceğini önceden tahmin edip pipeline'ı boş bırakmaması. Tahmin yanlışsa yapılan iş çöpe gider.9. bölüm: Tahmin, Spekülasyon ve Spectre
- Buffer overflow
- Bir tampona kapasitesinden fazla veri yazılması. Fazlalık komşu bellek alanını ezer ve dönüş adresine ulaşırsa program akışı saldırganın eline geçebilir.15. bölüm: Bellek Güvenliği ve Sertleştirme
- Byte
- Sekiz bitlik grup. Bellek adresleri tek tek bitlere değil, byte'lara verilir; 0-255 arası bir sayıyı ya da bir ASCII karakterini tutabilir.1. bölüm: Başlamadan Önce
C
- Cache
- CPU ile RAM arasındaki hız farkını kapatan küçük ve hızlı ara bellek. L1, L2 ve L3 olarak katmanlanır.5. bölüm: Bellek Hiyerarşisi
- Cache coherence · önbellek tutarlılığı
- Her çekirdeğin kendi cache'i olduğu bir sistemde aynı bellek konumunun kopyalarını tutarlı tutan donanım protokolü. MESI en yaygın anlatımdır ve her cache line'ı Modified, Exclusive, Shared veya Invalid durumlarından biriyle etiketler.6. bölüm: Cache Nasıl Çalışır
- Cache hit ve cache miss
- İstenen verinin cache’te bulunmasına hit, bulunamayıp bir alt katmana inilmesine miss denir. Aynı algoritmayı çalıştıran iki programın hız farkı çoğu zaman hit oranından gelir.6. bölüm: Cache Nasıl Çalışır
- Cache line
- Cache'in veri taşıma birimi; x86-64'te tipik olarak 64 byte. Tek bir byte istendiğinde komşuları da birlikte getirilir.6. bölüm: Cache Nasıl Çalışır
- Capability
- Root yetkisinin ince parçalara bölünmüş hâli. Bir process'e tüm yetkiyi vermek yerine yalnızca ihtiyaç duyduğu tekil yetenek verilebilir.18. bölüm: Sanal Makineler ve Container'lar
- cgroup · control group
- Bir process grubunun CPU, bellek ve I/O gibi kaynak kullanımını sınırlayan ve ölçen kernel özelliği.18. bölüm: Sanal Makineler ve Container'lar
- CISC ve RISC
- İki talimat kümesi felsefesi. CISC zengin ve değişken uzunluklu talimatlar kullanır (x86), RISC ise az sayıda, sabit uzunlukta ve basit talimat tercih eder (ARM, RISC-V).4. bölüm: Mimariler: x86, ARM ve Diğerleri
- Context switch
- CPU'nun bir process'ten diğerine geçerken register durumunu kaydedip yenisini yüklemesi. Ucuz değildir; sık yapılırsa performansı düşürür.7. bölüm: Zamanı Dilimle
- Copy-on-write · COW
- Kopyalanan belleğin gerçekten çoğaltılmayıp, taraflardan biri yazana kadar paylaşılması. fork'u ucuz kılan asıl numaradır.16. bölüm: Fork'lar ve COW'lar Hakkında Konuşalım
- CPU · central processing unit
- Talimatları bellekten okuyup yürüten merkezi işlem birimi. Bilgisayarın hesap yapan motorudur.2. bölüm: Temeller
- CR3
- x86-64’te o anki process’in en üst sayfa tablosunun fiziksel adresini tutan register. Context switch sırasında bu tek register değişir ve process’in gördüğü tüm bellek haritası değişir.14. bölüm: Adres Çevirisi ve TLB
D
- Demand paging
- Bir programın parçalarını baştan değil, ilk kez erişildiğinde belleğe getirme stratejisi. Açılış süresini ve bellek kullanımını düşürür.14. bölüm: Adres Çevirisi ve TLB
- Dennard ölçekleme
- Transistörler küçüldükçe güç yoğunluğunun sabit kaldığını söyleyen kural. 2005 civarında sızıntı akımı yüzünden çöktü; saat hızları o günden beri yerinde saydığı için sektör çok çekirdeğe ve çekirdek içi paralelliğe yöneldi.8. bölüm: İşlemciyi Hızlandıran Hileler
- Dentry · directory entry
- Bir ad ile inode arasındaki bağı kuran VFS nesnesi. Inode’un adı yoktur; aynı inode’a birden fazla dentry bağlanabildiği için hard link mümkün olur.17. bölüm: Dosya Sistemi ve I/O
- DRAM · dynamic RAM
- Ana bellekte kullanılan, transistör ve kapasitör hücrelerine dayanan yoğun ve ucuz bellek türü. Kapasitörler düzenli tazelenmelidir.5. bölüm: Bellek Hiyerarşisi
- Dynamic linking
- Kütüphane kodunun çalışma anında ayrı bir paylaşılan nesneden yüklenmesi. Bellek paylaşımı ve güncelleme kolaylığı sağlar.12. bölüm: Bir ELF Ustasına Dönüşmek
E
- EEVDF · Earliest Eligible Virtual Deadline First
- Linux 6.6 ile CFS'nin yerini almaya başlayan scheduler. Her göreve adil payına göre geride kalma miktarını (lag) ve istediği dilim uzunluğundan türeyen bir sanal deadline hesaplar; böylece kısa dilim isteyen gecikmeye duyarlı işler daha çabuk sıraya girer.7. bölüm: Zamanı Dilimle
- ELF · executable and linkable format
- Linux'ta çalıştırılabilir dosyaların, paylaşılan kütüphanelerin ve nesne dosyalarının standart biçimi.12. bölüm: Bir ELF Ustasına Dönüşmek
- Endianness · byte sıralaması
- Birden fazla byte tutan bir sayının bellekte hangi sırayla dizildiği. Little-endian'da en düşük değerli byte en düşük adreste durur (x86-64); big-endian'da tersidir ve ağ protokollerinin standardıdır.1. bölüm: Başlamadan Önce
- Environment variable
- Process'e kalıtılan ad-değer çifti. Çocuk process'ler ebeveynlerinin ortamının bir kopyasıyla başlar.11. bölüm: Shell'den Kernel'e
- epoll
- İlgilenilen file descriptor'ları kernel'a bir kez kaydedip yalnızca hazır olanları öğrenmeyi sağlayan mekanizma. Maliyeti toplam bağlantı sayısına değil aktif olanlara bağlıdır.17. bölüm: Dosya Sistemi ve I/O
- EPT · extended page tables
- Guest fiziksel adresten host fiziksel adrese olan ikinci çeviriyi donanıma taşıyan Intel mekanizması; AMD tarafındaki karşılığı NPT’dir. Hypervisor’ın her sayfa tablosu güncellemesine karışmasını gereksiz kılar.18. bölüm: Sanal Makineler ve Container'lar
- execve
- Mevcut process'in bellek görüntüsünü yeni bir programla değiştiren syscall. Yeni process yaratmaz; içindekini değiştirir.10. bölüm: Bir Program Nasıl Çalıştırılır?
F
- False sharing · sahte paylaşım
- İki thread'in farklı değişkenlere yazmasına rağmen, bu değişkenler aynı cache line'a düştüğü için tutarlılık trafiğine yol açması. Paylaşılan veri yoktur, yalnızca adres komşuluğu vardır; çözümü değişkenleri cache line sınırına hizalamaktır.6. bölüm: Cache Nasıl Çalışır
- Fetch-execute döngüsü · fetch-execute cycle
- CPU'nun sürekli tekrarladığı temel döngü: talimatı getir, çöz, yürüt, instruction pointer'ı ilerlet.2. bölüm: Temeller
- File descriptor
- Bir process'in açık dosyalarını, soketlerini ve pipe'larını gösteren küçük tam sayı. 0, 1 ve 2 sırasıyla stdin, stdout ve stderr'dir.11. bölüm: Shell'den Kernel'e
- Firmware
- Anakart üzerindeki uçucu olmayan flash yongada duran, makine açıldığında çalışan ilk yazılım (BIOS ya da UEFI). Donanımı ve RAM’i kullanılabilir hâle getirip bootloader’a devreder.2. bölüm: Temeller
- fork
- Çağıran process'in neredeyse birebir kopyasını yaratan syscall. Çocuk 0, ebeveyn ise çocuğun PID'sini döner.16. bölüm: Fork'lar ve COW'lar Hakkında Konuşalım
- fsync
- Bir dosyanın page cache'teki değişikliklerinin gerçekten diske inmesini isteyen çağrı. write varsayılan olarak yalnızca cache'e yazdığı için kalıcılık garantisi ancak bununla alınır; veritabanlarının her commit'te ödediği bedel budur.17. bölüm: Dosya Sistemi ve I/O
- Futex · fast userspace mutex
- Linux’ta programların birbirini beklemek için kullandığı temel kilit mekanizması. Çekişme yoksa iş tamamen user space’te biter; yalnızca beklemek gerektiğinde kernel’a girilir.7. bölüm: Zamanı Dilimle
G
- Gadget
- ROP zincirinde kullanılan, birkaç faydalı talimat yapıp `ret` ile biten kısa kod parçası. `ret` ile bitmesi şarttır, çünkü zinciri ilerleten motor odur.15. bölüm: Bellek Güvenliği ve Sertleştirme
- Glob genişletme · globbing
- Komut satırındaki `*.txt` gibi kalıpların, program çalışmadan önce shell tarafından dosya adlarına çevrilmesi. Programın argv’sinde kalıp değil, çözülmüş adlar bulunur.11. bölüm: Shell'den Kernel'e
- GOT · global offset table
- Dinamik olarak çözülen sembollerin gerçek adreslerini tutan tablo. Kod bu tabloyu okuyarak dolaylı erişim yapar.12. bölüm: Bir ELF Ustasına Dönüşmek
- Guest ve host
- Sanal makinenin içinde çalışan işletim sistemine guest, altındaki fiziksel makineye host denir.18. bölüm: Sanal Makineler ve Container'lar
H
- Hard link
- Aynı inode'a verilen ikinci bir ad. İki ad da eşit derecede gerçektir; birini silmek yalnızca bağlantı sayacını azaltır.17. bölüm: Dosya Sistemi ve I/O
- Huge page · büyük sayfa
- Varsayılan 4 KiB yerine 2 MiB ya da 1 GiB'lık sayfa. Tek TLB girdisinin kapsadığı alanı büyüterek TLB miss oranını düşürür; karşılığında iç parçalanma ve sayfa sıfırlama maliyeti artar. Linux'un otomatik biçimi Transparent Huge Pages'tir.14. bölüm: Adres Çevirisi ve TLB
- Hypervisor
- Fiziksel donanımın gerçek sahibi olan ve üzerinde çalışan işletim sistemlerinin ayrıcalıklı işlemlerini yakalayıp taklit eden katman. Tip 1 doğrudan donanım üstünde, tip 2 bir işletim sisteminin üstünde çalışır.18. bölüm: Sanal Makineler ve Container'lar
I
- Instruction pointer
- Sıradaki talimatın bellek adresini tutan özel register. x86-64'te RIP adıyla geçer; program akışı bu değerin nasıl değiştiğidir.2. bölüm: Temeller
- Interrupt
- CPU'nun yürüttüğü işi bırakıp önceden belirlenmiş bir işleyiciye atlamasına yol açan sinyal. Donanımdan (klavye, zamanlayıcı) veya yazılımdan gelebilir.3. bölüm: Kernel, User Mode ve Syscall
- ISA · instruction set architecture
- Donanım ile yazılım arasındaki sözleşme: hangi bayt dizisinin hangi işi yaptığını, kaç register olduğunu ve kernel’a nasıl girileceğini tanımlar. x86-64 ve AArch64 birer ISA’dır.4. bölüm: Mimariler: x86, ARM ve Diğerleri
İ
- İkilik sistem · binary
- Yalnızca 0 ve 1 rakamlarını kullanan taban-2 sayı sistemi. Donanım iki farklı gerilim seviyesini güvenilir biçimde ayırt edebildiği için tercih edilir.1. bölüm: Başlamadan Önce
- İkiye tümleyen · two's complement
- Negatif tam sayıların ikilik gösterimi: bir sayının bitleri ters çevrilip 1 eklenir. Sayesinde çıkarma için ayrı bir devre gerekmez, negatifini alıp toplamak yeterlidir; buna karşılık aralık simetrik değildir (8 bit için −128 ile +127).1. bölüm: Başlamadan Önce
- init
- Kernel'ın açılışta başlattığı ilk kullanıcı process'i (PID 1). Diğer tüm process'ler doğrudan ya da dolaylı olarak ondan türer.16. bölüm: Fork'lar ve COW'lar Hakkında Konuşalım
- inode
- Dosyanın kimliği: boyut, izinler, sahip ve veri bloklarının yeri burada tutulur. Dosya adı ayrı bir dizin girdisidir ve inode'a işaret eder.17. bölüm: Dosya Sistemi ve I/O
- io_uring
- Process ile kernel arasında paylaşılan gönderi ve tamamlanma halkaları üzerinden çalışan asenkron I/O arayüzü. Yüksek yükte syscall sayısını neredeyse sıfıra indirir.17. bölüm: Dosya Sistemi ve I/O
K
- Kernel mode
- CPU'nun her talimatı ve tüm donanımı kullanabildiği ayrıcalıklı çalışma kipi. Yalnızca işletim sistemi çekirdeği bu kipte çalışır.3. bölüm: Kernel, User Mode ve Syscall
L
- Lane
- Bir SIMD register’ının, üstünde aynı işlemin yürütüldüğü dilimlerinden her biri. 256 bitlik bir AVX register’ı 32-bit float için sekiz lane taşır; lane’ler arasında dallanma yapılamaz.8. bölüm: İşlemciyi Hızlandıran Hileler
- LD_PRELOAD
- Bir kütüphaneyi diğerlerinden önce yükleten ortam değişkeni. Önce yüklenen semboller kazandığı için bir programın malloc'u yeniden derlemeden değiştirilebilir; profilleme araçlarının temel numarasıdır. Kernel, setuid programlarda bu değişkeni yok sayar.12. bölüm: Bir ELF Ustasına Dönüşmek
- Locality
- Programların belleğe rastgele değil kümelenmiş biçimde erişme eğilimi. Zamansal locality az önce kullanılanı, mekânsal locality komşusunu tekrar kullanmayı anlatır; cache'ler bu sayede işe yarar.6. bölüm: Cache Nasıl Çalışır
M
- Magic number
- Bir dosyanın başındaki, biçimini ele veren sabit byte dizisi. ELF dosyaları 0x7F ardından "ELF" ile başlar.10. bölüm: Bir Program Nasıl Çalıştırılır?
- Makine kodu · machine code
- CPU'nun doğrudan çalıştırdığı ikili talimat dizisi. Assembly'nin sayısal karşılığıdır.1. bölüm: Başlamadan Önce
- Mikro-mimari · microarchitecture
- Bir ISA’nın belirli bir işlemcide nasıl gerçeklendiği. Aynı ISA’yı konuşan iki çip içeride bambaşka pipeline, cache ve tahmin düzenlerine sahip olabilir.4. bölüm: Mimariler: x86, ARM ve Diğerleri
- Mikro-op · micro-operation
- Modern bir x86 işlemcinin karmaşık bir talimatı bölerek ürettiği küçük ve düzenli iş parçası. Bu sayede dışarıdan CISC görünen bir çip, içeride RISC gibi çalışır.4. bölüm: Mimariler: x86, ARM ve Diğerleri
- Minor ve major fault
- Minor fault sayfanın zaten bellekte olduğu, yalnızca eşlemenin kurulduğu ucuz durumdur; major fault diske gidilmesi gerektiği anlamına gelir ve pahalıdır.14. bölüm: Adres Çevirisi ve TLB
- mmap
- Bir dosyayı doğrudan process'in adres alanına eşleyen syscall. Dosyaya sıradan bir dizi gibi erişilir; eksik sayfalar demand paging ile gelir.17. bölüm: Dosya Sistemi ve I/O
- MMU · memory management unit
- Sanal adresleri fiziksel adreslere çeviren donanım birimi. Çeviri başarısız olursa page fault üretir.13. bölüm: Bellek Aslında Sanal
N
- Namespace
- Bir process grubunun sistemin belirli bir yönünü (PID'ler, ağ, mount noktaları) kendine ait sanıyormuş gibi görmesini sağlayan kernel mekanizması.18. bölüm: Sanal Makineler ve Container'lar
- Nibble
- 4 bitlik grup, yani bir byte’ın yarısı. Bir hex karakteri tam olarak bir nibble eder; hex ile binary arasındaki çevrimin hesap değil gruplama olmasının sebebi budur.1. bölüm: Başlamadan Önce
- NOP sled
- Saldırganın kendi kodunun önüne dizdiği, hiçbir şey yapmayan `nop` talimatlarından oluşan blok. Atlanacak adresi tam tutturmak yerine geniş bir hedef tahtası oluşturmaya yarar.15. bölüm: Bellek Güvenliği ve Sertleştirme
- NX biti · no-execute
- Bir bellek sayfasının yürütülemez işaretlenmesi. Stack ve heap yazılabilir ama çalıştırılamaz olur; enjekte edilen makine kodu böylece çalışmaz.15. bölüm: Bellek Güvenliği ve Sertleştirme
O
- O_CLOEXEC
- Bir file descriptor'ı açarken verilen ve execve anında otomatik kapanmasını sağlayan bayrak. Olmadığında yeni program, kendisinin hiç açmadığı dosya ve soketleri açık bulur; sızan descriptor'lar klasik bir ayrıcalık yükseltme yoludur.11. bölüm: Shell'den Kernel'e
- Onaltılık sistem · hexadecimal
- Taban-16 sayı sistemi (0-9, A-F). Bir hex basamağı tam olarak dört bite karşılık geldiği için uzun bit dizilerini okunur kılar; bellek adresleri genelde bu biçimde yazılır.1. bölüm: Başlamadan Önce
- OOM killer · out of memory killer
- Bellek gerçekten tükendiğinde kernel’ın çalışan process’leri puanlayıp birini öldürmesi. `malloc` çoktan başarılı dönmüştür, dolayısıyla hata bildirilecek bir yer kalmamıştır.14. bölüm: Adres Çevirisi ve TLB
- Overcommit
- Kernel’ın, fiziksel olarak sahip olduğundan daha fazla bellek vaat etmesi. Programlar istedikleri belleğin tamamını kullanmadığı için varsayılan davranıştır; vaatler gerçekten toplandığında OOM killer devreye girer.14. bölüm: Adres Çevirisi ve TLB
- OverlayFS
- Birden fazla dizini tek bir birleşik görünümde sunan dosya sistemi. Alt katmanlar salt okunur, üst katman yazılabilirdir ve değiştirilecek dosya yukarı kopyalanır. Container imajlarının katmanlı yapısı ve tek imajdan çok container açılabilmesi buna dayanır.17. bölüm: Dosya Sistemi ve I/O
Ö
- Öncelik tersine dönmesi · priority inversion
- Yüksek öncelikli bir görevin, düşük öncelikli bir görevin tuttuğu kilidi beklerken orta öncelikli bir görev yüzünden gecikmesi. Çözümü priority inheritance'tır: kilidi tutan görev, kendisini bekleyen en yüksek önceliği geçici olarak devralır.7. bölüm: Zamanı Dilimle
P
- Page cache
- Diskten okunan sayfaların kullanılmayan RAM'de saklanması. Aynı veri tekrar istendiğinde disk hiç dönmez; yazmalar da varsayılan olarak önce buraya gider.17. bölüm: Dosya Sistemi ve I/O
- Page fault
- İstenen sayfa bellekte yoksa ya da erişim izni yoksa CPU'nun ürettiği kesme. Her page fault hata değildir; demand paging bunu normal akışta kullanır.14. bölüm: Adres Çevirisi ve TLB
- Page table
- Sanal sayfaları fiziksel çerçevelere eşleyen, kernel tarafından tutulup MMU tarafından okunan veri yapısı.13. bölüm: Bellek Aslında Sanal
- Page table walk
- MMU’nun bir sanal adresi çevirmek için CR3’ten başlayıp sayfa tablosu ağacını seviye seviye dolaşması. x86-64’ün dört seviyeli düzeninde tek bir bayt için dört ek bellek erişimi demektir.14. bölüm: Adres Çevirisi ve TLB
- Paravirtualization
- Guest’in sanallaştırıldığını bilerek çalışması ve sorunlu ayrıcalıklı talimatlar yerine doğrudan hypervisor’a çağrı yapması. Hızlıdır ama guest kernel’ının değiştirilebilmesini gerektirir.18. bölüm: Sanal Makineler ve Container'lar
- Parity biti · parity bit
- Bir veri grubundaki 1’lerin sayısının tek mi çift mi olduğunu söyleyen ek bit. Tek bitlik hatayı yakalar ama düzeltemez; ASCII’nin 8. bitinin uzun süre bu iş için ayrılmasının sebebiydi.1. bölüm: Başlamadan Önce
- PATH
- Shell'in komut adını çalıştırılabilir dosyaya çevirirken sırayla baktığı dizin listesini tutan environment variable.11. bölüm: Shell'den Kernel'e
- PCID · process context identifier
- TLB girdilerinin bir process kimliğiyle etiketlenmesini sağlayan x86-64 mekanizması. Sayesinde context switch’te TLB’yi tamamen boşaltmak gerekmez; ARM tarafındaki karşılığı ASID’dir.14. bölüm: Adres Çevirisi ve TLB
- perf
- CPU'nun donanım performans sayaçlarını okuyan araç. Cache miss, branch miss ve talimat sayısı gibi ölçümlerle zamanın nerede kaybolduğunu gösterir.9. bölüm: Tahmin, Spekülasyon ve Spectre
- PID · process ID
- Kernel'ın her process'e verdiği benzersiz sayısal kimlik.16. bölüm: Fork'lar ve COW'lar Hakkında Konuşalım
- PIE · position independent executable
- Çalıştırılabilir dosyanın da herhangi bir adrese yüklenebilecek şekilde derlenmesi. ASLR korumasını programın kendi koduna genişletir.15. bölüm: Bellek Güvenliği ve Sertleştirme
- Pipe
- Bir programın çıktısını diğerinin girdisine bağlayan kernel tamponu. Shell üzerindeki | işareti bunu kurar.11. bölüm: Shell'den Kernel'e
- Pipeline
- Talimat yürütmenin aşamalara bölünüp farklı talimatların farklı aşamalarda aynı anda ilerlemesi. Fabrika bandı gibi çalışır.8. bölüm: İşlemciyi Hızlandıran Hileler
- pivot_root
- Bir process'in kök dizinini başka bir dizinle değiştiren syscall. Container'ların kendi dosya sistemine sahip görünmesini sağlar.18. bölüm: Sanal Makineler ve Container'lar
- PLT · procedure linkage table
- Dinamik fonksiyon çağrılarının geçtiği ara sıçrama tablosu. İlk çağrıda sembolü çözer, sonrakilerde doğrudan hedefe gider.12. bölüm: Bir ELF Ustasına Dönüşmek
- posix_spawn
- Yeni bir process'i klonlayarak değil, tarif ederek yaratan çağrı. fork'un thread'lerle bileşmeme ve büyük adres alanlarında yavaşlama sorunlarını atlar; karşılığında fork ile exec arasındaki o serbest pencereyi kaybeder.16. bölüm: Fork'lar ve COW'lar Hakkında Konuşalım
- Preemptive multitasking
- İşletim sisteminin bir programı, o istemese bile durdurup CPU'yu başkasına verebilmesi. Tek bir programın makineyi kilitlemesini engeller.7. bölüm: Zamanı Dilimle
- Prefetch
- İşlemcinin erişim düzenini izleyip sırada gelecek cache satırlarını sen istemeden çekmesi. Tahmin tutarsa gecikme gizlenir, tutmazsa bant genişliği ve cache alanı boşa gider.6. bölüm: Cache Nasıl Çalışır
- Process
- Çalışan bir programın işletim sistemi tarafından takip edilen örneği. Kendi bellek alanı, açık dosyaları ve kimliği (PID) vardır.2. bölüm: Temeller
- Process group · process grubu
- Birlikte sinyal alan process kümesi. Terminalin her an tek bir foreground process group'u vardır; Ctrl-C ile üretilen SIGINT tek bir process'e değil o grubun tamamına gider, bir pipeline'ın bütün üyelerinin birden durmasının sebebi budur.11. bölüm: Shell'den Kernel'e
- Program header
- ELF dosyasında, kernel'a hangi parçanın belleğin neresine hangi izinlerle yükleneceğini anlatan tablo. Çalıştırma anında kullanılır.12. bölüm: Bir ELF Ustasına Dönüşmek
- PTE · page table entry
- Sayfa tablosunda tek bir satır: bir sanal sayfayı bir fiziksel çerçeveye bağlayan ve izin bitlerini taşıyan girdi.14. bölüm: Adres Çevirisi ve TLB
R
- Register
- CPU'nun içindeki çok küçük ve çok hızlı depolama hücresi. İşlemcinin üzerinde çalıştığı veriler önce register'lara alınır.2. bölüm: Temeller
- Register renaming
- İşlemcinin, aynı register adını kullanan bağımsız talimatları birbirinden ayırmak için onlara farklı fiziksel register’lar ataması. İsimden doğan sahte bağımlılıkları ortadan kaldırır.8. bölüm: İşlemciyi Hızlandıran Hileler
- RELRO · relocation read-only
- GOT ve yeniden konumlandırma bölümlerinin salt okunur yapılması. Full RELRO tüm sembolleri başlangıçta çözer ve tabloyu tamamen kilitler.15. bölüm: Bellek Güvenliği ve Sertleştirme
- Reorder buffer
- Sırasız yürütülen talimatların sonuçlarının, programın gördüğü sırayı korumak için bekletildiği kuyruk. Talimatlar sırasız yürütülür ama sıralı emekli edilir.8. bölüm: İşlemciyi Hızlandıran Hileler
- Reset vector
- CPU’nun güç geldiği anda instruction pointer’ını kurduğu, donanımsal olarak sabit adres (x86-64’te 0xFFFFFFF0). Bu adres RAM’e değil, anakart üzerindeki firmware flash yongasına haritalanır.2. bölüm: Temeller
- Rootless container
- Ayrıcalıklı bir daemon olmadan, doğrudan yetkisiz bir kullanıcı tarafından başlatılan container. USER namespace, içerideki UID 0'ı dışarıda sıradan bir kullanıcıya eşler; kaçış hâlinde saldırgan host'ta root olmaz.18. bölüm: Sanal Makineler ve Container'lar
- ROP · return-oriented programming
- Programın kendi içinde zaten var olan, `ret` ile biten küçük kod parçalarının stack üzerinden zincirlenerek yeni bir davranış kurulması. Tek bir yeni talimat yazılmadığı için NX korumasını hiç ihlal etmez.15. bölüm: Bellek Güvenliği ve Sertleştirme
S
- Sanal bellek · virtual memory
- Her process'e, fiziksel RAM'den bağımsız kendi sürekli adres alanı verilmesi. Programlar birbirinin belleğini göremez.13. bölüm: Bellek Aslında Sanal
- Sayfa · page
- Sanal belleğin eşlemede kullanılan sabit boyutlu bloğu; x86-64'te tipik olarak 4 KiB.13. bölüm: Bellek Aslında Sanal
- Scheduler
- Hangi process'in ne kadar süre CPU kullanacağına karar veren kernel bileşeni.7. bölüm: Zamanı Dilimle
- seccomp
- Bir process'in yapabileceği syscall'ları beyaz listeye indirgeyen güvenlik filtresi. Saldırı yüzeyini daraltır.18. bölüm: Sanal Makineler ve Container'lar
- Section header
- ELF dosyasındaki bölümleri (.text, .data, .bss gibi) tanımlayan tablo. Derleme ve bağlama sırasında kullanılır; çalıştırmak için şart değildir.12. bölüm: Bir ELF Ustasına Dönüşmek
- Segmentation fault
- Bir process'in kendisine ait olmayan ya da izni bulunmayan bir adrese erişmeye çalışması sonucu sonlandırılması.13. bölüm: Bellek Aslında Sanal
- Sembol sürümleme · symbol versioning
- Bir paylaşılan kütüphanenin aynı fonksiyon adının birden fazla sürümünü aynı anda dışa açması. glibc'nin geriye dönük uyumluluğunu bu sağlar ve "GLIBC_2.34 not found" hatasının kaynağıdır: yeni glibc eski binary'yi çalıştırır, tersi geçerli değildir.12. bölüm: Bir ELF Ustasına Dönüşmek
- Shebang
- Bir betiğin ilk satırındaki #! dizisi ve ardından gelen yorumlayıcı yolu. Kernel bunu görünce dosyayı doğrudan çalıştırmak yerine belirtilen yorumlayıcıya verir.10. bölüm: Bir Program Nasıl Çalıştırılır?
- Shell
- Kullanıcının yazdığı komutları yorumlayıp uygun programları çalıştıran arayüz programı. Kendisi de sıradan bir user mode programıdır.11. bölüm: Shell'den Kernel'e
- SIMD · single instruction, multiple data
- Tek talimatla birden fazla veri üzerinde aynı işlemi yapan talimat ailesi. Görüntü, ses ve matris işlerinde büyük hızlanma sağlar.8. bölüm: İşlemciyi Hızlandıran Hileler
- Sinyal · signal
- Kernel'ın bir process'e ilettiği asenkron bildirim. Çoğu yakalanıp özelleştirilebilir; SIGKILL ve SIGSTOP ise process'e hiç ulaşmaz, kernel doğrudan uygular — bu yüzden kill -9 hem en güvenilir hem de en kaba seçenektir.11. bölüm: Shell'den Kernel'e
- SMT · simultaneous multithreading
- Tek bir fiziksel çekirdeğin iki mantıksal çekirdek gibi görünmesi. Intel'in ticari adıyla Hyper-Threading.8. bölüm: İşlemciyi Hızlandıran Hileler
- Spectre ve Meltdown
- 2018'de duyurulan, spekülatif yürütmenin bıraktığı cache izlerini zamanlama ölçümüyle okuyan açık aileleri. Meltdown bir izin kontrolü sıralama hatasıydı ve donanımda düzeltildi; Spectre ise tasarımın kendisinden doğar, bu yüzden kapatılamaz yalnızca pahalılaştırılabilir.9. bölüm: Tahmin, Spekülasyon ve Spectre
- Speculative execution
- Sonucu henüz kesinleşmemiş bir yolun talimatlarını şimdiden yürütmek. Spectre ve Meltdown gibi zafiyetlerin kökeninde bu davranış vardır.9. bölüm: Tahmin, Spekülasyon ve Spectre
- SRAM · static RAM
- Cache'lerde kullanılan hızlı ama pahalı bellek türü. DRAM gibi düzenli tazeleme gerektirmez, yine de güç kesilince veriyi kaybeder.5. bölüm: Bellek Hiyerarşisi
- Stack canary
- Yerel değişkenlerle dönüş adresi arasına konan rastgele değer. Fonksiyon dönmeden önce kontrol edilir; değişmişse taşma olmuş demektir ve program sonlandırılır.15. bölüm: Bellek Güvenliği ve Sertleştirme
- Static linking
- Kullanılan kütüphane kodunun çalıştırılabilir dosyanın içine kopyalanması. Dosya büyür ama çalışma anında dış bağımlılığı olmaz.12. bölüm: Bir ELF Ustasına Dönüşmek
- strace
- Bir process'in yaptığı syscall'ları canlı gösteren araç. ptrace üzerinden çalıştığı için izlenen programı belirgin biçimde yavaşlatır.11. bölüm: Shell'den Kernel'e
- Superblock
- VFS’te bağlı bir dosya sisteminin kendisini temsil eden nesne. Blok boyutu, kapasite ve hangi sürücünün yönettiği gibi bilgileri taşır.17. bölüm: Dosya Sistemi ve I/O
- Superscalar
- Aynı saat çevriminde birden fazla talimatı başlatabilen işlemci tasarımı.8. bölüm: İşlemciyi Hızlandıran Hileler
- Syscall · system call
- Bir programın kernel'dan dosya okuma, bellek ayırma gibi ayrıcalıklı bir işlemi kontrollü biçimde istemesi. User mode ile kernel mode arasındaki resmi kapıdır.3. bölüm: Kernel, User Mode ve Syscall
T
- Timer interrupt
- Donanım zamanlayıcısının düzenli aralıklarla ürettiği kesme. Kernel'ın kontrolü geri almasını ve sırayı başka bir process'e vermesini sağlar.7. bölüm: Zamanı Dilimle
- TLB · translation lookaside buffer
- Sanal adresten fiziksel adrese çevrimleri önbellekleyen özel donanım cache'i. Her erişimde pahalı page table yürüyüşü yapılmasını önler.6. bölüm: Cache Nasıl Çalışır
U
- User mode
- Sıradan programların çalıştığı kısıtlı kip. Donanıma doğrudan erişemez; ihtiyaç duyduğunda syscall ile kernel'dan yardım ister.3. bölüm: Kernel, User Mode ve Syscall
V
- VFS · virtual file system
- Kernel içinde farklı dosya sistemlerini tek bir arayüz arkasında birleştiren katman. ext4, Btrfs, NFS ve /proc aynı syscall'larla kullanılabilir.17. bölüm: Dosya Sistemi ve I/O
- virtio
- Sanal makinelerde gerçek donanımı taklit etmek yerine, guest ile hypervisor arasında paylaşılan bellek üzerinden konuşan cihaz arayüzü. Buluttaki disk ve ağ neredeyse her zaman budur.18. bölüm: Sanal Makineler ve Container'lar
- VM exit
- Guest ayrıcalıklı bir iş yapmaya kalktığında kontrolün hypervisor’a geçmesi. Sanal makine performansını konuşurken ölçülen şey neredeyse her zaman bu geçişlerin sayısıdır.18. bölüm: Sanal Makineler ve Container'lar
- Von Neumann mimarisi
- Talimatların ve verilerin aynı bellekte, aynı adres uzayında tutulduğu tasarım. Programın bir dosya olabilmesini sağlar; karşılığında tek bir bellek yolu darboğaz oluşturur ve verinin talimat gibi çalıştırılabilmesi kod enjeksiyonunu mümkün kılar.2. bölüm: Temeller
W
- W^X · write XOR execute
- Bir bellek sayfasının ya yazılabilir ya çalıştırılabilir olması, ikisi birden olmaması ilkesi. Donanımdaki NX/XD biti ile uygulanır ve saldırganın belleğe yazdığı byte'ları çalıştırmasını engeller.15. bölüm: Bellek Güvenliği ve Sertleştirme
- Write-back
- Yazmanın önce yalnızca cache’e yapılıp alt katmana ancak satır çıkarılırken aktarılması. Modern L1/L2/L3 böyle çalışır; bu yüzden cache’teki değer ile RAM’deki değer bir süre farklı olabilir.6. bölüm: Cache Nasıl Çalışır
X
- x86-64 · AMD64
- 1978’deki 8086’ya kadar uzanan x86 ailesinin 64-bit sürümü. AMD tarafından tasarlandı, Intel de sonradan aynı tasarımı benimsemek zorunda kaldı.4. bölüm: Mimariler: x86, ARM ve Diğerleri
Z
- Zaman dilimi · time slice
- Bir process'in kesintiye uğramadan önce CPU'yu kullanabileceği süre.7. bölüm: Zamanı Dilimle
- Zombie process
- Sonlanmış ama çıkış kodu henüz ebeveyni tarafından toplanmamış process. Kernel tablosunda yer kaplar, bellek tüketmez.16. bölüm: Fork'lar ve COW'lar Hakkında Konuşalım