آشنایی با بستر مجازی سازی مبتنی بر لینوکس KVM – مزایای مجازی سازی – بخش چهارم

Full virtualization:

در Full virtualization  ،دستوراتی که برای اجرا به سطح دسترسی بالا احتیاج دارند شبیه سازی (Emulate) می شوند تا از محدودیت های که هنگام اجرای سیستم عامل در حلقه 1 و VMM درحلقه 0 ایجاد می شود مصون بمانند .full virtualization  اولین بار در نسل اول VMM های x86  پیاده سازی شد . این روش تکیه بر روش هایی مانند ترجمه باینری دارد تا اجرای دستورالعمل هایی که حساس و غیرقابل مجازی سازی هستند را پیداکرده و مجازی کند.بنابرین در ترجمه باینری بعضی از فرخوانی های سیستمی (system call ) ترجمه شده و به صورت پویا دوباره نوشته می شوند.تصویر زیر نمایش میدهد که چگونه سیستم عامل میهمان برای دستورالعمل های ویژه از طریق حلقه 1  به سخت افزار کامپیوتر میزبان دسترسی پیدا می کند و همچنین چگونه دستورات معمول بدون دخالت حلقه 1 اجرا می شوند :

با این روش دستورالعمل های حساس شناسایی شده(بصورت استاتیک ویا پویا) و به صورت پویا بازنویسی می شوند.ترجمه باینری ممکن است باعث ایجاد افت بازدهی زیادی نسبت به ماشین مجازیی که در یک محیط مجازی طبیعی در حال اجراست بشود.

با این وجود همانطور که در شکل بالا مشخص است هنگامی که از full virtualization  استفاده می کنیم میتوانیم از سیستم عامل میهمان دستکاری نشده استفاده کنیم .این بدان معنیست که برای اجرای سیستم عامل میهمان برروی VMM  مجبور به تغییر دادن کرنل آن نیستیم. هنگامی که کرنل سیستم عامل میهمان عملیات هایی که سطح دسترسی بالایی احتیاج دارند (Privileged operations) را انجام می دهد ،VMM شبیه سازی پردازشگر را فراهم می کند تا این عملیات ها را مدیریت و اصلاح کند،اما همانطور که قبلا اشاره شد این امر باعث افت بازدهی نسبت به نوع دیگر مجازی سازی که paravirtualization  نام دارد می گردد.

Paravirtualization:

در paravirtualization باید درسیستم عامل میهمان دستکاری شود تا دستورالعمل ها اجازه دسترسی به حلقه 0 را پیدا کنند،به زبانی دیگر سیستم عامل میهمان بایستی دستکاری بشود تا با Hypervisor /VMM از طریق راه پشتی (Backend path )  و یا (Hypercalls) ارتباط برقرار کند.

Paravirtualization  تکنیکی است که در آن hypervisor   یک API  فراهم می کند و سیستم عامل ماشین مجازی میهمان آن را فراخوانی می کند برای انجام اینکار سیستم عامل میهمان نیاز به دستکاری شدن دارد . دستورالعمل هایی که نیاز به سطح دسترسی بالا دارند با توابع API که توسط VMM فراهم شده جایگزین می شوند .در این حالت سیستم عامل میهمان می تواند در حلقه 0 اجرا شود. همانطور که واضح است در این حالت کرنل سیستم عامل میهمان اصلاح می شود تا بتواند در VMM اجرا شود. به عبارتی دیگر سیستم عامل میهمان از مجازی سازی شدن خود با خبر است.

دستور العمل های که باید در حلقه 0 اجرا شوند با فراخوانی هایی که به Hypercall معروف اند جایگزین می شوند که با VMM ارتباط برقرار می کنند.Hypercall ها  VMM را احضار می کنند تا وظایف کرنل سیستم عامل میهمان را به نمایندگی آن انجام دهد.از آنجایی که کرنل سیستم عامل میهمان این قابلیت را دارد که با استفاده از Hypercall ها به طور مستقیم با VMM ارتباط برقرار کند این تکنیک بهره وری بالاتری را نسبت به Full virtualization   داراست .اما این روش نیازمند سیستم عاملی با کرنل بخصوص است که از paravirtualization  انجام شده در سیستم آگاهی دارد و دارای نرم افزار های مورد نیاز آن است.

آشنایی با بستر مجازی سازی مبتنی بر لینوکس KVM – مفاهیم – بخش اول
آشنایی با بستر مجازی سازی مبتنی بر لینوکس KVM – مفاهیم – بخش دوم
آشنایی با بستر مجازی سازی مبتنی بر لینوکس KVM – مفاهیم – بخش سوم

3 دیدگاه
  1. reza says

    تشکر

  2. احسان ملکی says

    عالی بود.

  3. محمد says

    عاشق سایت شما هستم خیلی جالب کار میکنین روزی 3 باز سر میزنم

دیدگاه

آدرس ایمیل شما منتشر نخواهد شد.