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.
execvedosyanın ilk 256 baytını sırayla hepsine gösterir; ELF içinbinfmt_elf, shebang içinbinfmt_scriptcevap 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_miscaltı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.exeaç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
forkile kopya çıkar, child'daexecveile kimliği değiştir, parent'tawaitile 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
memcpyvestrcpygibi çağrıları sınır kontrolü yapan sürümleriyle değiştirmesi. Yalnızca optimizasyon açıkken ve-D_FORTIFY_SOURCEtanı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
retile biten kısa kod parçası.retile 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
*.txtgibi 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ı.
retiki 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
- 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.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 referencehatası 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
noptalimatları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
csregister'ı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,
retile 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
SIGSEGVile sonlandırılması. Eşleme var ama arkasında sayfa yoksa kernel bunun yerineSIGBUSgönderir.17. bölüm: Adres Çevirisi ve TLB - Semafor · semaphore
- Dijkstra'nın önerdiği, içinde bir tam sayı tutan izin sayacı.
waitsayacı azaltır ve sıfırın altına düşecekse çağıranı uyutur;signalartı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
forkile açtığı amaexecç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_gettimegibi 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