أنظمة وقت التشغيل والآلات الافتراضية
توفر أنظمة وقت التشغيل والآلات الافتراضية بيئة التنفيذ للبرامج، حيث تقوم بتفسير أو تجميع الشفرة الوسيطة وإدارة الخدمات التي يحتاجها البرنامج قيد التشغيل.
Definition
نظام وقت التشغيل هو البيئة البرمجية التي تدعم تنفيذ البرنامج بما يتجاوز شفرته الخاصة، والآلة الافتراضية هي محرك تنفيذ مجرد يفسر أو يجمع مجموعة تعليمات محمولة، مما يوفر قابلية النقل وخدمات وقت التشغيل.
Scope
يغطي هذا الموضوع الطبقة بين الشفرة المترجمة والأجهزة: مفسرات الشفرة البايتية والآلات المجردة، الترجمة في الوقت المناسب (JIT)، الإرسال الديناميكي والبحث عن الدوال، اتفاقيات الاستدعاء وإدارة المكدس، وخدمات وقت التشغيل مثل معالجة الاستثناءات والانعكاس. ويتناول تصميم الآلات الافتراضية المحمولة والتقنيات التي تجعل اللغات المدارة فعالة.
Core questions
- كيف توفر الآلات الافتراضية قابلية النقل عبر الأجهزة؟
- كيف تجمع الترجمة في الوقت المناسب بين التفسير والشفرة الأصلية؟
- كيف يتم جعل الإرسال الديناميكي والبحث عن الدوال فعالين؟
- ما هي خدمات وقت التشغيل التي يجب أن تدعم اللغة المدارة؟
Key theories
- هندسة الآلة الافتراضية المحمولة
- يحدد مواصفات الآلة الافتراضية لـ Java شفرة بايتية قابلة للنقل والتحقق ونموذج تنفيذ، مما يوضح كيف تفصل الآلة الافتراضية اللغة عن الأجهزة المعينة.
- الترجمة في الوقت المناسب (Just-in-time compilation)
- يستعرض Aycock التقنيات التي تقوم بها أوقات التشغيل بتجميع الشفرة إلى شكلها الأصلي أثناء التنفيذ، موازنة بين بدء تشغيل التفسير وإنتاجية الشفرة المترجمة باستخدام معلومات وقت التشغيل.
- التخزين المؤقت المضمّن للإرسال الديناميكي
- قدمت نسخة Smalltalk لـ Deutsch وSchiffman التخزين المؤقت المضمّن والترجمة الديناميكية، وهما تقنيتان أساسيتان لجعل البحث عن الدوال في اللغات ذات الإرسال الديناميكي سريعًا.
Clinical relevance
تدعم الآلات الافتراضية وأوقات التشغيل المدارة منصات مستخدمة على نطاق واسع لـ Java و.NET وJavaScript وPython، مما يوفر قابلية النقل والسلامة والتحسين التكيفي. وتعد ترجمة JIT والتخزين المؤقت المضمّن (inline caching) سببًا في قدرة اللغات عالية المستوى والديناميكية على تحقيق أداء تنافسي.
History
تعود الآلات المجردة إلى الأنظمة المحمولة المبكرة وSmalltalk، حيث كانت نسختها لعام 1984 رائدة في الترجمة الديناميكية والتخزين المؤقت المضمّن. وقد شاعت الآلة الافتراضية لـ Java الشفرة البايتية المحمولة في منتصف التسعينيات، وجلبت مجمعات JIT التكيفية مثل HotSpot ثم محركات JavaScript لاحقًا تحسينات وقت التشغيل القوية إلى اللغات المدارة السائدة.
Debates
- التفسير مقابل الترجمة في الوقت المناسب
- يوازن مصممو وقت التشغيل بين المفسرات البسيطة ذات البدء السريع واستخدام الذاكرة المنخفض، ومجمعات JIT التي تحقق أداءً أعلى في الذروة على حساب وقت الإحماء وتعقيد التنفيذ، وغالبًا ما يجمعون بين الاثنين في أنظمة متعددة المستويات.
Key figures
- Peter Deutsch
- John Aycock
- James Gosling
- Gilad Bracha
Related topics
Seminal works
- lindholm2014
- aycock2003
- deutsch1984
Frequently asked questions
- ما هي الآلة الافتراضية في هذا السياق؟
- هنا، الآلة الافتراضية هي محرك تنفيذ برمجي يقوم بتشغيل مجموعة تعليمات محمولة (مثل الشفرة البايتية)، وتجريد الأجهزة الأساسية وتوفير خدمات وقت التشغيل بدلاً من محاكاة جهاز كمبيوتر كامل.
- كيف تساعد الترجمة في الوقت المناسب على تحسين الأداء؟
- يقوم مجمع JIT بترجمة الأجزاء التي يتم تنفيذها بشكل متكرر من البرنامج إلى شفرة أصلية في وقت التشغيل، باستخدام معلومات التوصيف التي يفتقر إليها المجمع المسبق (ahead-of-time compiler)، وبالتالي تعمل الشفرة الساخنة بسرعة شبه أصلية.