مدلهای همزمانی و حافظه
مدلهای همزمانی و حافظه نحوه ساختار برنامههای همزمان و چگونگی مشاهده حافظه مشترک توسط رشتههای تعاملی آنها را تعریف میکنند و اساس نرمافزار موازی صحیح را تشکیل میدهند.
Definition
مدلهای همزمانی نحوه ترکیب و ارتباط محاسبات مستقل را توصیف میکنند، در حالی که یک مدل حافظه مشخص میکند که وقتی رشتههای همزمان به حافظه مشترک دسترسی پیدا میکنند، کدام مقادیر ممکن است توسط عملیات خواندن مشاهده شوند و قرارداد بین برنامهنویس، زبان و سختافزار را تعریف میکند.
Scope
این حوزه شامل زبان و نظریه همزمانی است: حسابهای فرآیند و مدلهای همزمانی برای ارتباط و همگامسازی، مدلهای سازگاری حافظه که ترتیبهای مجاز عملیات حافظه را مشخص میکنند، مکانیزمهای همگامسازی و آزادی از رقابت دادهها، و سیستمهای نوع برای همزمانی مانند انواع جلسه. این حوزه به چگونگی معنا بخشیدن زبانها به برنامههایی که به طور همزمان اجرا میشوند و حالت مشترک دارند، میپردازد.
Sub-topics
Core questions
- چگونه میتوان فرآیندهای همزمان ارتباطی را مدلسازی و درباره آنها استدلال کرد؟
- یک برنامه چه ترتیبهایی از عملیات حافظه را ممکن است مشاهده کند؟
- چگونه آزادی از رقابت دادهها تضمین یا مشخص میشود؟
- چگونه انواع میتوانند ارتباط را منظم کرده و از خطاهای همزمانی جلوگیری کنند؟
Key theories
- حسابهای فرآیند
- CSP هوار و CCS و پی-کالکولوس میلنر نظریههای جبری از فرآیندهای همزمان و ارتباطی را ارائه میدهند، با عملگرهایی برای ترکیب و همگامسازی و مفاهیمی از همارزی رفتاری مانند همشبیهسازی (bisimulation).
- سازگاری ترتیبی
- لامپورت سازگاری ترتیبی را به عنوان الزامی تعریف کرد که اجرای یک چندپردازنده به صورت یک درهمآمیزی از عملیات هر پردازنده به ترتیب برنامه ظاهر شود، که مبنایی است که مدلهای حافظه ضعیفتر با آن مقایسه میشوند.
- مدلهای سازگاری حافظه
- ادوه و غراچرلو طیف مدلهای سازگاری حافظه مشترک را سیستماتیک میکنند و توضیح میدهند که چگونه ترتیبهای آزاد عملکرد را افزایش میدهند در حالی که استدلال درباره برنامههای همزمان را پیچیده میکنند.
Clinical relevance
مدلهای حافظه اکنون بخشی از مشخصات اصلی زبانها (به عنوان مثال در C++ و جاوا) هستند، زیرا سختافزار چند هستهای ترتیبهای آزاد را قابل مشاهده کرده است؛ درک صحیح آنها برای نرمافزار همزمان صحیح و قابل حمل ضروری است. حسابهای فرآیند و انواع جلسه طراحی زبانها و پروتکلهای مبتنی بر ارسال پیام را شکل میدهند.
History
نظریه همزمانی از شبکههای پتری و کارهای دهه 1970 هوار (CSP) و میلنر (CCS) و بعدها پی-کالکولوس برای فرآیندهای متحرک رشد کرد. لامپورت سازگاری ترتیبی را در سال 1979 تعریف کرد؛ با گسترش سختافزارهای آزاد، مدلهای حافظه برای زبانهایی مانند جاوا و C++ در دهه 2000 رسمی شدند و معناشناسی حافظه ضعیف به یک حوزه تحقیقاتی فعال تبدیل شد.
Debates
- سازگاری حافظه قوی در مقابل آزاد
- طراحان سادگی بصری مدلهای قوی مانند سازگاری ترتیبی را با عملکرد مدلهای آزاد که امکان ترتیبدهی مجدد را میدهند، مبادله میکنند، که استدلال را پیچیده کرده و نیازمند معناشناسی دقیق در سطح زبان است.
Key figures
- C. A. R. Hoare
- Robin Milner
- Leslie Lamport
- Sarita Adve
Related topics
Seminal works
- hoare1978
- milner1989
- lamport1979
- adve1996
Frequently asked questions
- مدل حافظه چیست؟
- مدل حافظه قراردادی رسمی است که مشخص میکند وقتی چندین رشته به حافظه مشترک دسترسی پیدا میکنند، یک عملیات خواندن چه مقادیری را میتواند برگرداند و تعریف میکند که کامپایلر و سختافزار چه ترتیبدهیهای مجددی را ممکن است انجام دهند و برنامهنویس میتواند به چه چیزی تکیه کند.
- سازگاری ترتیبی چیست؟
- سازگاری ترتیبی ایجاب میکند که یک اجرای همزمان به صورت یک درهمآمیزی واحد از عملیات رشتهها رفتار کند که ترتیب برنامه هر رشته را رعایت میکند، و آن را به شهودیترین (اما اغلب آزاد) مدل حافظه تبدیل میکند.