المبادئ العامة لعملية QEMU-KVM

المبادئ العامة لعملية QEMU-KVM

فهمي الحالي:

1) كفم

KVM (الجهاز الظاهري المستند إلى Kernel) هو برنامج Hypervisor (VMM - Virtual Machine Manager) يعمل كوحدة نمطية على نظام التشغيل Linux. هناك حاجة إلى برنامج Hypervisor لتشغيل بعض البرامج في بيئة (افتراضية) غير موجودة ، وفي نفس الوقت إخفاء الأجهزة المادية الحقيقية التي يعمل عليها هذا البرنامج من هذا البرنامج. يعمل برنامج Hypervisor "كطبقة" بين الأجهزة المادية (المضيف) ونظام التشغيل الافتراضي (الضيف).

نظرًا لأن KVM هي وحدة نمطية قياسية في Linux kernel ، فإنها تتلقى جميع الامتيازات (إدارة الذاكرة ، المجدول ، إلخ) من kernel. وبناءً على ذلك ، في النهاية ، تذهب كل هذه الفوائد إلى الضيوف (لأن الضيوف يعملون على برنامج Hypervisor يعمل على / في Linux kernel).

KVM سريع جدًا ، لكن في حد ذاته لا يكفي تشغيل نظام تشغيل افتراضي ، لأن هذا يتطلب مضاهاة الإدخال / الإخراج. بالنسبة للإدخال / الإخراج (المعالج ، والأقراص ، والشبكة ، والفيديو ، و PCI ، و USB ، والمنافذ التسلسلية ، وما إلى ذلك) تستخدم KVM QEMU.

2) كيمو

QEMU (Quick Emulator) هو محاكي للعديد من الأجهزة التي تسمح لك بتشغيل أنظمة تشغيل مصممة لمعمارية على أخرى (على سبيل المثال ، ARM -> x86). بالإضافة إلى المعالج ، تقوم QEMU بمحاكاة العديد من الأجهزة الطرفية: بطاقات الشبكة ، HDD ، بطاقات الفيديو ، PCI ، USB ، إلخ.

يعمل مثل هذا:

يتم تحويل التعليمات / الكود الثنائي (على سبيل المثال ، ARM) إلى رمز وسيط مستقل عن النظام الأساسي باستخدام محول TCG (Tiny Code Generator) ، ثم يتم تحويل هذا الرمز الثنائي المستقل عن النظام الأساسي إلى تعليمات / رمز الهدف (على سبيل المثال ، x86).

ARM -> انطلاق -> x86

في الواقع ، يمكنك تشغيل أجهزة افتراضية على QEMU على أي مضيف ، حتى مع طرز المعالجات الأقدم التي لا تدعم Intel VT-x (تقنية المحاكاة الافتراضية من Intel) / AMD SVM (جهاز AMD Secure Virtual Machine). ومع ذلك ، في هذه الحالة ، سيعمل ببطء شديد ، نظرًا لحقيقة أن الشفرة الثنائية القابلة للتنفيذ تحتاج إلى إعادة تجميعها سريعًا مرتين ، باستخدام TCG (TCG هو مترجم Just-in-Time).

أولئك. QEMU نفسها رائعة جدًا ، لكنها تعمل ببطء شديد.

3) حلقات الحماية

المبادئ العامة لعملية QEMU-KVM

لا يعمل رمز البرنامج الثنائي على المعالجات تمامًا مثل هذا ، ولكنه يقع على مستويات مختلفة (الحلقات / حلقات الحماية) بمستويات مختلفة من الوصول إلى البيانات ، من الأكثر امتيازًا (Ring 0) إلى الأكثر تحديدًا وتنظيمًا و "مع مسامير ملولبة مشدودة "(الحلقة 3).

يعمل نظام التشغيل (OS kernel) على Ring 0 (وضع kernel) ويمكنه فعل ما يريد بأي بيانات وأجهزة. تعمل تطبيقات المستخدم على مستوى Ring 3 (وضع المستخدم) ولا يحق لها القيام بما يريدون ، ولكن بدلاً من ذلك يجب عليهم في كل مرة طلب الوصول لأداء عملية أو أخرى (وبالتالي ، فإن تطبيقات المستخدم لديها حق الوصول إلى بياناتها الخاصة فقط ولا يمكنها ذلك "الحصول على" في "وضع الحماية لشخص آخر"). الخاتم 1 و 2 مخصصان لاستخدام السائق.

قبل اختراع Intel VT-x / AMD SVM ، تم تشغيل برامج Hypervisor على Ring 0 وركض الضيوف على Ring 1. نظرًا لأن Ring 1 لا تملك حقوقًا كافية لنظام التشغيل ليعمل بشكل صحيح ، مع كل مكالمة مميزة من الضيف ، برنامج Hypervisor اضطررت إلى تعديل هذه المكالمة بسرعة وتنفيذها على Ring 0 (يشبه إلى حد كبير QEMU). أولئك. ضيف ثنائي NOT تم تنفيذه مباشرة على المعالج ، وفي كل مرة يمر بعدة تعديلات وسيطة على الفور.

كانت النفقات العامة كبيرة وكانت مشكلة كبيرة ، ثم أصدرت الشركات المصنعة للمعالج ، بشكل مستقل عن بعضها البعض ، مجموعة موسعة من التعليمات (Intel VT-x / AMD SVM) التي تتيح لك تنفيذ رمز نظام تشغيل الضيف مباشرة على المعالج المضيف (تجاوز أي خطوات وسيطة باهظة الثمن ، كما كان من قبل).

مع ظهور Intel VT-x / AMD SVM ، تم إنشاء حلقة مستوى جديد خاص -1 (ناقص واحد). والآن يتم تشغيل برنامج Hypervisor ، ويعمل الضيوف على Ring 0 ويحصلون على امتياز الوصول إلى وحدة المعالجة المركزية.

أولئك. مؤخراً:

  • مضيف يعمل على Ring 0
  • يعمل الضيوف في Ring 0
  • برنامج Hypervisor يعمل على Ring -1

4) كيمو-KVM

يتيح KVM للضيوف الوصول إلى Ring 0 ويستخدم QEMU لمحاكاة الإدخال / الإخراج (المعالج ، والأقراص ، والشبكة ، والفيديو ، و PCI ، و USB ، والمنافذ التسلسلية ، وما إلى ذلك التي "يراها" الضيوف ويعملون معها).

ومن ثم QEMU-KVM (أو KVM-QEMU) :)

CREDITS
صورة لجذب الانتباه
حلقات حماية الصورة

ملاحظة: نُشر نص هذه المقالة في الأصل في قناة Telegram تضمين التغريدة كإجابة على سؤال من أحد أعضاء القناة.

اكتب في التعليقات حيث لا أفهم الموضوع بشكل صحيح أو إذا كان هناك شيء لأضيفه.

شكرا لك!

المصدر: www.habr.com

إضافة تعليق