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
3 yazı bulundu #memory-model
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 15
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 16
.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 15
Blog Haritası