ScholarGate
دستیار

سیستم‌های زمان اجرا و ماشین‌های مجازی

سیستم‌های زمان اجرا و ماشین‌های مجازی، محیط اجرایی را برای برنامه‌ها فراهم می‌کنند، کد میانی را تفسیر یا کامپایل کرده و سرویس‌های مورد نیاز یک برنامه در حال اجرا را مدیریت می‌کنند.

یافتن موضوع با PaperMindبه‌زودیFind papers & topics
Tools & resources
دریافت اسلایدها
Learn & explore
ویدیوبه‌زودی

Definition

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

Scope

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

Core questions

  • ماشین‌های مجازی چگونه قابلیت حمل را در سراسر سخت‌افزار فراهم می‌کنند؟
  • کامپایل در لحظه (just-in-time) چگونه تفسیر و کد بومی را ترکیب می‌کند؟
  • ارسال پویا و جستجوی متد چگونه کارآمد می‌شوند؟
  • چه سرویس‌های زمان اجرایی باید از یک زبان مدیریت‌شده پشتیبانی کنند؟

Key theories

معماری ماشین مجازی قابل حمل
مشخصات ماشین مجازی جاوا یک بایت‌کد و مدل اجرایی قابل حمل و قابل تأیید را تعریف می‌کند، که نشان می‌دهد چگونه یک ماشین مجازی یک زبان را از سخت‌افزار خاص جدا می‌کند.
کامپایل در لحظه (Just-in-time compilation)
آیکاک تکنیک‌هایی را بررسی می‌کند که توسط آن‌ها زمان‌اجراها کد را در طول اجرا به فرم بومی کامپایل می‌کنند، و تعادل بین راه‌اندازی مفسر و توان عملیاتی کد کامپایل‌شده را با استفاده از اطلاعات زمان اجرا برقرار می‌سازند.
کش‌سازی درون‌خطی برای ارسال پویا
پیاده‌سازی Smalltalk توسط دویچ و شیفمن، کش‌سازی درون‌خطی و ترجمه پویا را معرفی کرد، که تکنیک‌های کلیدی برای سریع کردن جستجوی متد در زبان‌های با ارسال پویا هستند.

Clinical relevance

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

History

ماشین‌های انتزاعی به سیستم‌های قابل حمل اولیه و Smalltalk بازمی‌گردند، که پیاده‌سازی آن در سال 1984 پیشگام ترجمه پویا و کش‌های درون‌خطی بود. ماشین مجازی جاوا بایت‌کد قابل حمل را در اواسط دهه 1990 محبوب کرد، و کامپایلرهای JIT تطبیقی مانند HotSpot و بعدها موتورهای جاوااسکریپت، بهینه‌سازی تهاجمی زمان اجرا را به زبان‌های مدیریت‌شده اصلی آوردند.

Debates

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

Key figures

  • Peter Deutsch
  • John Aycock
  • James Gosling
  • Gilad Bracha

Related topics

Seminal works

  • lindholm2014
  • aycock2003
  • deutsch1984

Frequently asked questions

ماشین مجازی در این زمینه چیست؟
در اینجا یک ماشین مجازی یک موتور اجرایی نرم‌افزاری است که یک مجموعه دستورالعمل قابل حمل (مانند بایت‌کد) را اجرا می‌کند، و با انتزاع سخت‌افزار زیرین و ارائه سرویس‌های زمان اجرا، به جای شبیه‌سازی یک کامپیوتر کامل عمل می‌کند.
کامپایل در لحظه (just-in-time) چگونه به عملکرد کمک می‌کند؟
یک کامپایلر JIT بخش‌های پرکاربرد یک برنامه را در زمان اجرا به کد بومی ترجمه می‌کند، با استفاده از اطلاعات پروفایل‌سازی که یک کامپایلر پیش‌از-زمان فاقد آن است، بنابراین کد داغ با سرعتی نزدیک به سرعت بومی اجرا می‌شود.

Methods for this concept

Related concepts