ScholarGate
Asistan

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.

PaperMind ile konu bulYakındaMakale ve konu bul
Tools & resources
Slaytları indir
Learn & explore
VideoYakında

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.

Bu kavram için yöntemler

İlgili kavramlar