مدل حافظه (برنامهنویسی)
این مقاله دقیق، کامل و صحیح ترجمه نشده و نیازمند ترجمه به فارسی است. کل یا بخشی از این مقاله به زبانی بهجز زبان فارسی نوشته شدهاست. اگر مقصود ارائهٔ مقاله برای مخاطبان آن زبان است، باید در نسخهای از ویکیپدیا به همان زبان نوشته شود (فهرست ویکیپدیاها را ببینید). در غیر این صورت، خواهشمند است ترجمهٔ این مقاله را با توجه به متن اصلی و با رعایت سیاست ویرایش، دستور خط فارسی و برابر سازی به زبان فارسی بهبود دهید و سپس این الگو را از بالای صفحه بردارید. همچنین برای بحثهای مرتبط، مدخل این مقاله در فهرست صفحههای نیازمند ترجمه به فارسی را ببینید. اگر این مقاله به زبان فارسی بازنویسی نشود، تا دو هفتهٔ دیگر نامزد حذف میشود و/یا به نسخهٔ زبانی مرتبط ویکیپدیا منتقل خواهد شد. اگر شما اخیراً این مقاله را بهعنوان صفحهٔ نیازمند ترجمه برچسب زدهاید، لطفاً عبارت {{جا:هبک-ترجمه به فارسی|1=مدل حافظه (برنامهنویسی)}} ~~~~ را نیز در صفحهٔ بحث نگارنده قرار دهید. |
مدل حافظه در برنامهنویسی چگونگی تعاملات رشتههای اجرایی مختلف از طریق حافظه و دادههای اشتراکی را شرح میدهد.
تاریخچه و اهمیت
ویرایشمدل حافظه اجازه میدهد تا یک کامپایلر بسیاری از بهینهسازیهای مهم را انجام دهد. حتی بهینهسازیهای ساده مانند اظهارات حرکت همجوشی حلقه در برنامه میتواند ترتیب عملیات خواندن و نوشتن متغیرهای اشتراکی را تحت تأثیر قرار دهد. تغییر در ترتیب خواندن و نوشتن میتواند موجب رقابت شود. بدون یک مدل حافظه ، کامپایلر مجاز به اعمال چنین بهینهسازیهایی برای برنامههای چند رشتهای بهطور کلی نیست، مگر در موارد خاص.
بنابراین زبانهای برنامهنویسی مدرن مانند جاوا یک مدل حافظه اجرا میکنند. مدل حافظه موانع هماهنگ سازی را مشخص میکند که از طریق عملیات همگام سازی خاصی که به خوبی تعریف شدهاند، مانند دستیابی به یک قفل با وارد کردن یک بلوک هماهنگ یا یک متود. مدل حافظه تصریح میکند که تغییرات در مقادیر متغیرهای به اشتراک گذاشته شده، تنها در صورتی برای سایر رشتههای قابل مشاهده باشند که با چنین مانع هماهنگ سازی برخورد کرده باشیم. علاوه بر این، کل مفهوم شرایط رقابت براساس ترتیب عملیات با توجه به این موانع حافظه تعریف شدهاست.
سپس این معانی به کامپایلر بهینهسازی یک درجه بالاتر از آزادی درهنگام استفاده از بهینهسازی میدهد: کامپایلر تنها نیاز دارد تا مطمئن شود که مقادیر متغیر (بهطور بالقوه به اشتراک گذاشته شده) در موانع هماهنگ سازی بهطور تضمینی در هر دو کد بهینهسازی شده و بهینهسازی نشده یکسان باشند. بهطور خاص، اظهارات مرتبسازی مجدد در یک بلوک از کد که حاوی هیچ مانع هماهنگ سازی نباشد توسط کامپایلر امن در نظر گرفته میشود.
بیشتر تحقیقات در حوزه مدلهای حافظه پیرامون موضوعات زیر است:
طراحی یک مدل حافظه است که اجازه میدهد تا حداکثر درجه آزادی برای بهینهسازی کامپایلر وجود داشته باشد در حالی که هنوز تضمین کافی در مورد برنامههای فارغ ار رقابت و (شاید مهمتر) برنامههای حاوی رقابت را ارائه میدهد.
اثبات وجود برنامههای بهینهسازی که با توجه به این مدل حافظه درست هستند: مدل حافظه جاوا اولین تلاش برای ارائه یک مدل حافظه نخی جامع برای یک زبان برنامهنویسی محبوب بود. معناشناسی مدل حافظه در C و C + + از نسخههای زبان C + +11 و C11 استاندارد شدهاست.
منابع
ویرایش- مشارکتکنندگان ویکیپدیا. «Memory model (programming)». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۲۰ دی ۱۳۹۲.