Eşzamanlılık ve Bellek Modelleri
Eşzamanlılık ve bellek modelleri, eşzamanlı programların nasıl yapılandırıldığını ve etkileşimli iş parçacıklarının paylaşılan belleği nasıl gözlemlediğini tanımlamakta olup, doğru paralel yazılımın temelini oluşturmaktadır.
Tanım
Eşzamanlılık modelleri, bağımsız olarak yürütülen hesaplamaların nasıl bir araya getirildiğini ve iletişim kurduğunu tanımlarken, bir bellek modeli, eşzamanlı iş parçacıkları paylaşılan belleğe eriştiğinde okumaların hangi değerleri gözlemleyebileceğini belirlemekte, böylece programcı, dil ve donanım arasındaki sözleşmeyi tanımlamaktadır.
Kapsam
Bu alan, eşzamanlılığın dilini ve kuramını kapsamaktadır: süreç hesapları (process calculi) ve eşzamanlılık modelleri (concurrency models) iletişim ve senkronizasyon için, bellek işlemlerinin izin verilen sıralamalarını belirleyen bellek tutarlılık modelleri (memory consistency models), senkronizasyon mekanizmaları ve veri yarışı (data-race) özgürlüğü ile oturum tipleri (session types) gibi eşzamanlılık için tip sistemleri. Aynı anda yürütülen ve durumu paylaşan programlara dillerin nasıl anlam kazandırdığını ele almaktadır.
Alt konular
Temel sorular
- Eşzamanlı iletişim kuran süreçler nasıl modellenebilir ve bunlar hakkında nasıl akıl yürütülebilir?
- Bir program, bellek işlemlerinin hangi sıralamalarını gözlemleyebilir?
- Veri yarışından (data race) özgürlük nasıl garanti edilir veya belirtilir?
- Tipler, iletişimi nasıl disipline edebilir ve eşzamanlılık hatalarını nasıl önleyebilir?
Temel kuramlar
- Süreç hesapları (Process calculi)
- Hoare'un CSP'si ile Milner'ın CCS'si ve pi-calculus'u, birleştirme ve senkronizasyon operatörleri ve bisimülasyon gibi davranışsal denklik kavramları ile eşzamanlı, iletişim kuran süreçlerin cebirsel kuramlarını sunmaktadır.
- Sıralı tutarlılık (Sequential consistency)
- Lamport, sıralı tutarlılığı, çok işlemcili bir yürütmenin, her işlemcinin işlemlerinin program sırasına göre bir ara birleşimi (interleaving) olarak görünmesi gerekliliği şeklinde tanımlamıştır; bu, daha zayıf bellek modellerinin karşılaştırıldığı temel noktadır.
- Bellek tutarlılık modelleri
- Adve ve Gharachorloo, paylaşılan bellek tutarlılık modellerinin spektrumunu sistematize etmekte, gevşek sıralamaların (relaxed orderings) performansı nasıl mümkün kıldığını ancak eşzamanlı programlar hakkında akıl yürütmeyi nasıl karmaşıklaştırdığını açıklamaktadır.
Klinik önem
Bellek modelleri, çok çekirdekli donanımın gevşek sıralamaları (relaxed orderings) gözlemlenebilir hale getirmesi nedeniyle artık ana akım dil spesifikasyonlarının (örneğin C++ ve Java'da) bir parçasıdır; bunların doğru bir şekilde uygulanması, doğru ve taşınabilir eşzamanlı yazılım için elzemdir. Süreç hesapları (process calculi) ve oturum tipleri (session types), mesajlaşma tabanlı dillerin ve protokollerin tasarımına yön vermektedir.
Tarihçe
Eşzamanlılık kuramı, Petri ağlarından ve Hoare'un (CSP) ve Milner'ın (CCS) 1970'lerdeki çalışmalarından, daha sonra mobil süreçler için pi-calculus'tan (pi-hesabı) gelişmiştir. Lamport, 1979'da sıralı tutarlılığı (sequential consistency) tanımlamıştır; gevşek donanım (relaxed hardware) yaygınlaştıkça, 2000'li yıllarda Java ve C++ gibi diller için bellek modelleri resmileştirilmiş ve zayıf bellek semantiği (weak-memory semantics) aktif bir araştırma alanı haline gelmiştir.
Tartışmalar
- Güçlüye karşı gevşek bellek tutarlılığı
- Tasarımcılar, sıralı tutarlılık gibi güçlü modellerin sezgisel basitliğini, yeniden sıralamaya izin veren gevşek modellerin performansıyla takas etmektedir; bu durum, akıl yürütmeyi karmaşıklaştırmakta ve dikkatli dil düzeyinde semantikler gerektirmektedir.
Öne çıkan isimler
- C. A. R. Hoare
- Robin Milner
- Leslie Lamport
- Sarita Adve
İlgili konular
Temel eserler
- hoare1978
- milner1989
- lamport1979
- adve1996
Sıkça sorulan sorular
- Bellek modeli nedir?
- Bellek modeli, birden fazla iş parçacığı paylaşılan belleğe eriştiğinde bir okumanın hangi değerleri döndürebileceğini belirten, derleyicinin ve donanımın hangi yeniden sıralamaları (reorderings) gerçekleştirebileceğini ve programcının neye güvenebileceğini tanımlayan resmi bir sözleşmedir.
- Sıralı tutarlılık nedir?
- Sıralı tutarlılık, eşzamanlı bir yürütmenin, her iş parçacığının program sırasına saygı duyan, iş parçacıklarının işlemlerinin tek bir ara birleşimi (interleaving) gibi davranmasını gerektirmektedir; bu da onu en sezgisel (ancak genellikle gevşek) bellek modeli yapmaktadır.