آلة افتراضية

| تنفيذ البرنامج |
|---|
| المفاهيم العامة |
|
| أنواع الكود |
| استراتيجيات التجميع |
| أوقات التشغيل البارزة |
|
| المترجمون وسلاسل الأدوات المشهورة |
|
في الحوسبة ، الآلة الافتراضية ( VM ) هي محاكاة أو محاكاة نظام حاسوبي . تعتمد الآلات الافتراضية على بنيات الحاسوب وتوفر وظائف الحاسوب المادي. قد تتضمن عمليات تنفيذها أجهزة متخصصة أو برامج أو مزيجًا من الاثنين. تختلف الآلات الافتراضية ويتم تنظيمها حسب وظيفتها، كما هو موضح هنا:
- توفر الآلات الافتراضية للنظام (وتسمى أيضًاالآلات الافتراضية الكاملة ، SysVM، [ بحاجة لمصدر ] أو SYS-VM [ بحاجة لمصدر ] ) بديلاً للآلة الحقيقية. فهي توفر الوظائف اللازمة لتشغيل أنظمة التشغيل بالكامل .يستخدم المشرف الافتراضي التنفيذ الأصلي لمشاركة وإدارة الأجهزة، مما يسمح بوجود بيئات متعددة معزولة عن بعضها البعض ولكنها موجودة على نفس الجهاز المادي. تستخدم المشرفات الافتراضية الحديثة المحاكاة الافتراضية بمساعدة الأجهزة ، مع ميزات الأجهزة الخاصة بالمحاكاة الافتراضية على وحدات المعالجة المركزية المضيفة التي توفر المساعدة للمشرفات الافتراضية.
- تم تصميم الآلات الافتراضية للعمليات لتنفيذ برامج الكمبيوتر في بيئة مستقلة عن النظام الأساسي.
بعض محاكيات الآلات الافتراضية، مثل QEMU ومحاكيات وحدات تحكم ألعاب الفيديو ، مصممة لمحاكاة (أو "تقليد" هياكل أنظمة مختلفة أيضًا)، مما يسمح بتنفيذ تطبيقات البرامج وأنظمة التشغيل المكتوبة لوحدة معالجة مركزية أو هيكل آخر. تسمح المحاكاة الافتراضية على مستوى نظام التشغيل بتقسيم موارد الكمبيوتر عبر النواة . المصطلحان غير قابلين للتبادل عالميًا.
التعاريف
آلات افتراضية للنظام
تم تعريف "الآلة الافتراضية" في الأصل بواسطة بوبك وجولدبرج على أنها "نسخة مكررة فعالة ومعزولة من آلة كمبيوتر حقيقية". [1] يتضمن الاستخدام الحالي آلات افتراضية ليس لها تطابق مباشر مع أي أجهزة حقيقية. [2] يشار إلى الأجهزة المادية "الحقيقية" التي تشغل الآلة الافتراضية عمومًا باسم "المضيف"، ويشار إلى الآلة الافتراضية المحاكية على هذا الجهاز عمومًا باسم "الضيف". يمكن للمضيف محاكاة العديد من الضيوف، ويمكن لكل منهم محاكاة أنظمة تشغيل ومنصات أجهزة مختلفة.
كانت الرغبة في تشغيل أنظمة تشغيل متعددة هي الدافع الأولي للآلات الافتراضية، وذلك للسماح بتقاسم الوقت بين العديد من أنظمة التشغيل ذات المهام الفردية. في بعض النواحي، يمكن اعتبار الآلة الافتراضية للنظام تعميمًا لمفهوم الذاكرة الافتراضية الذي سبقها تاريخيًا. نفذ نظام CP/CMS من IBM ، وهو أول الأنظمة التي تسمح بالمحاكاة الافتراضية الكاملة ، تقاسم الوقت من خلال تزويد كل مستخدم بنظام تشغيل مستخدم واحد، وهو نظام مراقبة المحادثة (CMS). على عكس الذاكرة الافتراضية، تمنح الآلة الافتراضية للنظام المستخدم الحق في كتابة تعليمات مميزة في الكود الخاص به. كان لهذا النهج مزايا معينة، مثل إضافة أجهزة إدخال/إخراج غير مسموح بها بواسطة النظام القياسي. [2]
مع تطور تكنولوجيا الذاكرة الافتراضية لأغراض المحاكاة الافتراضية، يمكن تطبيق أنظمة جديدة للإفراط في استخدام الذاكرة لإدارة مشاركة الذاكرة بين العديد من الآلات الافتراضية على نظام تشغيل كمبيوتر واحد. قد يكون من الممكن مشاركة صفحات الذاكرة التي تحتوي على محتويات متطابقة بين العديد من الآلات الافتراضية التي تعمل على نفس الجهاز المادي، مما قد يؤدي إلى تعيينها على نفس الصفحة المادية بواسطة تقنية تسمى دمج نفس الصفحة في النواة (KSM). هذا مفيد بشكل خاص للصفحات للقراءة فقط، مثل تلك التي تحتوي على أجزاء من التعليمات البرمجية، وهي الحال بالنسبة للعديد من الآلات الافتراضية التي تعمل بنفس البرنامج أو برامج مماثلة، ومكتبات البرامج، وخوادم الويب، ومكونات البرامج الوسيطة ، وما إلى ذلك. لا تحتاج أنظمة التشغيل الضيفة إلى أن تكون متوافقة مع الأجهزة المضيفة، مما يجعل من الممكن تشغيل أنظمة تشغيل مختلفة على نفس الكمبيوتر (على سبيل المثال، Windows أو Linux أو إصدارات سابقة من نظام التشغيل) لدعم البرامج المستقبلية. [3]
إن استخدام الآلات الافتراضية لدعم أنظمة التشغيل الضيفة المنفصلة أمر شائع فيما يتعلق بالأنظمة المضمنة . ومن الاستخدامات النموذجية تشغيل نظام تشغيل في الوقت الفعلي في وقت واحد مع نظام تشغيل معقد مفضل، مثل Linux أو Windows. ومن الاستخدامات الأخرى للبرامج الجديدة وغير المثبتة التي لا تزال في مرحلة التطوير، لذا فهي تعمل داخل بيئة اختبارية . تتمتع الآلات الافتراضية بمزايا أخرى لتطوير أنظمة التشغيل وقد تشمل تحسين الوصول إلى تصحيح الأخطاء وإعادة التشغيل بشكل أسرع. [4]
غالبًا ما يتم استخدام أجهزة افتراضية متعددة تعمل بنظام التشغيل الضيف الخاص بها لتوحيد الخادم. [5]
معالجة الآلات الافتراضية
تُشغَّل آلة افتراضية للعمليات، تُسمى أحيانًا آلة افتراضية للتطبيقات ، أو بيئة تشغيل مُدارة (MRE)، كتطبيق عادي داخل نظام تشغيل مُضيف وتدعم عملية واحدة. يتم إنشاؤها عند بدء تشغيل هذه العملية وتدميرها عند الخروج منها. الغرض منها هو توفير بيئة برمجة مستقلة عن النظام الأساسي تجرد تفاصيل الأجهزة الأساسية أو نظام التشغيل وتسمح للبرنامج بالتنفيذ بنفس الطريقة على أي نظام أساسي. [ بحاجة لمصدر ]
توفر آلة VM للعملية تجريدًا عالي المستوى - مثل لغة البرمجة عالية المستوى (مقارنة بتجريد ISA منخفض المستوى لآلة VM للنظام). يتم تنفيذ آلات VM للعملية باستخدام مفسّر ؛ يمكن تحقيق أداء مماثل للغات البرمجة المترجمة باستخدام التجميع في الوقت المناسب . [ بحاجة لمصدر ]
أصبح هذا النوع من الآلات الافتراضية شائعًا مع لغة برمجة Java ، والتي يتم تنفيذها باستخدام آلة Java الافتراضية . تشمل الأمثلة الأخرى آلة Parrot الافتراضية وإطار عمل .NET ، الذي يعمل على آلة افتراضية تسمى Common Language Runtime . يمكن أن تعمل جميعها كطبقة تجريد لأي لغة كمبيوتر. [ بحاجة لمصدر ]
هناك حالة خاصة من الآلات الافتراضية للعمليات، وهي الأنظمة التي تجرد آليات الاتصال لمجموعة من أجهزة الكمبيوتر (غير المتجانسة على الأرجح) . ولا تتكون هذه الآلة الافتراضية من عملية واحدة، بل عملية واحدة لكل جهاز مادي في المجموعة. وهي مصممة لتسهيل مهمة برمجة التطبيقات المتزامنة من خلال السماح للمبرمج بالتركيز على الخوارزميات بدلاً من آليات الاتصال التي يوفرها الاتصال ونظام التشغيل. وهي لا تخفي حقيقة حدوث الاتصال، وبالتالي لا تحاول تقديم المجموعة كجهاز واحد. [ بحاجة لمصدر ]
على عكس آلات العمليات الافتراضية الأخرى، لا توفر هذه الأنظمة لغة برمجة محددة، ولكنها مضمنة في لغة موجودة؛ وعادةً ما يوفر مثل هذا النظام ارتباطات لعدة لغات (على سبيل المثال، C و Fortran ). ومن الأمثلة على ذلك آلة افتراضية متوازية (PVM) وواجهة تمرير الرسائل (MPI).
تاريخ
يحتاج هذا القسم إلى مصادر إضافية للتحقق . ( يوليو 2015 ) |
يعود تاريخ كل من الآلات الافتراضية للنظام والآلات الافتراضية للعمليات إلى ستينيات القرن العشرين وتظل مجالات تطوير نشطة.
نشأت الآلات الافتراضية للنظام من تقاسم الوقت ، كما تم تنفيذه بشكل ملحوظ في نظام تقاسم الوقت المتوافق (CTSS). سمح تقاسم الوقت لمستخدمين متعددين باستخدام جهاز كمبيوتر في وقت واحد : بدا أن كل برنامج لديه وصول كامل إلى الجهاز، ولكن تم تنفيذ برنامج واحد فقط في ذلك الوقت، مع قيام النظام بالتبديل بين البرامج في شرائح زمنية، وحفظ الحالة واستعادتها في كل مرة. تطور هذا إلى آلات افتراضية، ولا سيما عبر أنظمة البحث الخاصة بشركة IBM: M44/44X ، والتي استخدمت المحاكاة الافتراضية الجزئية ، و CP-40 و SIMON ، والتي استخدمت المحاكاة الافتراضية الكاملة ، وكانت أمثلة مبكرة على برامج التشغيل الافتراضية . كانت أول بنية آلة افتراضية متاحة على نطاق واسع هي CP-67 /CMS (انظر تاريخ CP/CMS للحصول على التفاصيل). كان هناك تمييز مهم بين استخدام آلات افتراضية متعددة على نظام مضيف واحد لتقاسم الوقت، كما هو الحال في M44/44X وCP-40، واستخدام آلة افتراضية واحدة على نظام مضيف للنماذج الأولية، كما هو الحال في SIMMON. يعود تاريخ المحاكيات ، التي تقوم بمحاكاة الأجهزة للأنظمة السابقة من أجل التوافق، إلى نظام IBM/360 في عام 1963، [6] [7] في حين أن محاكاة البرامج (التي كانت تسمى آنذاك "المحاكاة") تسبقها.
نشأت آلات العمليات الافتراضية في الأصل كمنصات مجردة للغة وسيطة تستخدم كتمثيل وسيط لبرنامج بواسطة مُجمِّع ؛ تعود الأمثلة المبكرة إلى حوالي عام 1964 مع نظام كتابة مُجمِّع META II الذي يستخدمها لكل من وصف بناء الجملة وتوليد الكود المستهدف. كان أحد الأمثلة البارزة في عام 1966 هو آلة O-code ، وهي آلة افتراضية تنفذ O-code (كود الكائن) المنبعث من الواجهة الأمامية لمُجمِّع BCPL . سمح هذا التجريد بنقل المُجمِّع بسهولة إلى بنية جديدة من خلال تنفيذ واجهة خلفية جديدة أخذت O-code الموجودة وجمَّعتها إلى كود آلي للآلة المادية الأساسية. استخدمت لغة أويلر تصميمًا مشابهًا، مع تسمية اللغة الوسيطة P (محمولة). [8] تم تعميم هذا حوالي عام 1970 بواسطة باسكال ، ولا سيما في نظام Pascal-P (1973) ومُجمِّع Pascal-S (1975)، حيث تم تسميتها p-code والآلة الناتجة كآلة p-code . كان لهذا تأثيرًا كبيرًا، وغالبًا ما كانت الآلات الافتراضية بهذا المعنى تسمى عمومًا آلات p-code. بالإضافة إلى كونها لغة وسيطة، تم تنفيذ p-code في لغة Pascal أيضًا مباشرةً بواسطة مفسّر ينفذ الآلة الافتراضية، ولا سيما في UCSD Pascal (1978)؛ وقد أثر هذا على المفسّرين اللاحقين، ولا سيما آلة Java الافتراضية (JVM). كان هناك مثال مبكر آخر وهو SNOBOL4 (1967)، والذي كُتب بلغة SNOBOL Implementation Language (SIL)، وهي لغة تجميع لآلة افتراضية، والتي تم استهدافها بعد ذلك للآلات المادية عن طريق التحويل إلى مُجمِّعها الأصلي عبر مُجمِّع ماكرو . [9] ومع ذلك، فقد فقدت وحدات الماكرو شعبيتها منذ ذلك الحين، لذلك كان هذا النهج أقل تأثيرًا. كانت آلات العمليات الافتراضية نهجًا شائعًا لتنفيذ برامج الكمبيوتر الصغيرة المبكرة، بما في ذلك Tiny BASIC وألعاب المغامرات، بدءًا من التنفيذات الفردية مثل Pyramid 2000 إلى محرك للأغراض العامة مثل z-machine من Infocom ، والذي يزعم جراهام نيلسون أنه "ربما يكون أكثر آلة افتراضية محمولة تم إنشاؤها على الإطلاق". [10]
حدثت تطورات كبيرة في تنفيذ Smalltalk -80، [11] وخاصة تنفيذ Deutsch/Schiffmann [12] الذي دفع التجميع في الوقت المناسب (JIT) إلى الأمام كنهج تنفيذ يستخدم آلة افتراضية للعملية. [13] كانت آلات Smalltalk الافتراضية البارزة اللاحقة هي VisualWorks وآلة Squeak الافتراضية [14] و Strongtalk . [15] كانت لغة البرمجة Self إحدى اللغات ذات الصلة التي أنتجت الكثير من ابتكارات الآلة الافتراضية ، [16] والتي كانت رائدة في التحسين التكيفي [17] وجمع القمامة الجيلية . أثبتت هذه التقنيات نجاحها تجاريًا في عام 1999 في آلة Java الافتراضية HotSpot . [18] تشمل الابتكارات الأخرى آلة افتراضية تعتمد على السجلات، لتتناسب بشكل أفضل مع الأجهزة الأساسية، بدلاً من آلة افتراضية تعتمد على المكدس، وهي تطابق أقرب للغة البرمجة؛ في عام 1995، كانت آلة Dis الافتراضية رائدة في ذلك للغة Limbo .
تقنيات المحاكاة الافتراضية
.svg/440px-Hardware_Virtualization_(copy).svg.png)
المحاكاة الافتراضية الكاملة
في المحاكاة الافتراضية الكاملة، تحاكي الآلة الافتراضية ما يكفي من الأجهزة للسماح بتشغيل نظام تشغيل "ضيف" غير معدّل (مصمم لنفس مجموعة التعليمات ) بشكل معزول. تم ابتكار هذا النهج في عام 1966 مع IBM CP-40 و CP-67 ، وهما سابقتان لعائلة الآلات الافتراضية .
تتضمن الأمثلة خارج مجال الحاسب الآلي الرئيسي Parallels Workstation ، و Parallels Desktop for Mac ، و VirtualBox ، و Virtual Iron ، و Oracle VM ، و Virtual PC ، و Virtual Server ، و Hyper-V ، و VMware Fusion ، و VMware Workstation ، و VMware Server (تم إيقافه، وكان يسمى سابقًا GSX Server)، و VMware ESXi ، وQEMU ، و Adeos ، وMac-on-Linux، وWin4BSD، و Win4Lin Pro ، وتقنية Egenera vBlade.
المحاكاة الافتراضية بمساعدة الأجهزة
في المحاكاة الافتراضية بمساعدة الأجهزة، توفر الأجهزة دعمًا معماريًا يسهل بناء مراقب للآلة الافتراضية ويسمح بتشغيل أنظمة تشغيل الضيوف بمعزل عن بعضها البعض. [19] تم تقديم المحاكاة الافتراضية بمساعدة الأجهزة لأول مرة على نظام IBM System/370 في عام 1972، للاستخدام مع VM/370 ، أول نظام تشغيل للآلة الافتراضية تقدمه IBM كمنتج رسمي. [20]
في عامي 2005 و2006، قدمت Intel و AMD أجهزة إضافية لدعم المحاكاة الافتراضية. أضافت Sun Microsystems (التي أصبحت الآن Oracle Corporation ) ميزات مماثلة في معالجاتها UltraSPARC T-Series في عام 2005. تشمل أمثلة منصات المحاكاة الافتراضية المتكيفة مع مثل هذه الأجهزة KVM و VMware Workstation و VMware Fusion و Hyper-V و Windows Virtual PC و Xen و Parallels Desktop for Mac و Oracle VM Server for SPARC و VirtualBox و Parallels Workstation .
في عام 2006، وجد أن دعم الأجهزة من الجيل الأول 32 بت و64 بت x86 نادرًا ما يوفر مزايا الأداء مقارنة بالمحاكاة الافتراضية للبرامج. [21]
المحاكاة الافتراضية على مستوى نظام التشغيل
في المحاكاة الافتراضية على مستوى نظام التشغيل، يتم إضفاء طابع افتراضي على خادم مادي على مستوى نظام التشغيل، مما يتيح تشغيل عدة خوادم افتراضية معزولة وآمنة على خادم مادي واحد. تشترك بيئات نظام التشغيل "الضيف" في نفس نسخة التشغيل لنظام التشغيل مثل نظام المضيف. وبالتالي، يتم استخدام نفس نواة نظام التشغيل أيضًا لتنفيذ بيئات "الضيف"، وتنظر التطبيقات التي تعمل في بيئة "ضيف" معينة إليها كنظام مستقل. كان التنفيذ الرائد هو سجون FreeBSD ؛ وتشمل الأمثلة الأخرى Docker و Solaris Containers و OpenVZ و Linux-VServer و LXC وAIX Workload Partitions وParallels Virtuozzo Containers وiCore Virtual Accounts.
لقطات
اللقطة الفورية هي حالة الجهاز الظاهري، وأجهزة التخزين الخاصة به عمومًا، في نقطة زمنية محددة. تتيح اللقطة الفورية استعادة حالة الجهاز الظاهري في وقت اللقطة الفورية لاحقًا، مما يؤدي فعليًا إلى التراجع عن أي تغييرات حدثت بعد ذلك. هذه القدرة مفيدة كتقنية احتياطية ، على سبيل المثال، قبل إجراء عملية محفوفة بالمخاطر. [ بحاجة لمصدر ]
تستخدم الآلات الافتراضية أقراصًا افتراضية بشكل متكرر لتخزينها؛ في مثال بسيط للغاية، يتم محاكاة محرك أقراص ثابت سعة 10 جيجابايت بملف مسطح سعة 10 جيجابايت . تتم ترجمة أي طلبات من قبل الآلة الافتراضية لموقع على قرصها المادي بشكل شفاف إلى عملية على الملف المقابل. ومع ذلك، بمجرد وجود طبقة الترجمة هذه، من الممكن اعتراض العمليات وإرسالها إلى ملفات مختلفة، اعتمادًا على معايير مختلفة. في كل مرة يتم فيها التقاط لقطة، يتم إنشاء ملف جديد، واستخدامه كطبقة فوقية لسابقاتها. تتم كتابة البيانات الجديدة على الطبقة العلوية؛ ومع ذلك، فإن قراءة البيانات الموجودة تتطلب مسح التسلسل الهرمي للطبقة، مما يؤدي إلى الوصول إلى أحدث إصدار. وبالتالي، فإن كومة اللقطات بأكملها عبارة عن قرص متماسك واحد تقريبًا؛ وبهذا المعنى، فإن إنشاء لقطات يعمل بشكل مشابه لتقنية النسخ الاحتياطي التدريجي .
يمكن أيضًا تضمين مكونات أخرى من الآلة الافتراضية في لقطة، مثل محتويات ذاكرة الوصول العشوائي (RAM) أو إعدادات BIOS أو إعدادات التكوين الخاصة بها. تعد ميزة " حفظ الحالة " في محاكيات وحدة تحكم ألعاب الفيديو مثالاً على مثل هذه اللقطات. [ بحاجة لمصدر ]
تتكون استعادة لقطة من التخلص من أو تجاهل جميع طبقات التراكب التي تمت إضافتها بعد تلك اللقطة، وتوجيه جميع التغييرات الجديدة إلى طبقة تراكب جديدة. [ بحاجة لمصدر ]
الهجرة
يمكن نقل اللقطات الموضحة أعلاه إلى جهاز مضيف آخر به مشرف خاص به؛ عندما يتم إيقاف الجهاز الظاهري مؤقتًا، والتقاط لقطات منه، ونقله، ثم استئنافه على المضيف الجديد، يُعرف هذا باسم الترحيل. إذا تم الاحتفاظ بلقطات المزامنة القديمة بانتظام، فقد تكون هذه العملية سريعة جدًا، وتسمح للجهاز الظاهري بتوفير خدمة متواصلة بينما يتم إيقاف تشغيل المضيف المادي السابق، على سبيل المثال، للصيانة المادية. [ بحاجة لمصدر ]
التعافي من الفشل
على غرار آلية الترحيل الموضحة أعلاه، يسمح التعافي من الفشل للآلة الافتراضية بمواصلة العمليات إذا فشل المضيف. يحدث هذا عادةً إذا توقف الترحيل عن العمل. ومع ذلك، في هذه الحالة، تستمر الآلة الافتراضية في العمل من آخر حالة متماسكة معروفة، وليس الحالة الحالية ، استنادًا إلى المواد التي تم تزويد خادم النسخ الاحتياطي بها آخر مرة. [ بحاجة لمصدر ]
المحاكاة الافتراضية المتداخلة
تشير المحاكاة الافتراضية المتداخلة إلى القدرة على تشغيل جهاز افتراضي داخل جهاز آخر، مع إمكانية توسيع هذا المفهوم العام إلى عمق تعسفي. بعبارة أخرى، تشير المحاكاة الافتراضية المتداخلة إلى تشغيل مشرف افتراضي واحد أو أكثر داخل مشرف افتراضي آخر. لا يلزم أن تكون طبيعة الجهاز الظاهري الضيف المتداخل متجانسة مع الجهاز الظاهري المضيف؛ على سبيل المثال، يمكن نشر المحاكاة الافتراضية للتطبيقات داخل جهاز افتراضي تم إنشاؤه باستخدام المحاكاة الافتراضية للأجهزة . [22]
تصبح المحاكاة الافتراضية المتداخلة ضرورية بشكل أكبر مع اكتساب أنظمة التشغيل المنتشرة لوظائف المشرف الافتراضي المضمنة، والتي لا يمكن استخدامها في بيئة افتراضية إلا إذا كان المشرف الافتراضي المحيط يدعم المحاكاة الافتراضية المتداخلة؛ على سبيل المثال، يكون Windows 7 قادرًا على تشغيل تطبيقات Windows XP داخل آلة افتراضية مضمنة. علاوة على ذلك، فإن نقل البيئات الافتراضية الموجودة بالفعل إلى السحابة، باتباع نهج البنية الأساسية كخدمة (IaaS)، يكون أكثر تعقيدًا إذا كانت منصة IaaS الوجهة لا تدعم المحاكاة الافتراضية المتداخلة. [23] [24]
تعتمد الطريقة التي يمكن بها تنفيذ المحاكاة الافتراضية المتداخلة على بنية حاسوبية معينة على قدرات المحاكاة الافتراضية المدعومة بالأجهزة . إذا لم توفر بنية معينة الدعم المادي المطلوب للمحاكاة الافتراضية المتداخلة، يتم استخدام تقنيات برمجية مختلفة لتمكينها. [23] بمرور الوقت، تكتسب المزيد من البنيات الدعم المادي المطلوب؛ على سبيل المثال، منذ بنية Haswell الدقيقة (التي أُعلن عنها في عام 2013)، بدأت Intel في تضمين تظليل VMCS كتقنية تعمل على تسريع المحاكاة الافتراضية المتداخلة. [25]
انظر أيضا
مراجع
- ^ Popek, Gerald J. ; Goldberg, Robert P. (1974). "المتطلبات الرسمية للهندسة المعمارية القابلة للمحاكاة الافتراضية من الجيل الثالث" (PDF) . اتصالات ACM . 17 (7): 412–421. doi :10.1145/361011.361073. S2CID 12680060.
- ^ ab Smith, James E.; Nair, Ravi (2005). "هندسة الآلات الافتراضية". Computer . 38 (5): 32–38, 395–396. doi :10.1109/MC.2005.173. S2CID 6578280.
- ^ Oliphant, Patrick. "Virtual Machines". VirtualComputing. مؤرشف من الأصل في 2016-07-29 . تم الاسترجاع في 2015-09-23 .
يستخدم بعض الأشخاص هذه الإمكانية لإعداد جهاز افتراضي منفصل يعمل بنظام Windows على جهاز Mac، مما يمنحهم إمكانية الوصول إلى النطاق الكامل للتطبيقات المتاحة لكلا المنصتين.
- ^ "Super Fast Server Reboots – Another reason of Virtualization rocks". vmwarez.com . 2006-05-09. مؤرشف من الأصل في 2006-06-14 . تم الاسترجاع في 2013-06-14 .
- ^ "توحيد الخوادم واحتوائها باستخدام البنية الأساسية الافتراضية" (PDF) . VMware . 2007. مؤرشف (PDF) من الأصل في 2013-12-28 . تم الاسترجاع في 2015-09-29 .
- ^ Pugh, Emerson W. (1995). Building IBM: Shaping an Industry and Its Technology . MIT. p. 274. ISBN 978-0-262-16147-3.
- ^ Pugh, Emerson W. ; et al. (1991). IBM's 360 and Early 370 Systems . MIT. ص 160-161. ISBN 978-0-262-16123-7.
- ^ Wirth, Niklaus Emil ; Weber, Helmut (1966). EULER: a generalization of ALGOL, and its formal definition: Part II, Communications of the Association of Computing Machinery. المجلد 9. نيويورك: ACM . ص 89-99.
- ^ جريسوولد، رالف إي. التنفيذ الكلي لـSNOBOL4 . سان فرانسيسكو، كاليفورنيا: دبليو إتش فريمان وشركاه، 1972 ( ISBN 0-7167-0447-1 )، الفصل 1.
- ^ نيلسون، جراهام أ. "حول المترجمين الفوريين". موقع Inform . مؤرشف من الأصل في 2009-12-03 . تم استرجاعه في 2009-11-07 .
- ^ جولدبرج، أديل ؛ روبسون، ديفيد (1983). Smalltalk-80: اللغة وتطبيقها . سلسلة أديسون ويسلي في علوم الكمبيوتر. أديسون ويسلي . رقم ISBN 978-0-201-11371-6.
- ^ Deutsch, L. Peter ; Schiffman, Allan M. (1984). "التنفيذ الفعّال لنظام Smalltalk-80". POPL . Salt Lake City, Utah: ACM. doi :10.1145/800017.800542. ISBN 0-89791-125-3.
- ^ أيكوك، جون (2003). "تاريخ موجز للتصنيع في الوقت المناسب". ACM Comput. Surv. 35 (2): 97–113. doi :10.1145/857076.857077. S2CID 15345671.
- ^ Ingalls Jr., Daniel "Dan" Henry Holmes ; Kaehler, Ted; Maloney, John; Wallace, Scott; Kay, Alan Curtis (1997). "العودة إلى المستقبل: قصة Squeak، وهي لغة Smalltalk عملية مكتوبة في حد ذاتها". OOPSLA '97: وقائع مؤتمر ACM SIGPLAN الثاني عشر حول البرمجة الموجهة للكائنات والأنظمة واللغات والتطبيقات . نيويورك، نيويورك، الولايات المتحدة: ACM Press. ص. 318-326. doi : 10.1145/263698.263754 . ISBN 0-89791-908-4.
- ^ براشا، جيلاد ؛ جريسوولد، ديفيد (1993). "Strongtalk: Typechecking Smalltalk in a Production Environment". وقائع المؤتمر السنوي الثامن حول أنظمة البرمجة الموجهة للكائنات واللغات والتطبيقات . OOPSLA '93. نيويورك، نيويورك، الولايات المتحدة: ACM. ص 215-230. doi : 10.1145/165854.165893 . ISBN 978-0-89791-587-8.
- ^ أونجار، ديفيد مايكل ؛ سميث، راندال ب. (ديسمبر 1987). "الذات: قوة البساطة". إشعارات ACM SIGPLAN . 22 (12): 227–242. doi :10.1145/38807.38828. ISSN 0362-1340.
- ^ Hölzle, Urs ; Ungar, David Michael (1994). "Optimizing dynamically-dispatched calls with run-time type feedback". PLDI . أورلاندو، فلوريدا، الولايات المتحدة: ACM. ص. 326–336. doi :10.1145/178243.178478. ISBN 0-89791-662-X.
- ^ Paleczny, Michael; Vick, Christopher; Click, Cliff (2001). "The Java HotSpot server compiler". Proceedings of the Java Virtual Machine Research and Technology Symposium on Java Virtual Machine Research and Technology Symposium . المجلد 1. مونتيري، كاليفورنيا: USENIX Association.
- ^ Uhlig, Rich; Neiger, Gil; Rodgers, Dion; Santoni, Amy L.; Martins, Fernando CM; Anderson, Andrew V.; Bennett, Steven M .; Kägi, Alain; Leung, Felix H.; Smith, Larry (May 2005). "تقنية المحاكاة الافتراضية من إنتل". كمبيوتر . 38 (5): 48–56. doi :10.1109/MC.2005.163. S2CID 18514555.
- ^ راندال، أ. (2019). المثالي مقابل الحقيقي: إعادة النظر في تاريخ الآلات الافتراضية والحاويات.
- ^ آدامز، كيث؛ أجيسين، أولي (2006-10-21). مقارنة بين تقنيات البرمجيات والأجهزة لمحاكاة x86 (PDF) . ASPLOS'06 21–25 أكتوبر 2006. سان خوسيه، كاليفورنيا، الولايات المتحدة. مؤرشف (PDF) من الأصل في 2010-08-20.
من المدهش أننا نجد أن دعم الأجهزة من الجيل الأول نادرًا ما يوفر مزايا الأداء مقارنة بتقنيات البرمجيات الحالية. نعزو هذا الموقف إلى ارتفاع تكاليف انتقال VMM/guest ونموذج برمجة صارم لا يترك مجالًا كبيرًا لمرونة البرمجيات في إدارة إما تكرار أو تكلفة هذه التحولات.
- ^ Orit Wasserman, Red Hat (2013). "Nested virtualization: Shadow turtles" (PDF) . منتدى KVM . تم الاسترجاع في 2021-05-07 .
- ^ أب مولي بن يهودا؛ مايكل د. داي؛ تسفي دوبيتسكي؛ مايكل فاكتور؛ نداف هرئيل؛ أبيل جوردون؛ أنتوني ليجوري؛ أوريت واسرمان؛ بن عامي ياسور (23-09-2010). "مشروع السلاحف: تصميم وتنفيذ المحاكاة الافتراضية المتداخلة" (PDF) . usenix.org . تم الاسترجاع 2014/12/16 .
- ^ أليكس فيشمان؛ مايك رابوبورت؛ يفجيني باديلوفسكي؛ إيزيك إيدوس (2013-06-25). "HVX: Virtualizing the Cloud" (PDF) . rackcdn.com . تم الاسترجاع في 2014-12-16 .
- ^ "معالجات Intel Core vPro من الجيل الرابع مع تظليل Intel VMCS" (ملف PDF) . Intel . 2013. تم الاسترجاع في 2014-12-16 .
قراءة إضافية
- جيمس إي سميث، رافي ناير، الآلات الافتراضية: منصات متعددة الاستخدامات للأنظمة والعمليات ، مورجان كوفمان، مايو 2005، رقم ISBN 1-55860-910-5 ، 656 صفحة (تغطي الآلات الافتراضية للعمليات والأنظمة)
- Craig, Iain D. Virtual Machines . Springer ، 2006، ISBN 1-85233-969-1 ، 269 صفحة (يغطي فقط آلات العمليات الافتراضية)
روابط خارجية
- مندل روزنبلوم (2004-08-31). "إعادة تجسيد الآلات الافتراضية". ACM Queue . المجلد 2، العدد 5.
- مختبرات ساندي الوطنية تشغل مليون نواة لينكس كآلات افتراضية
- تصميم الآلة الافتراضية Inferno بواسطة Phil Winterbottom وRob Pike
