مدل حافظه (برنامه‌نویسی)

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

مدل حافظه در برنامه‌نویسی چگونگی تعاملات رشته‌های اجرایی مختلف از طریق حافظه و داده‌های اشتراکی را شرح می‌دهد.

تاریخچه و اهمیت[ویرایش]

مدل حافظه اجازه می‌دهد تا یک کامپایلر بسیاری از بهینه‌سازی‌های مهم را انجام دهد. حتی بهینه‌سازی‌های ساده مانند اظهارات حرکت همجوشی حلقه در برنامه می‌تواند ترتیب عملیات خواندن و نوشتن متغیرهای اشتراکی را تحت تاثیر قرار دهد. تغییر در ترتیب خواندن و نوشتن می‌تواند موجب رقابت شود. بدون یک مدل حافظه ، کامپایلر مجاز به اعمال چنین بهینه‌سازی‌هایی برای برنامه‌های چند رشته‌ای به طور کلی نیست، مگر در موارد خاص.

بنابراین زبان‌های برنامه نویسی مدرن مانند جاوا یک مدل حافظه اجرا می‌کنند. مدل حافظه موانع هماهنگ سازی را مشخص می‌کند که از طریق عملیات همگام سازی خاصی که به خوبی تعریف شده‌اند، مانند دستیابی به یک قفل با وارد کردن یک بلوک هماهنگ یا یک متود. مدل حافظه تصریح می‌کند که تغییرات در مقادیر متغیرهای به اشتراک گذاشته شده، تنها در صورتی برای سایر رشته‌های قابل مشاهده باشند که با چنین مانع هماهنگ سازی برخورد کرده باشیم. علاوه بر این، کل مفهوم شرایط رقابت براساس ترتیب عملیات با توجه به این موانع حافظه تعریف شده است.

سپس این معانی به کامپایلر بهینه‌سازی یک درجه بالاتر از آزادی درهنگام استفاده از بهینه‌سازی می‌دهد: کامپایلر تنها نیاز دارد تا مطمئن شود که مقادیر متغیر (به طور بالقوه به اشتراک گذاشته شده) در موانع هماهنگ سازی به طور تضمینی در هر دو کد بهینه‌سازی شده و بهینه‌سازی نشده یکسان باشند. به طور خاص، اظهارات مرتب‌سازی مجدد در یک بلوک از کد که حاوی هیچ مانع هماهنگ سازی نباشد توسط کامپایلر امن در نظر گرفته می‌شود.

بیشتر تحقیقات در حوزه مدل‌های حافظه پیرامون موضوعات زیر است:

طراحی یک مدل حافظه است که اجازه می‌دهد تا حداکثر درجه آزادی برای بهینه‌سازی کامپایلر وجود داشته باشد در حالی که هنوز تضمین کافی در مورد برنامه‌های فارغ ار رقابت و (شاید مهمتر) برنامه‌های حاوی رقابت را ارائه می‌دهد.

اثبات وجود برنامه‌های بهینه‌سازی که با توجه به این مدل حافظه درست هستند: مدل حافظه جاوا اولین تلاش برای ارائه یک مدل حافظه نخی جامع برای یک زبان برنامه نویسی محبوب بود. معناشناسی مدل حافظه در C و C + + از نسخه‌های زبان C + +11 و C11 استاندارد شده است.

منابع[ویرایش]

  • مشارکت‌کنندگان ویکی‌پدیا، «Memory model (programming)»، ویکی‌پدیای انگلیسی، دانشنامهٔ آزاد (بازیابی در ۲۰ دی ۱۳۹۲).