Ana içeriğe geç

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

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