Ana içeriğe geç

Sözlük

CPU'ya “Sen”i Katmak boyunca geçen 221 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.5. bölüm: Mimariler: x86, ARM ve Diğerleri
Açlık · starvation
Sistem ilerlediği hâlde belli bir işin sırasını hiç alamaması; sınırlı bekleme koşulunun ihlali. Öncelik tersine dönmesi bunun bir akrabasıdır.10. bölüm: Aynı Anda İki Şey
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.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
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.2. bölüm: Metin, Bellek ve Kod
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.18. 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.2. bölüm: Metin, Bellek ve Kod
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.8. bölüm: Cache Nasıl Çalışır
Atomik işlem · atomic operation
Başladıktan sonra bölünemeyen, arasına başka bir çekirdeğin ya da kesmenin giremeyeceği işlem. x86'da bu güvence talimatın kendisinden değil, önüne konan lock ön ekinden gelir; yani açıkça istenen bir hizmettir.10. bölüm: Aynı Anda İki Şey

B

Bellek adresi · memory address
Bellekteki bir byte'ı benzersiz biçimde gösteren sayı. 64-bit sistemlerde adresler 64 bit genişliğindedir.2. bölüm: Metin, Bellek ve Kod
Bellek bankası · bank
Bir bellek çipinin birbirinden bağımsız çalışabilen bölümlerinden biri. Farklı bankalara düşen istekler üst üste bindirilebildiği için bant genişliği artar, tek bir erişimin gecikmesi ise kısalmaz.7. bölüm: Bellek Hiyerarşisi
Bellek bariyeri · memory barrier
Kendisinden önceki bellek işlemlerinin, sonrakiler başlamadan görünür olmasını zorlayan özel talimat. İşlemcinin ve derleyicinin yaptığı yeniden sıralamanın iki thread arasındaki kurulumu bozmasını engeller.10. bölüm: Aynı Anda İki Şey
Bellek duvarı · memory wall
İşlemci hızının DRAM gecikmesinden çok daha hızlı artması sonucu açılan makas. Bant genişliği büyüdü ama gecikme kısalmadı; cache hiyerarşisinin ve sırasız yürütmenin varlık sebebi bu duvardır.7. bölüm: Bellek Hiyerarşisi
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.7. bölüm: Bellek Hiyerarşisi
Bellek modeli · memory consistency model
Farklı adreslere yapılan okuma ve yazmaların diğer çekirdeklere hangi sırayla görüneceğine dair sözleşme. Coherence tek bir adresi, bellek modeli ise adresler arasındaki sırayı ilgilendirir.10. bölüm: Aynı Anda İki Şey
binfmt
Kernel'ın her biri tek bir çalıştırılabilir dosya biçimini tanıyan handler'larına verilen ad. execve dosyanın ilk 256 baytını sırayla hepsine gösterir; ELF için binfmt_elf, shebang için binfmt_script cevap verir.13. bölüm: Bir Program Nasıl Çalıştırılır?
binfmt_misc
Kernel'a tek satır kernel kodu yazmadan yeni bir çalıştırılabilir biçim tanıtmayı sağlayan mekanizma: magic number ya da uzantıyla tanınan dosyalar, /proc/sys/fs/binfmt_misc altına yazılan kayıttaki user space yorumlayıcıya yönlendirilir. QEMU ile başka mimarinin binary'sini çalıştırmak ve Wine ile .exe açmak bu yolla olur.13. 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: Sayılar: Bit'ten Kayan Noktaya
Bootloader
Firmware'in diskten bulup RAM'e yüklediği küçük program (GRUB gibi). Tek işi kernel'ı bulmak, belleğe yerleştirmek ve kontrolü ona devretmektir.3. bölüm: Temeller
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.12. 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.18. 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: Sayılar: Bit'ten Kayan Noktaya

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.7. 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.8. 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.8. 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.8. bölüm: Cache Nasıl Çalışır
Calling convention
Fonksiyonların argümanı nereye koyacağı, dönüş değerini nereden okuyacağı ve hangi register'ın çağrıdan sağ çıkacağı üzerine anlaşma. Donanımda yazmaz; daha geniş hâli olan ABI, farklı dillerde derlenmiş kodun birbirini çağırabilmesini sağlar.3. bölüm: Temeller
Canlı kilit · livelock
İki işin de sürekli durum değiştirdiği ama hiçbirinin ilerlemediği durum; koridorda hep aynı yöne kaçan iki insan gibi. Çözümü nezaket değil, yeniden denemeden önce rastgele bir süre beklemektir.10. bölüm: Aynı Anda İki Şey
Canonical adres · canonical address
x86-64'te kullanılmayan üst adres bitlerinin, kullanılan en üst bitin kopyası olması kuralı. 4 seviyeli paging'de yalnızca 48 bit çevrilir; bu kuralı çiğneyen bir adrese erişim donanım hatası üretir.17. bölüm: Adres Çevirisi ve TLB
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.21. 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.21. bölüm: Sanal Makineler ve Container'lar
Chiplet
Tek bir büyük yonga yerine aynı paketin içine yerleştirilen küçük yongalardan biri. Üretim firesini azalttığı için maliyeti düşürür, ama iki chiplet arası iletişim yonga içi iletişimden yavaştır.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
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).5. bölüm: Mimariler: x86, ARM ve Diğerleri
Clock cycle · saat çevrimi
Clock signal'in iki kenarı arasındaki süre. Mutlak bir zaman değil, makinenin kendi ritmindeki bir vuruştur; bellek gecikmeleri ve talimat maliyetleri bu birimle ölçülür.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
Clock gating
Kullanılmayan devre bloklarına giden clock signal'in tamamen kesilmesi. Clock ağı her vuruşta baştan sona yön değiştirdiği için, hesap yapmayan bir birim bile saat aldığı sürece elektrik harcar.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
Clock signal · saat sinyali
İşlemcinin içinde dolaşan, saniyede milyarlarca kez yükselip alçalan kare dalga gerilim. Devredeki depolama elemanları yalnızca bu sinyalin kenarında değer yakalar; aradaki dalgalanmalara kimse bakmaz.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
Compare-and-swap · karşılaştır-ve-değiştir
Bir adreste beklenen değeri bulursa yenisini yazan, bulamazsa hiçbir şeye dokunmayan ve her iki durumda da ne bulduğunu bildiren talimat. Koşullu olması onu test-and-set'ten çok daha kullanışlı yapar.10. bölüm: Aynı Anda İki Şey
Container
Aynı kernel'ı paylaşan, ama namespace ile görünürlüğü, cgroup ile tüketimi, capability ve seccomp ile yetkisi kısıtlanmış sıradan bir Linux process'i. Kernel'da container diye bir nesne yoktur; ad, bu araçların bir arada kullanılmasına verilir.21. bölüm: Sanal Makineler ve Container'lar
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.9. bölüm: Zamanı Dilimle
Cooperative multitasking
Sırayı programın gönüllü bıraktığı eski çoklu görev modeli. Kernel sözü zorla alamadığı için tek bir kötü program bütün sistemi dondurabilirdi; klasik Mac OS ve NT öncesi Windows böyle çalışıyordu.9. 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.19. 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.3. 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.17. bölüm: Adres Çevirisi ve TLB
Critical path · kritik yol
Bir clock cycle içinde tamamlanması gereken en yavaş devre yolu. Çevrim süresi bu yoldan kısa olamaz, yani makinenin hızını ortalama değil en uzun yol belirler.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci

Ç

Çekirdek · core
Kendi başına talimat yürütebilen eksiksiz bir işlemci. Kendi register seti, instruction pointer'ı, hesap birimleri ve özel cache katmanları vardır; diğer çekirdeklerle yalnızca ortak katmanı paylaşır.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
Çerçeve · page frame
Fiziksel RAM'in, sanal sayfayla aynı boyuttaki bloğu. Page table bir sanal sayfayı bir çerçeveye eşler; aynı çerçeve birden fazla process'in sayfasına bağlanabilir.16. bölüm: Bellek Aslında Sanal
Çıkış kodu · exit code
Bir process'in bitişte parent'ına bıraktığı tek baytlık sonuç. 0 başarı, sıfırdan farklı her şey hatadır; sinyalle ölen bir process için shell 128 + sinyal numarasını raporlar.14. bölüm: Shell'den Kernel'e

D

Data race
Senkronize edilmemiş erişimlerden en az birinin yazma olduğu durum. C ve C++'ta tanımsız davranıştır: derleyici data race olmadığını varsayarak iyileştirme yapar, varsayım bozulunca ortaya yanlış bir sayı değil anlamını yitirmiş bir program çıkar.10. bölüm: Aynı Anda İki Şey
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.17. 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.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
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.20. bölüm: Dosya Sistemi ve I/O
DMA · direct memory access
Çevre biriminin belleğe işlemciden geçmeden yazabilmesi. CPU yalnızca kaynağı, hedefi ve uzunluğu kurar; taşıma bitince interrupt ile haber alır, arada başka iş yapabilir.20. bölüm: Dosya Sistemi ve I/O
Dönüş adresi · return address
Bir fonksiyon bittiğinde CPU'nun kaldığı yere dönebilmesi için yığına itilen adres. Yerel değişkenlerin hemen ardında durduğu için taşan bir yazma doğrudan bu değere ulaşır.3. bölüm: Temeller
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.7. 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.15. bölüm: Bir ELF Ustasına Dönüşmek
Dynamic loader · ld.so
Dinamik bağlı bir programın kütüphanelerini bulup yükleyen ve sembolleri çözen user space programı. Kernel, PT_INTERP'te adı yazan bu dosyayı programın yanına yerleştirir ve ilk çalışacak kod olarak onu işaretler.15. 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.9. 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.15. 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.2. bölüm: Metin, Bellek ve Kod
Environment variable
Process'e kalıtılan ad-değer çifti. Çocuk process'ler ebeveynlerinin ortamının bir kopyasıyla başlar.14. 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.20. 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.21. bölüm: Sanal Makineler ve Container'lar
Exception · istisna
CPU'nun yürüttüğü talimatı tamamlayamadığında kendi kendini kesmesi: sıfıra bölme, izin verilmeyen bir adrese erişim, eşlenmemiş bir sayfaya dokunma (page fault). Donanımdan ya da programın isteğinden değil, talimatın kendisinden doğar.4. bölüm: Kernel, User Mode ve Syscall
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.13. 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.8. 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.3. 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.14. 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.3. 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.19. bölüm: Fork'lar ve COW'lar Hakkında Konuşalım
Fork-exec modeli
Unix'te yeni program başlatmanın standart kalıbı: önce fork ile kopya çıkar, child'da execve ile kimliği değiştir, parent'ta wait ile bitişini bekle. Fork ile exec arasındaki pencere, fd'leri ve namespace'leri düzenlemenin yeridir.19. bölüm: Fork'lar ve COW'lar Hakkında Konuşalım
FORTIFY_SOURCE
Derleyicinin hedef tamponun boyutunu derleme anında bildiği yerlerde memcpy ve strcpy gibi çağrıları sınır kontrolü yapan sürümleriyle değiştirmesi. Yalnızca optimizasyon açıkken ve -D_FORTIFY_SOURCE tanımlıyken devreye girer.18. bölüm: Bellek Güvenliği ve Sertleştirme
Frekans · clock frequency
Saniyedeki saat vuruşu sayısı, GHz ile ölçülür. 3 GHz saniyede üç milyar vuruş demektir. Tek başına performansı belirlemez; üç çarpandan yalnızca biridir.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
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.20. 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.9. 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.18. 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.14. 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.15. bölüm: Bir ELF Ustasına Dönüşmek
Gölge yığın · shadow stack
Dönüş adreslerinin programın yazamadığı ikinci bir kopyası. ret iki kopyayı karşılaştırır, tutmazsa programı durdurur; ROP saldırılarına karşı donanım savunmasıdır (Intel CET, ARM'da benzer iş için PAC).18. bölüm: Bellek Güvenliği ve Sertleştirme
Guest ve host
Sanal makinenin içinde çalışan işletim sistemine guest, altındaki fiziksel makineye host denir.21. 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.20. bölüm: Dosya Sistemi ve I/O
Hazard
Pipeline'da bir talimatın kendi aşamasına giremeyip arkasındakileri bekletmesi. Üç türü vardır: yapısal (aynı donanım birimi), veri (önceki sonuç henüz hazır değil) ve kontrol (dallanmanın yönü bilinmiyor).11. bölüm: İşlemciyi Hızlandıran Hileler
Heap
Programın çalışma sırasında büyüyüp küçülen, ömrü fonksiyon dönüşlerine bağlı olmayan bellek alanı. Buradan alınan blok, açıkça bırakılana kadar geçerli kalır.16. bölüm: Bellek Aslında Sanal
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.17. 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.21. bölüm: Sanal Makineler ve Container'lar

I

IDT · interrupt descriptor table
x86-64'te kernel'ın açılışta kurduğu, her interrupt numarasını bir handler adresine eşleyen tablo. Yalnızca kernel mode'dan değiştirilebilir; syscall'ın güvenli olmasının sebebi programın bu tabloya dokunamamasıdır.4. bölüm: Kernel, User Mode ve Syscall
IEEE 754
Kayan nokta sayılarının bit düzenini ve işlem kurallarını tanımlayan, pratikte her işlemcinin uyguladığı standart. Tek duyarlık 32, çift duyarlık 64 bit kullanır.1. bölüm: Sayılar: Bit'ten Kayan Noktaya
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.3. 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ı), yazılımdan ya da CPU'nun kendisinden (exception) gelebilir.4. bölüm: Kernel, User Mode ve Syscall
IPC · instructions per cycle
Çevrim başına bitirilen talimat sayısı. Frekans yirmi yıldır yerinde saydığı hâlde işlemcilerin hızlanmaya devam etmesinin başlıca sebebi bu çarpanın büyümesidir.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
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.5. 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: Sayılar: Bit'ten Kayan Noktaya
İ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: Sayılar: Bit'ten Kayan Noktaya
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.19. 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.20. 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.20. bölüm: Dosya Sistemi ve I/O

K

Karşılıklı dışlama · mutual exclusion
Paylaşılan alana aynı anda en fazla bir işin girebilmesi kuralı. Tek başına yeterli bir hedef değildir: kullanılabilir bir çözümün ayrıca ilerleme ve sınırlı bekleme koşullarını da sağlaması gerekir.10. bölüm: Aynı Anda İki Şey
Kayan nokta · floating point
Ondalık sayıları işaret, üs ve mantis olarak saklayan gösterim. Bilimsel gösterimin ikilik karşılığıdır; nokta üsse göre kaydığı için hem çok büyük hem çok küçük sayılar aynı bit genişliğine sığar.1. bölüm: Sayılar: Bit'ten Kayan Noktaya
Kernel
İşletim sisteminin merkezindeki program: donanımı, belleği ve process'leri yöneten, kernel mode'da çalışan katman. Türkçede "işletim sistemi çekirdeği" de denir; bu kitapta çekirdek yalnızca CPU core anlamında kullanılır. Linux tek başına bir kernel'dır; kullanılabilir bir sistem için üstüne shell ve diğer user space yazılımları gelir.3. bölüm: Temeller
Kernel mode
CPU'nun her talimatı ve tüm donanımı kullanabildiği ayrıcalıklı çalışma kipi. Yalnızca kernel bu kipte çalışır.4. bölüm: Kernel, User Mode ve Syscall
Kilitlenme · deadlock
İki ya da daha fazla işin, her birinin diğerinin tuttuğu kaynağı beklemesi yüzünden hiçbirinin ilerleyememesi. Kimse hata vermez, kimse çökmez; ilgili işler sessizce durur.10. bölüm: Aynı Anda İki Şey
KPTI · Kernel Page Table Isolation
Meltdown'a karşı yazılım savunması: kullanıcı programı çalışırken kernel'ın bellek haritası sayfa tablolarından çıkarılır. Her syscall'da tablo değiştirmek zorunda kalındığı için performans bedeli vardır; PCID bu bedeli hafifletir.12. bölüm: Tahmin, Spekülasyon ve Spectre
Kritik bölge · critical section
Kodun paylaşılan veriye dokunan ve aynı anda yalnızca tek bir iş tarafından yürütülmesi gereken parçası. Sınırlarını programcı belirler; donanım hangi satırların birlikte korunması gerektiğini bilmez.10. bölüm: Aynı Anda İki Şey

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.11. bölüm: İşlemciyi Hızlandıran Hileler
Lazy binding · tembel bağlama
Dinamik bağlanan bir fonksiyonun adresinin program başlarken değil, ilk çağrıldığı anda çözülmesi. PLT ve GOT bunun için vardır; Full RELRO açıkken bu davranış kapatılıp bütün adresler başlangıçta çözülür.15. bölüm: Bir ELF Ustasına Dönüşmek
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.15. bölüm: Bir ELF Ustasına Dönüşmek
Linker · bağlayıcı
Derlenmiş object file'ları ve kütüphaneleri birleştirip çalıştırılabilir dosyayı üreten program. Relocation notlarını doldurur; hiçbir yerde bulamadığı sembol için undefined reference hatası verir. Dynamic linking'de işin bir kısmını çalışma anına, dynamic loader'a bırakır.2. bölüm: Metin, Bellek ve Kod
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.8. 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.13. 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.2. bölüm: Metin, Bellek ve Kod
malloc
C kütüphanesinin, program istediğinde bellek bloğu ayıran işlevi. Kernel'dan sayfalar toptan alınır; bu işlev alınanı küçük parçalara bölüp dağıtır ve bırakılanları yeniden kullanmak üzere saklar.16. bölüm: Bellek Aslında Sanal
Mantıksal işlemci · logical processor
SMT sayesinde tek bir fiziksel çekirdeğin içinde tutulan ikinci durum kopyası. İşletim sistemi bunu ayrı bir işlemci olarak görür, ama hesap birimleri paylaşıldığı için ikinci bir çekirdek kadar iş çıkarmaz.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
Mantis · significand
Kayan nokta gösteriminde sayının anlamlı basamaklarını tutan alan. Genişliği hassasiyeti belirler; çift duyarlıkta 52 bit, yaklaşık on altı ondalık basamağa karşılık gelir.1. bölüm: Sayılar: Bit'ten Kayan Noktaya
MESI
Cache tutarlılığının en yaygın anlatımı: her cache line kopyası Modified, Exclusive, Shared ya da Invalid durumlarından birindedir. Bir çekirdek yazmadan önce diğerlerinin kopyalarını Invalid yaptırır.8. bölüm: Cache Nasıl Çalışır
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.5. 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.5. 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.17. 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.20. 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.16. bölüm: Bellek Aslında Sanal
Mutex
Paylaşılan veriye erişimi tek sıraya indiren kilit yapısı; arayüzü al ve bırak olmak üzere iki işlemden ibarettir. Biri tutarken gelenler bekler, içeride atomik bir donanım talimatına dayanır.10. bölüm: Aynı Anda İki Şey

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ı.21. bölüm: Sanal Makineler ve Container'lar
NaN · not a number
Cevabı tanımsız olan kayan nokta işlemlerinin ürettiği özel değer. Bulaşıcıdır: içeren her hesap yine bunu döndürür. Kendisine bile eşit olmaması, varlığını sınamanın klasik yoludur.1. bölüm: Sayılar: Bit'ten Kayan Noktaya
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: Sayılar: Bit'ten Kayan Noktaya
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.18. bölüm: Bellek Güvenliği ve Sertleştirme
NUMA · non-uniform memory access
Çok soketli makinelerde her işlemcinin kendi bellek denetleyicisi ve RAM'i olduğu düzen. Kendi soketine takılı RAM'e erişim hızlı, komşu soketinkine erişim belirgin biçimde yavaştır; kernel bu yüzden belleği ve görevleri sokete yakın tutmaya çalışır.7. bölüm: Bellek Hiyerarşisi
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.18. 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.14. bölüm: Shell'den Kernel'e
OCI · Open Container Initiative
İmajın biçimini, çalıştırılma şeklini ve dağıtımını tanımlayan üç ayrı standart. Docker ile üretilen bir imajın Kubernetes altında çalışabilmesi, zincirin her halkasının aynı tarifi okumasındandır.21. bölüm: Sanal Makineler ve Container'lar
Oku-değiştir-yaz · read-modify-write
Bir değeri bellekten register'a alıp orada işleyip geri yazan üç adımlı dizi. Tek satırlık bir artırma bile bu dizidir; adımların arasındaki boşluğa başka bir iş girerse ara sonuç kaybolur.10. bölüm: Aynı Anda İki Şey
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: Sayılar: Bit'ten Kayan Noktaya
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.17. bölüm: Adres Çevirisi ve TLB
Out-of-order yürütme · out-of-order execution
Bekleyen bir talimatın arkasındaki bağımsız talimatların öne alınıp yürütülmesi. Sonuçlar reorder buffer'da bekletilip sıralı emekli edildiği için tek thread'in gördüğü sonuç yine sıralıdır.11. bölüm: İşlemciyi Hızlandıran Hileler
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.17. 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.20. 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.9. 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.20. 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.17. 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ı.16. 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.17. 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.21. bölüm: Sanal Makineler ve Container'lar
Parçalanma · fragmentation
Ayrılıp bırakılan bloklar arasında serbest ama dağınık boşlukların birikmesi. Toplam boş alan yeterli olduğu hâlde büyük ve bitişik tek parça isteyen bir istek karşılanamaz duruma gelir.16. bölüm: Bellek Aslında Sanal
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: Sayılar: Bit'ten Kayan Noktaya
PATH
Shell'in komut adını çalıştırılabilir dosyaya çevirirken sırayla baktığı dizin listesini tutan environment variable.14. 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.17. 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.12. bölüm: Tahmin, Spekülasyon ve Spectre
Peterson algoritması
İki iş için, yalnızca sıradan okuma ve yazma kullanarak karşılıklı dışlamayı sağlayan klasik çözüm. Modern donanımda tek başına yetmez, çünkü yazmaların yazıldıkları sırayla görüneceğini varsayar.10. bölüm: Aynı Anda İki Şey
PID · process ID
Kernel'ın her process'e verdiği benzersiz sayısal kimlik.19. 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.18. 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.14. 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.11. 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.21. 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.15. 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.19. bölüm: Fork'lar ve COW'lar Hakkında Konuşalım
Preemption
Çalışan bir işin, kendi isteği olmadan, genellikle timer interrupt'ı ile kesilip CPU'nun başkasına verilmesi. Programların gönüllü sıra verdiği cooperative multitasking'in yerini aldı.9. bölüm: Zamanı Dilimle
Preemptive multitasking
İşletim sisteminin bir programı, o istemese bile durdurup CPU'yu başkasına verebilmesi. Tek bir programın makineyi kilitlemesini engeller.9. 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.8. 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.3. 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.14. 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.15. 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.16. bölüm: Bellek Aslında Sanal

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.3. 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.11. bölüm: İşlemciyi Hızlandıran Hileler
Relocation · yeniden yerleştirme kaydı
Assembler'ın object file'a bıraktığı not: "şu byte'lara, şu sembolün adresi hesaplanıp yazılacak." Linker ya da dynamic loader bu notları okuyup boş bırakılan yerleri doldurur.2. bölüm: Metin, Bellek ve Kod
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.18. 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.11. 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.3. bölüm: Temeller
Ring
x86'nın ayrıcalık seviyelerine verdiği ad. Ring 0 kernel mode, ring 3 user mode'dur; 1 ve 2 tanımlıdır ama modern sistemler kullanmaz. CPU hangi ring'de olduğunu cs register'ının alt iki bitinde tutar.4. bölüm: Kernel, User Mode ve Syscall
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.21. 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.18. 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.16. bölüm: Bellek Aslında Sanal
Satır tamponu · row buffer
Bir DRAM satırı açıldığında içeriğinin tamamının aktarıldığı geçici alan. Sonraki istek aynı satıra düşerse doğrudan buradan karşılanır; başka satıra düşerse açma bedeli yeniden ödenir.7. bölüm: Bellek Hiyerarşisi
Sayfa · page
Sanal belleğin eşlemede kullanılan sabit boyutlu bloğu; x86-64'te tipik olarak 4 KiB.16. bölüm: Bellek Aslında Sanal
Scheduler
Hangi process'in ne kadar süre CPU kullanacağına karar veren kernel bileşeni.9. 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.21. 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.15. 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 SIGSEGV ile sonlandırılması. Eşleme var ama arkasında sayfa yoksa kernel bunun yerine SIGBUS gönderir.17. bölüm: Adres Çevirisi ve TLB
Semafor · semaphore
Dijkstra'nın önerdiği, içinde bir tam sayı tutan izin sayacı. wait sayacı azaltır ve sıfırın altına düşecekse çağıranı uyutur; signal artırıp bekleyeni uyandırır. Sahiplik taşımadığı için dışlama aracı olduğu kadar haberleşme aracıdır.10. bölüm: Aynı Anda İki Şey
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.15. 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.13. 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.14. 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.11. 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.14. 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.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
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.12. 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.12. bölüm: Tahmin, Spekülasyon ve Spectre
Spinlock
Kilidi alana kadar CPU'yu bırakmadan dönerek bekleyen kilit. Kritik bölge çok kısaysa uyuyup uyanmaktan ucuzdur; uzunsa çekirdeği boşa döndürür.10. bölüm: Aynı Anda İki Şey
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.7. bölüm: Bellek Hiyerarşisi
Stack · yığın
Fonksiyon çağrılarının dönüş adreslerini ve yerel değişkenlerini tutan, tek yönde büyüyen bellek bölgesi. En son konan ilk alınır; tepesini gösteren adres bir register'da durur.3. bölüm: Temeller
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.18. bölüm: Bellek Güvenliği ve Sertleştirme
Stack frame · yığın çerçevesi
Tek bir fonksiyon çağrısının stack'te kapladığı alan. Dönüş adresini, korunan register değerlerini ve o çağrının yerel değişkenlerini taşır; çağrı bitince atılır.3. bölüm: Temeller
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.15. bölüm: Bir ELF Ustasına Dönüşmek
Store buffer
Çekirdeğin yazmalarını cache'e yerleşmesini beklemeden bıraktığı küçük kuyruk. Kendi okumaları bu kuyruğu görür, diğer çekirdekler görmez; iki thread'in yazmalarının karşı tarafa yazıldıkları sırayla görünmemesinin sebebi budur.10. bölüm: Aynı Anda İki Şey
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.14. bölüm: Shell'den Kernel'e
Subshell
Shell'in fork ile açtığı ama exec çağırmadığı kopyası. Parantez içindeki komutlar, $(...) ve pipeline'ın her halkası burada çalışır; kopyada değişen değişken ya da dizin ana shell'e yansımaz.14. 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.20. bölüm: Dosya Sistemi ve I/O
Superscalar
Aynı clock cycle içinde birden fazla talimatı başlatabilen işlemci tasarımı.11. bölüm: İşlemciyi Hızlandıran Hileler
Swap
Az kullanılan bellek sayfalarının diske yazılıp RAM'den çıkarılması; sanal adres page table'da kalır, sayfa tekrar istendiğinde major fault ile geri gelir. Major fault sayısının hızla artması makinenin swap'e düştüğünün işaretidir.17. bölüm: Adres Çevirisi ve TLB
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.4. bölüm: Kernel, User Mode ve Syscall

T

Tazeleme · refresh
DRAM hücrelerindeki kapasitörlerin kaçırdığı yükün, veri bozulmadan önce okunup geri yazılması. Milisaniyeler ölçeğinde düzenli tekrarlanır ve o sırada ilgili bölge erişime kapalıdır.7. bölüm: Bellek Hiyerarşisi
Test-and-set
Bir değişkeni okuyup aynı bölünmez adımda içine "dolu" yazan, geriye de bulduğu eski değeri döndüren donanım talimatı. Eski değer boşsa giriş hakkı isteyene geçmiş demektir.10. bölüm: Aynı Anda İki Şey
Thread · iş parçacığı
Bir process içindeki bağımsız yürütme akışı. Aynı process'in thread'leri adres alanını ve açık dosyaları paylaşır; instruction pointer, register seti ve stack her birine ayrıdır.10. bölüm: Aynı Anda İki Şey
Throttling
Çip ısındığında ya da güç sınırına dayandığında frekansın düşürülmesi. Arıza değil tasarımın parçasıdır; aynı programın ikinci koşusunun neden daha yavaş bittiğini açıklar.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci
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.9. 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.8. bölüm: Cache Nasıl Çalışır
TOCTOU · time-of-check to time-of-use
Kontrol edilen değerle kullanılan değerin arada değişmesinden doğan açık sınıfı. Kernel bu yüzden kullanıcıdan gelen veriyi önce kendi tarafına kopyalar, sonra doğrular.13. bölüm: Bir Program Nasıl Çalıştırılır?
Trap-and-emulate
Sanallaştırmanın temel düzeni: guest ayrıcalıklı bir talimat çalıştırdığında CPU bunu yakalar, hypervisor taklit eder ve sonucu geri verir. Donanım desteğiyle bu döngü her talimat için değil, yalnızca hypervisor'ın bildirilmesini istediği olaylar için işler.21. bölüm: Sanal Makineler ve Container'lar
TSO · Total Store Order
x86-64'ün görece katı bellek modeli: yalnızca bir yazmadan sonra gelen okuma öne geçebilir. ARM daha gevşektir; Apple'ın M çiplerinde çevrilmiş x86 kodu için TSO'yu taklit eden bir kip bulunur.10. bölüm: Aynı Anda İki Şey
Turbo
Güç ve ısı bütçesi elverdiğinde işlemcinin ilan edilen taban hızın üzerine çıkması. Taban frekans bütün çekirdekler tam yükteyken garanti edilen hızdır; turbo ancak koşullar uygunken görülür.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci

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.4. bölüm: Kernel, User Mode ve Syscall
UTF-8
Unicode karakterlerini 1-4 byte arası değişen uzunlukta yazan kodlama. ASCII karakterleri tek byte'ta aynen kalır; çok byte'lı bir karakterin ilk byte'ı kaç byte süreceğini baştaki bitleriyle söyler. Bu yüzden strlen("ğ") 2 döndürür.2. bölüm: Metin, Bellek ve Kod

V

vDSO · virtual dynamic shared object
Kernel'ın her process'in adres alanına eşlediği küçük paylaşımlı kütüphane. clock_gettime gibi sık çağrılan ve gizli bilgi gerektirmeyen birkaç syscall, kernel'a hiç geçmeden user space'te tamamlanır.22. bölüm: Son Söz
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.20. 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.21. 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.21. 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.3. 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.18. 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.8. 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ı.5. bölüm: Mimariler: x86, ARM ve Diğerleri

Y

Yan kanal · side channel
Bir sırrın doğrudan okunarak değil, sistemin bıraktığı dolaylı izlerden — zamanlama, cache durumu, güç tüketimi — çıkarılması. Performans için kurulan her paylaşım aynı zamanda bir yan kanaldır.12. bölüm: Tahmin, Spekülasyon ve Spectre
Yarış durumu · race condition
Sonucun, birbirinden bağımsız işlerin hangi sırayla ilerlediğine bağlı olması. Aynı program aynı makinede her koşuda başka bir çıktı verebilir; hata testte nadiren, yük ve çekirdek sayısı arttığında sık görünür.10. bölüm: Aynı Anda İki Şey
Yonga · die
Üzerinde çekirdeklerin bulunduğu tek parça silikon. Anakarttaki fiziksel yuva olan soketle karıştırılmamalıdır; bir sokete oturan paket birden fazla yonga taşıyabilir.6. bölüm: Saat, Çekirdek ve Mantıksal İşlemci

Z

Zaman dilimi · time slice
Bir process'in kesintiye uğramadan önce CPU'yu kullanabileceği süre.9. 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.19. bölüm: Fork'lar ve COW'lar Hakkında Konuşalım