موضوع مقاله: سیستم زمان اجرا | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # سیستم زمان اجرا | مقدمه: در برنامه نویسی رایانه، یک محیط اجرای زمانی، همچنین یا نام محیط زمان اجرا از آن یاد میشود، در درجه اول بخش هایی از یک مدل اجرا را پیاده سازی میکند. | ## بخش 1: سیستم زمان اجرا | این نباید با مرحله چرخه زمان اجرای یک برنامه اشتباه گرفته شود، که در حین آن سیستم زمان اجرا در حال کار است. بیشتر زبانها نوعی سیستم زمان اجرا دارند که محیطی را فراهم می کند که برنامه ها در آن اجرا شوند. این محیط ممکن است تعدادی از موضوعات از جمله چیدمان حافظه برنامه، چگونگی دستیابی برنامه به متغیرها ، مکانیسم های عبور پارامترها بین رویه ها، رابط با سیستم عامل و موارد دیگر را مورد بررسی قرار دهد. به طور معمول سیستم زمان اجرا مسئولیت تنظیم و مدیریت پشته و پشته را بر عهده خواهد داشت و ممکن است شامل ویژگی هایی مانند زباله روب، نخ ها یا سایر ویژگی های دینامیکی داخلی باشد. دیدگاه هر زبان برنامه نویسی یک مدل اجرایی را مشخص می کند ، و بسیاری از آنها حداقل بخشی از آن مدل را در یک سیستم زمان اجرا اجرا می کنند. یک تعریف احتمالی از عملکرد سیستم زمان اجرا ، از جمله دیگر ، هرگونه رفتاری که مستقیماً به خود برنامه منتسب نشود ، نیست. این تعریف ، به عنوان بخشی از سیستم زمان اجرا ، مواردی از قبیل قرار دادن پارامترها بر روی پشته قبل از فراخوانی عملکرد ، رفتار دیسک I / O و اجرای موازی رفتارهای مرتبط را شامل می شود. با این تعریف ، اساساً هر زبانی یک سیستم زمان اجرا دارد، از جمله زبان های کامپایل شده ، زبان های تفسیر شده و زبان های خاص دامنه تعبیه شده . بیشتر مقالات علمی در مورد سیستم های زمان اجرا بر جزئیات اجرای سیستم های زمان اجرای موازی تمرکز دارند. یک نمونه قابل توجه از یک سیستم زمان اجرای موازی ، نمونه ای از Cilk ، یک مدل برنامه نویسی موازی محبوب است. علاوه بر این ، ابزار ساده برنامه زمان اجرا برای ساده سازی ایجاد سیستم های زمان اجرا موازی ایجاد شده است. علاوه بر رفتار مدل اعدام ، یک سیستم زمان اجرا ممکن است خدمات پشتیبانی مانند بررسی نوع ، اشکال زدایی یا تولید کد و بهینه سازی را نیز انجام دهد. سیستم زمان اجرا همچنین دروازه ای است که با استفاده از آن یک برنامه در حال اجرا با محیط زمان اجرا تعامل دارد ، که شامل نه تنها مقادیر حالت است که در هنگام اجرای برنامه قابل دسترسی است ، بلکه موجودات فعال دیگری نیز هستند که می توانند در حین اجرای برنامه مانند درایو دیسک و افراد از طریق کیبورد تعامل داشته باشند. به عنوان مثال ، متغیرهای محیطی ویژگیهای بسیاری از سیستم عاملها و بخشی از محیط زمان اجرا هستند. به همین ترتیب ، دستگاه های سخت افزاری مانند درایو دی وی دی موجودی فعال هستند که یک برنامه می تواند از طریق یک سیستم زمان اجرا با آنها ارتباط برقرار کند. یک برنامه منحصر به فرد از محیط زمان اجرا (RTE) در یک سیستم عامل (OS) است که فقط RTE را اجرا می کند ، به معنی از بوت شدن سیستم تا زمان پایین آمدن کامل سیستم عامل فقط به برنامه (های) اجرا شده در آن RTE اختصاص دارد. هر کد دیگری که سعی در اجرای آن دارد یا هرگونه خرابی در برنامه (های) RTE را شکست می دهد که سیستم عامل را خراب می کند که تمام پردازش را متوقف می کند و به بوت مجدد نیاز دارد. اگر بوت از حافظه فقط خواندنی باشد ، یک سیستم بسیار مأمور ، ساده و مأموریتی ایجاد می شود. | ## بخش 2: سیستم زمان اجرا | مثال ها به عنوان نمونه ای ساده از سیستم اصلی زمان اجرا ، سیستم زمان اجرای زبان C مجموعه خاصی از دستورالعمل هایی است که توسط کامپایلر وارد تصویر اجرایی می شود. در میان چیزهای دیگر ، این دستورالعمل ها پشته پردازنده را مدیریت می کنند ، فضایی را برای متغیرهای محلی ایجاد می کنند و پارامترهای عملکرد-تماس را در بالای پشته کپی می کنند. اغلب معیارهای مشخصی برای تصمیم گیری در مورد رفتار زبان در سیستم زمان اجرا وجود ندارد ، در حالی که رفتار بخشی از برنامه منبع است. برای C ، تنظیم پشته بخشی از سیستم زمان اجرا است ، برخلاف بخشی از معناشناسی یک برنامه فردی ، زیرا ثابت نگه داشتن جهانی را دارد که بیش از همه اعدام ها را در خود جای داده است. این رفتار سیستماتیک ، الگوی اجرای زبان را بر خلاف اجرای معانی متن برنامه خاص که مستقیماً به کدی ترجمه شده است که نتایج را محاسبه می کند ، پیاده سازی می کند. یک راه برای مشاهده این تفکیک بین معنایی یک برنامه خاص و محیط زمان اجرا این است که برنامه را در یک فایل شیء شامل تمام توابع در مقابل تهیه یک کل برنامه به یک باینری اجرا کنید. پرونده شی فقط حاوی کد مونتاژ مربوط به آن توابع است ، در حالی که باینری اجرایی شامل کد اضافی است که برای اجرای محیط زمان اجرا استفاده می شود. پرونده شیء از یک سو ممکن است اطلاعاتی را از محیط زمان اجراکه با پیوند حل می شود ، از دست ندهد. به عنوان مثال ، بسته به کنوانسیون فراخوانی مورد استفاده در محیط زمان اجرا ، یک عملکرد ممکن است پارامترهای مربوط به یک رجیستر یا محل پشته را بخواند. مثال دیگر مورد استفاده از رابط برنامه نویسی برنامه (API) برای تعامل با سیستم زمان اجرا است. تماسهای مربوط به آن API همانند تماس با یک کتابخانه نرم افزاری معمولی به نظر می رسند ، اما در برخی از زمان مکالمه ، مدل اجرا تغییر می کند. سیستم اجرا یک الگوی اجرا را متفاوت از زبانی که کتابخانه از نظر آن نوشته است ، پیاده سازی می کند. شخصی که کد یک کتابخانه عادی را می خواند ، می تواند با دانستن زبانی که در آن کتابخانه نوشته شده است ، بتواند رفتار این کتابخانه را درک کند. با این حال ، شخصی که کد API را فرا می خواند و از سیستم زمان اجرا استفاده می کند ، نمی تواند با دانستن زبانی که در آن نوشته شده است ، رفتار تماس API را درک کند. در بعضی مقاطع ، از طریق برخی سازوکارها ، مدل اجرای از زبان زنگ نوشته شده متوقف می شود و به مدل اجرای اجرای سیستم اجرا می شود. این تفاوت چیزی است که یک مدل اجرای API فراخوانی شده مانند موضوعات POSIX را از یک کتابخانه نرم افزاری معمول متمایز می کند. در عوض ، فراخوانی موضوعات POSIX یک الگوی اجرای خارجی را اجرا می کند ، که توسط سیستم زمان اجرا POSIX اجرا می شود (این سیستم زمان اجرا اغلب هسته سیستم عامل است). به عنوان یک مثال شدید ، CPU فیزیکی به خودی خود می تواند به عنوان اجرای سیستم زمان اجرای یک زبان خاص مونتاژ شود. | ## بخش 3: سیستم زمان اجرا | از این نظر ، مدل اجرای توسط پردازنده فیزیکی و سیستم های حافظه پیاده سازی می شود. به عنوان یک قیاس ، سیستم های زمان اجرا برای زبان های سطح بالاتر خودشان با استفاده از برخی زبان های دیگر اجرا می شوند. این یک سلسله مراتب از سیستم های زمان اجرا را ایجاد می کند ، با خود پردازنده (CPU) یا در واقع منطق آن در لایه میکرو کد یا پایین تر از آن - به عنوان پایین ترین سطح اجرای زمان اجرا. ویژگی های پیشرفته برخی از زبان های کامپایل شده یا تفسیری رابطی را ارائه می دهند که به کد برنامه اجازه می دهد تا مستقیماً با سیستم اجرا ارتباط برقرار کند. کلاس اجازه می دهد تا کد (که توسط یک موضوع متحرک است) کارهایی مانند شروع و متوقف کردن موضوعات دیگر را انجام دهد. رفتارهای سطح بالاتر که توسط یک سیستم زمان اجرا اجرا می شود ممکن است شامل کارهایی از قبیل ترسیم متن روی صفحه یا برقراری ارتباط اینترنتی باشد. اغلب این مورد وجود دارد که سیستم عامل ها این نوع رفتارها را نیز ارائه می دهند و در صورت وجود ، سیستم زمان اجرا به عنوان یک لایه انتزاع اجرا می شود که تداخل سیستم زمان اجرا را به یک فراخوان از سیستم عامل تبدیل می کند. این پیچیدگی یا تغییرات در خدمات ارائه شده توسط سیستم عامل های مختلف را پنهان می کند. این همچنین نشان می دهد که هسته سیستم عامل به خودی خود می تواند به عنوان یک سیستم زمان اجرا مشاهده شود ، و مجموعه تماس های سیستم عامل که باعث بروز رفتارهای سیستم عامل می شوند ممکن است به عنوان تعامل با یک سیستم زمان اجرا تلقی شوند. در حد مجاز ، سیستم زمان اجرا ممکن است خدماتی مانند دستگاه P-code یا ماشین مجازی را ارائه دهد که حتی مجموعه دستورالعمل پردازنده را نیز پنهان می کند. این رویکردی است که بسیاری از زبانهای تفسیر شده مانند AWK و بعضی از زبانها مانند جاوا دنبال می کنند ، منظور این است که در برخی از کد های نمایندگی واسطه مستقل ماشین (مانند بایت کد ) وارد می شوند. این ترتیب کار اجرای زبان و سازگاری آن با دستگاه های مختلف را ساده تر کرده و کارایی ویژگی های زبان پیشرفته مانند بازتاب را بهبود می بخشد. همچنین این امکان را می دهد که برنامه مشابهی را در هر دستگاه و بدون قدم برداشتن صریح اجرا کند ، ویژگی ای که از زمان تکثیر شبکه جهانی وب بسیار مهم شده است. برای سرعت بخشیدن به اجرای ، برخی از سیستم های زمان اجرا کامپایل همزمان را در کد دستگاه دارند. یک سیستم زمان اجرا با چنین رفتارهای اجرای موازی ممکن است مطابق رویکرد زمان اجرای اولیه مدولار شود. در زبانهای C و بعد از آن که از تخصیص حافظه پویا پشتیبانی می کردند ، سیستم زمان اجرا شامل کتابخانه ای نیز بود که حافظه برنامه را مدیریت می کرد. | ## جمع‌بندی | در زبانهای برنامه نویسی شی گرا ، سیستم زمان اجرا نیز اغلب مسئول بررسی نوع پویا و حل مراجعات روش بود.