ظاهرية واجهة المستخدم للأجهزة الظاهرية
- 11 دقائق
الأجهزة الظاهرية هي العمود الفقري لحوسبة السحابة. عند إنشاء مثيل EC2 في AWS أو جهاز ظاهري في Azure، لا يخصص موفر خدمة السحابة خادمًا فعليًا للمثيل أو الجهاز الظاهري. بدلاً من ذلك، فإنه بإنشاء جهاز ظاهري على خادم فعلي. قد يكون هذا الجهاز الظاهري واحدًا من العديد من الأجهزة المستضافة على الخادم. ولكن نظرًا إلى الظاهرية، يبدو الجهاز الظاهري وكأنه خادم مخصص. يتم عزله منطقيًا عن الأجهزة الظاهرية الأخرى، ولا يمكن للبرنامج الضال الذي يتعطل أو يعرض جهازًا ظاهريًا للخطر بطريقة أخرى أن يؤثر على البرامج التي تعمل في أجهزة أخرى، حتى لو كانت تشترك في مضيف فعلي. وعلاوة على ذلك، يمكن لخادم يستضيف جهازي VMs تشغيل نظام تشغيل واحد (على سبيل المثال، Linux) في جهاز ظاهري واحد ونظام تشغيل آخر (مثل Windows) في الآخر.
تجد الأجهزة الظاهرية أيضًا استخدامات خارج حوسبة السحابة. على سبيل المثال، يتيح منتج شائع يسمى Parallels لمستخدمي Mac تشغيل Windows وmacOS جنبًا إلى جنب من خلال استضافة Windows في جهاز ظاهري. يستخدم مطورو البرامج بشكل متكرر أجهزة ظاهرية لاختبار البرامج لأن الأجهزة الظاهرية توفر بيئة متناسقة ومعزولة قابلة للنسخ المتماثل بسهولة من حاسوب لآخر.
جميع هذه الأجهزة الظاهرية هي مثيلات للأجهزة الظاهرية للنظام، والتي تقوم بإضفاء الطابع الظاهري على نظام كامل (جهاز فعلي). ولكن هناك أيضاً معالجة الأجهزة الظاهرية، والتي توفر الأساس للغات الكمبيوتر الشائعة مثل Java وC#. دعنا نفحص كلا النوعين، ونناقش كيفية عملهما، ونفهم سبب وجودهما، فالأجهزة الظاهرية للنظام هي التي توفر الأساس لحوسبة السحابة.
الأجهزة الظاهرية للعملية
VM لعملية (الشكل 1) هو VM قادر على دعم عملية فردية طالما أن العملية على قيد العمل. إنهاء VM لعملية عند انتهاء العملية التي يستضيفها. من منظور VM لعملية، يتكون الجهاز من مساحة عنوان الذاكرة الظاهرية، وتسجيلات على مستوى المستخدم، وإرشادات لتنفيذ برنامج. ووفقاً لهذا التعريف، يمكن تسمية المعالجة لغرضها العام في نظام التشغيل باسم "الجهاز". ولكن المعالجة العادية يمكن ألا تدعم إلا ثنائيات البرامج المحولة برمجياً إلى هندسة المعالج أو هندسة إعداد التعليمات (ISA) للجهاز المستضيف. تنفيذ الثنائيات التي تم تحويلها إلى ISA مختلفة عن الجهاز المضيف -- على سبيل المثال، تشغيل البرامج المحوّلة برمجيًا لمعالجات ARM على الأجهزة المجهزة مع وحدات المعالجة المركزية Intel -- غير معتمد من قبل العمليات العادية. ومع ذلك، يسمح VM لعملية أن يحدث ذلك.
الشكل 1: معالجة الجهاز الظاهري.
تدعم الأجهزة الظاهرية للعملية ISAs التي تختلف عن ISAs المضيفة عبر المحاكاة، والتي تسمح بتنفيذ واجهات ووظائف نظام واحد (المصدر) على نظام بواجهات ووظائف مختلفة (الهدف). مثال على المحاكاة هو تنفيذ برنامج تم تجميعه لعائلة المعالجات القديمة 6502/6510 المستخدمة من قبل أجهزة كمبيوتر Apple المبكرة على معالج x86. يتم توفير تجريد الجهاز الظاهري للعملية بواسطة جزء من برنامج المحاكاة الظاهرية يسمى وقت التشغيل. يقع وقت التشغيل فوق نظام التشغيل المضيف والأجهزة الأساسية. وهو وقت التشغيل هذا الذي يحاكي الإرشادات و/أو استدعاءات النظام عندما يكون المضيف الضيف وISAs مختلفة.
ظهرت VMs لعملية لأول مرة في منتصف الستينيات واستخدمت لأول مرة لتحويل اللغات الوسيطة التي تم إنشاؤها بواسطة المحولات البرمجية إلى التعليمة البرمجية للجهاز للمعالج المضيف، في جزء لتبسيط عملية المحول البرمجي إلى بنيات المعالج الجديد. يستمتعون باستخدامات مماثلة اليوم. على سبيل المثال، يعد جهاز Java الظاهري (JVM) جهازًا ظاهريًا للعملية يقوم بتجميع تعليمات Java البرمجية (الإرشادات المنبعثة من محول Java البرمجي) في تعلميات الجهاز الأصلي البرمجية وتنفيذه على الجهاز المضيف. تستخدم البرامج المكتوبة بلغة C# واللغات الأخرى المدعومة من وقت تشغيل اللغة العامة من Microsoft (CLR) أيضاً VMs لعملية تحويل تعليمات اللغة الوسيطة العامة (CIL) برمجياً إلى تعليمات برمجية الجهاز المنبعثة من محولات برمجية. تتم أحيانا الإشارة إلى الأجهزة الظاهرية للعملية التي تهدف إلى تنفيذ اللغات الوسيطة التي ينتجها المحولات البرمجية للغة باسم VMs لغة عالية المستوى، أو أجهزة HLL الظاهرية باختصار.
باختصار، VM لعملية يشبه عملية عادية تعمل على نظام تشغيل. ومع ذلك، يسمح VM لعملية، عبر محاكاة، بتنفيذ تطبيقات محوّلة برمجيًا لـ ISA مختلفة عن الجهاز المضيف. بالإضافة إلى ذلك، توفر الأجهزة الظاهرية (VMs) لعملية HLL الأساس للغات المدارة الشائعة مثل Java وC#. يشير مصطلح "المدارة" في هذا السياق إلى حقيقة أن Java وC# يديران الذاكرة نيابة عن تطبيقاتهما ويوفران ضمانات ضد أخطاء البرمجة الشائعة مثل إساءة استخدام المؤشرات وتجاوز حدود الصفيفات في الذاكرة.
الأجهزة الظاهرية للنظام
على عكس أجهزة VM لعملية، يقوم جهاز VM بإضفاء الطابع الظاهري على جهاز كامل من خلال محاكاة مجموعة كاملة من موارد الأجهزة بما في ذلك المعالجات والذاكرة وأجهزة إدخال/إخراج. يقع برنامج الظاهرية، أو برنامج hypervisor، المعروف أيضا باسم جهاز عرض الجهاز الظاهري (VMM)، بين الأجهزة ونظام التشغيل ويخلق الوهم بأن نظام التشغيل والتطبيقات التي يستضيفها تعمل على أجهزة مستقلة (الشكل 2).
الشكل 2: الجهاز الظاهري للنظام.
يدير برنامج Hypervisor توزيع موارد الأجهزة الأساسية والوصول إليها. يسمح لأجهزة VM المتعددة بالعمل جنبًا إلى جنب ويعطي كل جهاز ظاهري وهم امتلاك كل هذه الموارد. يسمى الجهاز الفعلي المضيف، ويسمى نظام التشغيل الذي يعمل في جهاز ظاهري على مضيف نظام تشغيل ضيف أو نظام تشغيل ضيف (الشكل 3). يمكن تمهيد كل جاهز ظاهري وإغلاقه وإعادة تشغيله تمامًا مثل مضيف عادي. لا يمكن تشغيل الجهاز الظاهري إلا على مضيف واحد في كل مرة، ولكن يمكن إيقاف تشغيله ونقله إلى مضيف آخر والبدء فيه. وهكذا، بينما يمكن تشغيل الجهاز الظاهري على مضيف واحد فقط في نقطة معينة في الوقت المناسب، يمكن ترحيلها إلى مضيفين مختلفين على مدى فترة زمنية.
الشكل 3: نظام واحد يستضيف أجهزة ظاهرية متعددة.
تم تشغيل برامج Hypervisor لأول مرة على حواسيب IBM المركزية في الستينيات. تم تنفيذ برامج Hypervisor المبكرة بالكامل في البرامج أو الاعتماد على الأجهزة لتعزيز الأداء. في الواقع، يتم شحن بعض أجهزة الكمبيوتر المركزية بأجهزة خاصة فقط لدعم المحاكاة الظاهرية. اليوم، تحتوي المعالجات الدقيقة الشائعة من Intel وAMD على دعم ظاهري مدمج، وهي ميزة يمكن تمكينها أو تعطيلها على معظم أجهزة الكمبيوتر من خلال إعدادات البرامج الثابتة. يعد دعم الظاهرية الأصلية في وحدات المعالجة المركزية (CPU) السبب الرئيسي وراء انتشار شعبية الأجهزة الظاهرية في منتصف إلى أواخر الألفينات. لقد أدى ذلك إلى جيل من برامج hypervisors غير المكلفة ولكنها متميزة بالكامل مثل VMware وHyper-V وVirtualBox، بالإضافة إلى برامج hypervisors مفتوحة المصدر مثل Xen1. حتى قبل أن تلقى حوسبة السحابة رواجًا، بدأت المؤسسات في استخدام برامج Hypervisor هذه لإضفاء الطابع الظاهري على أحمال العمل في مراكز البيانات الخاصة بها. أدى هذا إلى تسريع الانتقال إلى حوسبة السحابة من خلال السماح للمؤسسات التي تستخدم بالفعل خوادم ظاهرية «برفع وتحويل» أعباء العمل إلى السحابة عن طريق تحميل صور الأجهزة الظاهرية الموجودة وإنشاء أجهزة ظاهرية منها.
ترى برامج Hypervisor مستخدمة في أجهزة كمبيوتر سطح المكتب في منتجات مثل Parallels وDocker Desktop for Windows. يستخدم الأخير hypervisor مضيفًا (Hyper-V أو VirtualBox) لتشغيل حاويات Docker في Linux VMs المستضافة على Windows. يجد الباحثون الأمنيون أن برامج Hypervisor لا تقدر بثمن لأن الجهاز الظاهري الذي تم اختراقه بواسطة البرامج الضارة لا يؤثر على الأجهزة الظاهرية الأخرى أو نظام التشغيل المضيف أو الأجهزة الأساسية. يمكن هدم الجهاز الظاهري المخترق بسرعة، إذا رغبت في ذلك، إعادة إنشائه في حالته غير المنقوصة دون أي خطر على بقية النظام.
مثل VM لعملية، يمكن VM لنظام دعم ISAs مختلفة عن النظام المضيف. تُستخدم الأجهزة الظاهرية مثل هذه على نطاق واسع في المحاكيات التي تسمح بتشغيل الألعاب المكتوبة لـ Xbox وPlayStation وأنظمة الأجهزة الأخرى على أجهزة كمبيوتر سطح المكتب. نفذت المحاكيات بهذه الطريقة - من خلال برامج Hypervisor التي تستفيد من دعم الظاهرية في وحدات المعالجة المركزية (CPU) - عادةً ما يكون أداء أفضل من المحاكيات في أجهزة ظاهرية لعملية التي تجعل مجموعات التعليمات ظاهرية بالكامل من خلال البرامج.
بعكس VM لعملية، يمكن أن يقدم VM لنظام إلى نظام التشغيل والتطبيقات التي يستضيفها الموارد التي تختلف في الكمية والنوع من المضيف الفعلي. على سبيل المثال، يمكن أن يوفر الجهاز الظاهري للنظام معالجات أكثر، يشار إليها أحيانا باسم وحدات المعالجة المركزية الظاهرية أو وحدات المعالجة المركزية الظاهرية، من النظام المضيف.
تستخدم مراكز البيانات التي تقدم حوسبة السحابة كخدمة للعملاء أجهزة ظاهرية للنظام لإضفاء الطابع الظاهري على أعباء العمل ودمج الخوادم. من هذه النقطة فصاعدًا، عندما نستخدم مصطلح «الجهاز الظاهري» أو «VM»، فإننا نشير إلى VMs لنظام ما لم يتم تحديد خلاف ذلك. في الدرس التالي، سنناقش كيف تستفيد VMs لنظام من حوسبة السحابية ولماذا قد لا توجد حوسبة السحابة - وبالتأكيد لا يمكن أن تكون فعالة من حيث التكلفة - بدون الظاهرية.
المراجع
- Barham et al. (2003). "Xen وفن الظاهرية" في وقائع ندوة ACM التاسعة عشرة حول مبادئ أنظمة التشغيل (SOSP '03). ACM، نيويورك، ولاية نيويورك، الولايات المتحدة الأمريكية.
اختبر معلوماتك
الملاحظات
هل كانت هذه الصفحة مفيدة؟
لا
هل تحتاج إلى مساعدة مع هذا الموضوع؟
هل تريد محاولة استخدام Ask Learn لتوضيح هذا الموضوع أو إرشادك خلاله؟