Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
8 yazı bulundu
Concurrency ve Parallelism: Interleaving, Nondeterminism ve Amdahl Yasası
Bilgisayar Bilimi Temelleri SERİ 01

Concurrency ve Parallelism: Interleaving, Nondeterminism ve Amdahl Yasası

Concurrency işlerin üst üste binmesidir, parallelism aynı anda çalışmalarıdır; hızlanmanın tavanını ise seri kısım belirler: %10 seri kısımla 64 core en fazla 8,8 kat getirir. İki thread'in 20 olası sırasından 18'inde artışın kaybolduğunu, gerçek koşuda sıraların %99,6'sının tek bir sıra olduğunu ve Bookstore rapor job'ının ARM64'te 10 worker'la Amdahl'ın altında kaldığını ölçüyoruz.

14 Kas 2026 12 dk 14
Race Condition ve Data Race: Check-Then-Act, Read-Modify-Write ve Atomicity
Bilgisayar Bilimi Temelleri SERİ 02

Race Condition ve Data Race: Check-Then-Act, Read-Modify-Write ve Atomicity

Data race, senkronizasyonsuz ve en az biri yazma olan eşzamanlı bellek erişimidir; race condition ise sonucun zamanlamaya bağlı olmasıdır ve biri olmadan diğeri olabilir. Gerçek thread'lerle count++'ın artışların %82'sini kaybettiğini, ConcurrentDictionary ile yazılan stok kontrolünün iki bin turun 1403'ünde fazla sattığını ve 32 byte'lık bir fiyat struct'ının ARM64'te yarısı eski, yarısı yeni okunduğunu gösteriyoruz.

14 Kas 2026 12 dk 13
Mutual Exclusion Teorisi: Critical Section, Peterson Algoritması, Semaphore ve Monitor
Bilgisayar Bilimi Temelleri SERİ 03

Mutual Exclusion Teorisi: Critical Section, Peterson Algoritması, Semaphore ve Monitor

Doğru bir critical section çözümü mutual exclusion, progress ve bounded waiting şartlarını birlikte sağlamalıdır; bunu yalnız okuma ve yazmayla yapan Peterson algoritması ise sequential consistency varsayar. Volatile ile yazılmış Peterson'ın ARM64'te 40 milyon girişte 99 kez bozulduğunu ve full fence ile düzeldiğini, kargo kuyruğunda if ile beklemenin 54.234 hata ürettiğini gösteriyor, test-and-set, semaphore ve monitor'ün kökenine bakıyoruz.

14 Kas 2026 12 dk 14
Deadlock, Livelock ve Starvation: Coffman Koşulları, Lock Ordering ve Priority Inversion
Bilgisayar Bilimi Temelleri SERİ 04

Deadlock, Livelock ve Starvation: Coffman Koşulları, Lock Ordering ve Priority Inversion

Deadlock ancak mutual exclusion, hold and wait, no preemption ve circular wait birlikte olduğunda oluşur; pratikte en kolay kırılan koşul circular wait'tir ve çözümü kilitleri global bir sırayla almaktır. Bookstore'un iki deposu arasında gerçekten kilitlenen transferi Id sırasıyla 25 ms'de bitiriyor, 1 ms'lik timeout'un 5 saniyede 621.187 timeout'lu bir livelock ürettiğini ölçüyor ve Mars Pathfinder'ın priority inversion vakasına bakıyoruz.

14 Kas 2026 11 dk 12
Hardware Memory Model: Reordering, Store Buffer, Cache Coherence ve Sequential Consistency
Bilgisayar Bilimi Temelleri SERİ 05

Hardware Memory Model: Reordering, Store Buffer, Cache Coherence ve Sequential Consistency

Modern CPU'lar sequential consistency vermez: store buffer bir okumanın kendinden önceki yazıyı geçmesine izin verir ve ARM64 bundan da fazlasını yeniden sıralar. ARM64'te klasik store buffering testinde 10 milyon turun 5,3 milyonunda iki thread'in de 0 okuduğunu, message passing testinde bayrağın tutardan önce göründüğünü ölçüyor, cache coherence'ın neden bunu engellemediğini ve x64'ün hangi sonuçları yasakladığını Intel kılavuzundan gösteriyoruz.

14 Kas 2026 12 dk 14
.NET Memory Model: Happens-Before, Acquire/Release, volatile ve Güvenli Object Publication
Bilgisayar Bilimi Temelleri SERİ 06

.NET Memory Model: Happens-Before, Acquire/Release, volatile ve Güvenli Object Publication

.NET memory model'inde sıradan erişimler yeniden sıralanabilir; Volatile.Read acquire, Volatile.Write release, Interlocked ve lock ise sıra garantisi veren noktalardır. Release build'de volatile olmayan bir stop flag döngüsünün JIT yüzünden hiç durmadığını, bool bayrakla yazılmış double-checked locking'in ARM64'te 20 milyon çağrıda 36 kez null döndürdüğünü gösteriyor, referans kontrolünün neden doğru olduğunu spec'ten çıkarıyor ve Java, C++ ve Go ile karşılaştırıyoruz.

14 Kas 2026 11 dk 14
Lock-Free ve Wait-Free: CAS Döngüsü, ABA Problemi ve Linearizability
Bilgisayar Bilimi Temelleri SERİ 07

Lock-Free ve Wait-Free: CAS Döngüsü, ABA Problemi ve Linearizability

Lock-free bir algoritma rekabet altında bile en az bir thread'in ilerlemesini garanti eder, wait-free ise her thread'in. CAS döngüsüyle bir sayaç ve Treiber stack yazıyor, node havuzlamanın ABA problemini geri getirip 8 milyon id'nin yüz binlercesini kaybettirdiğini, küçük bir checker'ın bozuk stack'te linearizable olmayan geçmişler bulduğunu ve 8 thread'de CAS döngüsünün lock'tan 16 kat yavaş kaldığını ARM64'te ölçüyoruz.

14 Kas 2026 13 dk 14
Concurrency Modelleri ve Concurrent Kodu Doğrulamak: Shared Memory, Actor, CSP ve Model Checking
Bilgisayar Bilimi Temelleri SERİ 08

Concurrency Modelleri ve Concurrent Kodu Doğrulamak: Shared Memory, Actor, CSP ve Model Checking

Concurrency modeli durumun sahibini ve haberleşme şeklini belirler: shared memory'de herkes kilitle sırayla dokunur, actor ve CSP'de durumun tek sahibi vardır ve haberleşme mesajladır. Bookstore stok rezervasyonunu lock, actor ve channel pipeline ile kuruyor, actor'ün içi hatasızken oku-sonra-yaz protokolünün 1.000 stoktan 4.000 kitap sattırdığını gösteriyor ve aynı check-then-act hatasını TLA+ ile model check edip TLC'nin karşı örneğini okuyoruz.

14 Kas 2026 13 dk 14
Blog Haritası