–41

متن کامل پایان نامه را در سایت منبع fuka.ir می توانید ببینید

1938020topوزارت علوم، تحقیقات و فناوری
دانشگاه علوم و فنون مازندران
پایان‏نامه
مقطع کارشناسی ارشد
رشته مهندسی فناوری اطلاعات
عنوان : ارایه‏ی یک الگوریتم مقیاس‎پذیر آگاه از بار کاری جهت زمان‏بندی ماشین‏های مجازیاستاد راهنما: دکتر محسن شریفی
استاد مشاور: مهندس هادی سلیمی
دانشجو: مهدی چشمی
اسفندمهرماه 1391

تقدیم به
به همسر م که بی همراهی او، این اندک مقصد نمی رسید.

تشکر و قدردانی
بدین وسیله از تمام اساتیدی که در این مقطع تحصیلی معلم و راهنمای بنده بودند مخصوصا جناب آقای دکتر محسن شریفی و جناب آقای مهندس هادی سلیمی، کمال تشکر را دارم.بدین وسیله از تمام بزرگوارانی که بر بنده شرف استادی دارند مخصوصا اساتیدی که در این مقطع و دیگر مقاطع تحصیلی معلم و راهنمای بنده بودند سپاسگزارم. از جناب آقای دکتر محسن شریفی و جناب آقای مهندس هادی سلیمی، به دلیل تقبل راهنمایی بنده در این رساله کمال تشکر را دارم.
همچنین از مدیریت آموزش دانشگاه که در این مدت همکاری قابل تقدیری با بنده داشته‏اند متشکرم.

چکیده
با توجه به نیاز جامعه‌ی امروز به توان پردازشی بالاتر و قابلیتفراهم نمودن امکان استفاده از امکانات پردازشی برای عموم متقاضیان، استفاده از فناوری پردازش ابری به عنوان یک راهکار عملی در صدر مسایل مورد بحث این حوزه قرار داردگرفته است.. از سوی دیگر مدیریت فنی و هزینه‏ی زیرساخت‏هایی عمومی ارایه‏دهنده‏ی این که چنین سرویس‏هایی را برای عموم ارایه دهند یکی از چالش‌های مهم امروز است. اگرچه با به خدمت گرفتن فناوری مجازی‏سازی در این حوزه بسیاری از چالش‏های این حوزه رفع گردیده، ولی مسایل جدیدی را پیش روی محققان قرار داده است. در این پایان‌نامه سعی کرده‏ایم با معرفی یکی از چالش‏های مجازی‏سازی به نام تداخل بار کاری و تببین اثر آن بر زمان اجرای نرم‏افزارها که که در نهایت علاوه بر کاهش کیفیت سرویس و افزایش، مصرف انرژی را نیز در پی داردافزایش می‏دهد، الگوریتمی جهت زمان‏بندی ماشین‏های مجازی بر مبنای کاهش تداخل بار کاری ارایه نماییمکنیم. این الگوریتم می‏کوشد که ماشین‏های مجازی با تداخل بار کاری بالا بر روی یک کارگزار تجمیع نشوند. این مساله را می‏توان با مساله‏ی کوله‏پشتی دودویی چندگانه مدل نمود که متاسفانه در زمره‏ی مسایل NP-Complete است. با توجه به این که در مقوله‏ی زمان‏بندی، زمان اجرای الگوریتم نیز اهمیت شایانی دارد، جهت حل مساله از روش تقریبی استفاده شده است. به این ترتیب که با پذیرش خطا، مساله‏ی زمان‏بندی ماشین‏های مجازی در زمانی قابل قبول حل شده است. نتایج ارزیابی‌ الگوریتم ارایه شده و مقایسه‏ی آن با دیگر الگوریتم‏ها، نشان از کاهش زمان اجرای نرم‏افزار با این رویکرد دارد که باعث بهبود پارامترهای کیفی و هزینه‏ای سیستم‏های پردارش ابری خواهد شد. مثلا برای مرکز داده‏ای که قرار است 1000 ماشین مجازی را بر روی 50 ماشین فیزیکی زمان‏بندی نماید، الگوریتم ارایه شده بهبود 6% در زمان اجرا و افزایش 5/2برابری ضریب تجمیع را نسبت به الگوریتم شناخته شده‏ی چرخشی دارد.واژه‌های کلیدی: مجازی‏سازی، پردازش ابری، تداخل بار کاری، زمان‏بندی، مقیاس‏پذیری.، مجازی‏سازی، پردازش ابری
فهرست مطالب
TOC o “1-3” h z u HYPERLINK l “_Toc339057413” فصل 1: مقدمه و کلیات تحقیق PAGEREF _Toc339057413 h 1 HYPERLINK l “_Toc339057414” 1-1- مقدمه PAGEREF _Toc339057414 h 2 HYPERLINK l “_Toc339057415” 1-2- اهداف PAGEREF _Toc339057415 h 3 HYPERLINK l “_Toc339057416” 1-3- ساختار پایان‌نامه PAGEREF _Toc339057416 h 3 HYPERLINK l “_Toc339057417” فصل 2: مجازی‏سازی و پردازش ابری PAGEREF _Toc339057417 h 5 HYPERLINK l “_Toc339057419” 2-1- مقدمه PAGEREF _Toc339057419 h 6 HYPERLINK l “_Toc339057420” 2-2- تعریف مجازی‏سازی PAGEREF _Toc339057420 h 6 HYPERLINK l “_Toc339057421” 2-3- تاریخچه‏ی مجازی‏سازی PAGEREF _Toc339057421 h 7 HYPERLINK l “_Toc339057422” 2-4- ناظر ماشین مجازی PAGEREF _Toc339057422 h 8 HYPERLINK l “_Toc339057423” 2-5- کاربردهای مجازی‏سازی PAGEREF _Toc339057423 h 9 HYPERLINK l “_Toc339057424” 2-5-1- جعبه‏ی شنی PAGEREF _Toc339057424 h 9 HYPERLINK l “_Toc339057425” 2-5-2- محیط‏های اجرایی چندگانه PAGEREF _Toc339057425 h 9 HYPERLINK l “_Toc339057426” 2-5-3- سخت‏افزار مجازی PAGEREF _Toc339057426 h 9 HYPERLINK l “_Toc339057427” 2-5-4- سیستم‏عامل‏های چندگانه همزمان PAGEREF _Toc339057427 h 9 HYPERLINK l “_Toc339057428” 2-5-5- اشکال‏زدایی PAGEREF _Toc339057428 h 10 HYPERLINK l “_Toc339057429” 2-5-6- مهاجرت نرم‏افزار PAGEREF _Toc339057429 h 10 HYPERLINK l “_Toc339057430” 2-5-7- بسته‏ی پیش‏نصب مجازی PAGEREF _Toc339057430 h 10 HYPERLINK l “_Toc339057431” 2-5-8- تجمیع کارگزار PAGEREF _Toc339057431 h 10 HYPERLINK l “_Toc339057432” 2-6- سطوح مختلف مجازی‏سازی PAGEREF _Toc339057432 h 14 HYPERLINK l “_Toc339057433” 2-6-1- معماری یک سیستم قابل مجازی سازی PAGEREF _Toc339057433 h 14 HYPERLINK l “_Toc339057434” 2-6-2- مجازی‏سازی در سطح معماری مجموعه دستور PAGEREF _Toc339057434 h 18 HYPERLINK l “_Toc339057435” 2-6-3- مجازی‏سازی در سطح انتزاع سخت‏افزار PAGEREF _Toc339057435 h 19 HYPERLINK l “_Toc339057436” 2-6-4- مجازی‏سازی در سطح سیستم‏عامل PAGEREF _Toc339057436 h 24 HYPERLINK l “_Toc339057437” 2-6-5- مجازی‏سازی در سطح برنامه‏ی کاربردی PAGEREF _Toc339057437 h 26 HYPERLINK l “_Toc339057438” 2-6-6- مجازی‏سازی در سطح کتابخانه PAGEREF _Toc339057438 h 29 HYPERLINK l “_Toc339057439” 2-7- پردازش ابری PAGEREF _Toc339057439 h 30 HYPERLINK l “_Toc339057441” 2-7-1- تاریخچه PAGEREF _Toc339057441 h 30 HYPERLINK l “_Toc339057442” 2-7-2- مزایای اقتصادی ابر PAGEREF _Toc339057442 h 31 HYPERLINK l “_Toc339057443” 2-7-3- انواع ابر پردازشی PAGEREF _Toc339057443 h 32 HYPERLINK l “_Toc339057444” فصل 3: تحقیقات مرتبط PAGEREF _Toc339057444 h 33 HYPERLINK l “_Toc339057445” 3-1- مقدمه PAGEREF _Toc339057445 h 34 HYPERLINK l “_Toc339057446” 3-2- رویکردهای متفاوت به زمان‏بندی ماشین‏های مجازی PAGEREF _Toc339057446 h 34 HYPERLINK l “_Toc339057447” 3-2-1- مزایا و معایب رویکردهای زمان‏بندی ماشین‏های مجازی PAGEREF _Toc339057447 h 36 HYPERLINK l “_Toc339057448” فصل 4: الگوریتم DVMS PAGEREF _Toc339057448 h 37 HYPERLINK l “_Toc339057471” 4-1- مقدمه PAGEREF _Toc339057471 h 38 HYPERLINK l “_Toc339057472” 4-2- ملاحظات زمان‏بندی در یک محیط پردازش ابری PAGEREF _Toc339057472 h 38 HYPERLINK l “_Toc339057473” 4-2-1- کارایی PAGEREF _Toc339057473 h 38 HYPERLINK l “_Toc339057474” 4-2-2- هزینه PAGEREF _Toc339057474 h 38 HYPERLINK l “_Toc339057475” 4-2-3- همجواری PAGEREF _Toc339057475 h 39 HYPERLINK l “_Toc339057476” 4-2-4- قابلیت اعتماد و دسترس‏پذیری مستمر PAGEREF _Toc339057476 h 39 HYPERLINK l “_Toc339057477” 4-3- چالش‏های زمان‏بندی PAGEREF _Toc339057477 h 39 HYPERLINK l “_Toc339057479” 4-4- الگوریتم ارایه شده برای زمان‏بندی ماشین‏های مجازی PAGEREF _Toc339057479 h 39 HYPERLINK l “_Toc339057480” 4-4-1- نگاشت مساله‏ی زمان‏بندی به مساله‏ی کوله پشتی PAGEREF _Toc339057480 h 40 HYPERLINK l “_Toc339057481” 4-4-2- مدل سیستم PAGEREF _Toc339057481 h 40 HYPERLINK l “_Toc339057482” 4-4-3- فرمول‏بندی مساله PAGEREF _Toc339057482 h 40 HYPERLINK l “_Toc339057483” 4-4-4- الگوریتم DVMS PAGEREF _Toc339057483 h 42 HYPERLINK l “_Toc339057484” 4-4-5- قضیه PAGEREF _Toc339057484 h 45 HYPERLINK l “_Toc339057485” 4-4-6- بررسی پیچیدگی زمانی الگوریتم: PAGEREF _Toc339057485 h 47 HYPERLINK l “_Toc339057486” 4-4-7- پیچیدگی فضایی الگوریتم: PAGEREF _Toc339057486 h 48 HYPERLINK l “_Toc339057488” فصل 5: ارزیابی الگوریتم ارایه شده PAGEREF _Toc339057488 h 49 HYPERLINK l “_Toc339057489” 5-1- مقدمه PAGEREF _Toc339057489 h 50 HYPERLINK l “_Toc339057490” 5-2- شرایط و محدودیت‏های ارزیابی PAGEREF _Toc339057490 h 50 HYPERLINK l “_Toc339057491” 5-2-1- مشخصات سخت‏افزاری و نرم‏افزاری محیط ارزیابی PAGEREF _Toc339057491 h 51 HYPERLINK l “_Toc339057492” 5-3- فرض‏ها و تعریف‏ها PAGEREF _Toc339057492 h 51 HYPERLINK l “_Toc339057493” 5-4- بررسی زمان اجرای الگوریتم PAGEREF _Toc339057493 h 52 HYPERLINK l “_Toc339057494” 5-4-1- تعداد ماشین‏های فیزیکی ثابت، تعداد ماشین‏های مجازی متغیر PAGEREF _Toc339057494 h 52 HYPERLINK l “_Toc339057495” 5-4-2- تعداد ماشین‏های مجازی ثابت، تعداد ماشین‏های فیزیکی متغیر PAGEREF _Toc339057495 h 55 HYPERLINK l “_Toc339057496” 5-5- مقایسه الگوریتم DVMS با دو الگوریتم پایه PAGEREF _Toc339057496 h 56 HYPERLINK l “_Toc339057497” 5-5-1- الگوریتم تصادفی PAGEREF _Toc339057497 h 57 HYPERLINK l “_Toc339057498” 5-5-2- الگوریتم توازن بار PAGEREF _Toc339057498 h 57 HYPERLINK l “_Toc339057499” 5-5-3- روش مقایسه الگوریتم DVMS با الگوریتم تصادفی و چرخشی PAGEREF _Toc339057499 h 57 HYPERLINK l “_Toc339057500” فصل 6: نتیجه‏گیری و کارهای آینده PAGEREF _Toc339057500 h 61 HYPERLINK l “_Toc339057503” 6-1- نتیجه‏گیری PAGEREF _Toc339057503 h 62 HYPERLINK l “_Toc339057504” 6-2- کارهای آینده PAGEREF _Toc339057504 h 62 HYPERLINK l “_Toc339057505” منابع PAGEREF _Toc339057505 h 64فصل 1: مقدمه و کلیات تحقیق11-1- مقدمه21-2- اهداف31-3- ساختار پایان‌نامه3فصل 2: ادبیات و پیشینه‏ی تحقیق52-1- مقدمه62-2- تعریف مجازی‏سازی62-3- تاریخچه‏ی مجازی‏سازی72-4- ناظر ماشین مجازی92-5- کاربردهای مجازی‏سازی102-5-1- جعبه‏ی شنی 102-5-2- محیط‏های اجرایی چندگانه102-5-3- سخت‏افزار مجازی102-5-4- سیستم‏عامل‏های چندگانه همزمان112-5-5- اشکال‏زدایی112-5-6- مهاجرت نرم‏افزار112-5-7- تعبیه122-5-8- تجمیع سرور122-6- سطوح مختلف مجازی‏سازی152-6-1- معماری یک سیستم قابل مجازی سازی162-6-2- مجازی‏سازی در سطح معماری مجموعه دستور202-6-3- مجازی‏سازی در سطح انتزاع سخت‏افزار222-6-4- مجازی‏سازی در سطح سیستم‏عامل272-6-5- مجازی‏سازی در سطح برنامه کاربردی292-6-6- مجازی‏سازی در سطح کتابخانه332-7- پردازش ابری342-7-1- تاریخچه342-7-2- مزایای اقتصادی ابر352-7-3- انواع ابر پردازشی36فصل 3: کارهای مرتبط383-1- کارها و تحقیقات مرتبط383-1-1- مزایا و معایب رویکردهای زمان‏بندی ماشین‏های مجازی40فصل 4: روش تحقیق414-1- زمان‏بندی424-2- ملاحظات زمان‏بندی در یک محیط پردازش ابری424-2-1- کارایی424-2-2- هزینه424-2-3- محلیت434-2-4- قابلیت اعتماد و دسترس‏پذیری مستمر434-3- چالش‏های زمان‏بندی434-4- الگوریتم ارایه شده برای زمان‏بندی ماشین‏های مجازی434-4-1- نگاشت مساله‏ی زمان‏بندی به مساله‏ی کوله پشتی444-4-2- مدل سیستم444-4-3- فرمول‏بندی مساله454-4-4- الگوریتم DVMS464-4-5- قضیه494-4-6- بررسی پیچیدگی زمانی الگوریتم:504-4-7- پیچیدگی فضایی الگوریتم:52فصل 5: محاسبات و یافته‏های تحقیق535-1- مقدمه545-2- شرایط و محدودیت‏های ارزیابی545-2-1- مشخصات سخت‏افزاری و نرم‏افزاری محیط ارزیابی555-3- فرضیات و تعاریف565-4- بررسی زمان اجرای الگوریتم575-4-1- تعداد ماشین‏های فیزیکی ثابت، تعداد ماشین‏های مجازی متغیر575-4-2- تعداد ماشین‏های مجازی ثابت، تعداد ماشین‏های فیزیکی متغیر605-5- مقایسه الگوریتم DVMS با دو الگوریتم پایه625-5-1- الگوریتم تصادفی625-5-2- الگوریتم توازن بار625-5-3- روش مقایسه الگوریتم DVMS با الگوریتم تصادفی و Round Robin62فصل 6: نتیجه‏گیری و کارهای آینده676-1- نتیجه‏گیری676-2- کارهای آینده68فصل 7: منابع69

فهرست شکل‏ها
TOC h z t “زیرنویس شکل,1” HYPERLINK l “_Toc339057519” شکل (1-1) ساختار پایان‌نامه PAGEREF _Toc339057519 h 4 HYPERLINK l “_Toc339057520” شکل (2-1) ناظر ماشین مجازی و ماشین‏های مجازی PAGEREF _Toc339057520 h 8 HYPERLINK l “_Toc339057521” شکل (2-2) تجمیع کارگزارها PAGEREF _Toc339057521 h 11 HYPERLINK l “_Toc339057522” شکل (2-3) مشکل مقیاس‏پذیری تجمیع کارگزارها PAGEREF _Toc339057522 h 13 HYPERLINK l “_Toc339057523” شکل (2-4) سطوح انتزاعی مجازی‏سازی PAGEREF _Toc339057523 h 16 HYPERLINK l “_Toc339057524” شکل (2-5) ساختار ماشین مجازی مستقل PAGEREF _Toc339057524 h 21 HYPERLINK l “_Toc339057525” شکل (2-6) ساختار ماشین مجازی میزبانی PAGEREF _Toc339057525 h 22 HYPERLINK l “_Toc339057526” شکل (2-7) معماری VMware Workstation PAGEREF _Toc339057526 h 23 HYPERLINK l “_Toc339057527” شکل (2-8) معماری VMware ESX PAGEREF _Toc339057527 h 24 HYPERLINK l “_Toc339057528” شکل (2-9) یک ماشین با دو jail PAGEREF _Toc339057528 h 26 HYPERLINK l “_Toc339057529” شکل (4-1) شبه‏کد الگوریتم DVMS PAGEREF _Toc339057529 h 42 HYPERLINK l “_Toc339057530” شکل (4-2) فاز دوم از بخش اول الگوریتم PAGEREF _Toc339057530 h 44 HYPERLINK l “_Toc339057531” شکل (4-3) بخش دوم الگوریتم DVMS PAGEREF _Toc339057531 h 45 HYPERLINK l “_Toc339057533” شکل (4-4) شبه کد محاسبه‏ی تداخل دو به دوی ماشین‏های مجازی PAGEREF _Toc339057533 h 47 HYPERLINK l “_Toc339057535” شکل (4-5) شبه‏کد تداخل بین ماشین‏های زمان‏بندی شده و ماشین‏های زمان‏بندی نشده PAGEREF _Toc339057535 h 48 HYPERLINK l “_Toc339057536” شکل (5-1) نتیجه‏ی آزمایش شماره 1 PAGEREF _Toc339057536 h 53 HYPERLINK l “_Toc339057537” شکل (5-2) نتیجه‏ی آزمایش شماره 2 PAGEREF _Toc339057537 h 53 HYPERLINK l “_Toc339057538” شکل (5-3) نمودار تلفیقی دو آزمایش 1و2 PAGEREF _Toc339057538 h 54 HYPERLINK l “_Toc339057539” شکل (5-4) نتیجه‏ی آزمایش شماره 3 و4 PAGEREF _Toc339057539 h 55 HYPERLINK l “_Toc339057540” شکل (5-5) نتیجه‏ی زمان‏بندی 100 ماشین مجازی PAGEREF _Toc339057540 h 56 HYPERLINK l “_Toc339057541” شکل (5-6) مقایسه‏ی زمان اجرای ماشین‏های مجازی در سه الگوریتم مورد آزمایش PAGEREF _Toc339057541 h 58 HYPERLINK l “_Toc339057542” شکل (5-7) مقایسه‏ی زمان اجرای سه الگوریتم مورد آزمایش PAGEREF _Toc339057542 h 59 HYPERLINK l “_Toc339057543” شکل (5-8) مقایسه‏ی زمان اجرای ماشین‏های مجازی در سه الگوریتم مورد آزمایش بدون زمان اجرای الگوریتم PAGEREF _Toc339057543 h 59 HYPERLINK l “_Toc339057544” شکل (5-9) مقایسه‏ی میزان تداخل ماشین‏های مجازی در سه الگوریتم مورد آزمایش PAGEREF _Toc339057544 h 60 HYPERLINK l “_Toc339057545” شکل (5-10) مقایسه‏ی نسبت تجمیع سه الگوریتم مورد آزمایش با توجه به تعداد ماشین‏های مجازی PAGEREF _Toc339057545 h 60شکل (1-1) ساختار پایان‌نامه4شکل (2-1) ناظر ماشین مجازی و ماشین‏های مجازی9شکل (2-2) تجمیع سرور12شکل (2-3) مشکل مقیاس‏پذیری تجمیع سرورها14شکل (2-4) سطوح انتزاعی مجازی‏سازی18شکل (2-5) ساختار ماشین مجازی مستقل23شکل (2-6) ساختار ماشین مجازی میزبانی24شکل (2-7) معماری VMware Workstation26شکل (2-8) معماری VMware ESX26شکل (2-9) یک ماشین با دو jail29شکل (3-1) فاز دوم از بخش اول الگوریتم47شکل (3-2) بخش دوم الگوریتم DVMS48شکل (4-1) نتیجه‏ی آزمایش شماره 157شکل (4-2) نتیجه‏ی آزمایش شماره 258شکل (4-3) نمودار تلفیقی دو آزمایش 1و259شکل (4-4) نتیجه‏ی آزمایش شماره 3 و460شکل (4-5) نتیجه‏ی زمان‏بندی 100 ماشین مجازی61شکل (4-6) مقایسه‏ی زمان اجرای ماشین‏های مجازی در سه الگوریتم مورد آزمایش63شکل (4-7) مقایسه‏ی زمان اجرای سه الگوریتم مورد آزمایش64شکل (4-8) مقایسه‏ی زمان اجرای ماشین‏های مجازی در سه الگوریتم مورد آزمایش بدون زمان اجرای الگوریتم64
فهرست جدول هادول‏ها TOC h z t “Title,1,بالانویس جدول,1” HYPERLINK l “_Toc338603460” جدول (2-1) بهره‏و‏ری کارگزارها PAGEREF _Toc338603460 h 11 HYPERLINK l “_Toc338603461″ جدول (5-1) مشخصات بستر سخت‌افزاری مورد استفاده در آزمایش‏ها PAGEREF _Toc338603461 h 51جدول (2-1) : بهره وری سرورها13جدول (4-1) مشخصات بستر سخت‌افزاری مورد استفاده در آزمایشات56

ممقدمه و کلیات تحقیق
مقدمهفناوری مجازی‏سازی به عنوان یک رکن اساسی در سیستم‏های مبتنی بر پردازش ابری و مراکز داده مورد توجه ویژه می‏باشد. مفهوم مجازی‏سازی دارای قدمتی طولانی در دنیای رایانه است و سرآغاز آن به دهه 60 میلادی، برای استفاده‏ی بهینه از توان رایانه‏های بزرگ می‏رسد. با ظهور رایانه‏های شخصی ارزان قیمت این فناوری به فراموشی سپرده شد، ولی در آغاز قرن جاری به مدد پیشرفت‏های قابل توجه در ساخت رایانه‏های توانمند، شبکه‏های با پهنای باند بالا و ابزارهای ذخیره‏سازی مدرن این فناوری امکان ظهور مجدد یافته ‏است. استفاده‏ی بهینه از منابع کارگزارها با تجمیع سرویس‏ها بر تعداد کمتری ماشین سخت‏افزاری کمتر، کاهش هزینه‏های زیرساخت مانند مصرف برق و خنک‏کنندگی، مدیریت بهتر و آسان‏تر کارگزارهاسرورها، امکان مهاجرت ماشین‏های مجازی در حال اجرا به میزبان‏های فیزیکی دیگر، ایجاد محیط‏های سازگار با نرم‏افزارهای قدیمی، ایجاد محیط‏های اجرایی مجزا جهت نرم‏افزارهای نامطمئن و یا تست و عیب‏یابی نرم‏افزارهای جدید می‏باشد از علت‏های ل مورد توجه قرار گرفتن این فناوری می‏باشند. هسته اصلی محیط مجازی، یک میزبان نرم‏افزاری به نام ناظر ماشین مجازی است. وظیفه‏ی اصلی ناظر ماشین مجازی ایجاد و مدیریت منابع محیط‏های اجرایی است. از آن‏جا که منابع موجود، محدود و مشترک می‏باشند، رقابت بر سر استفاده از آن‏ها باعث ایجیجاد پدیده‏ای به نام تداخل بار کاری می‏شود که تاثیر قابل توجهی بر کاهش کارایی ماشین‏های مجازی می‏گذارد. در این میان نقش کلیدی ناظر ماشین ‏‏‏ مجازی این است که منابع موجود را به گونه‏ای تسهیم و زمان‏بندی نماید که کارایی ماشین‏های مجازی تحت تاثیر قرار نگیرد.
معمولا زمان اجرای یک برنامه بر روی یک ماشین مجازی طولانی‎تر از زمان اجرای آن بر روی یک ماشین فیزیکیفیزیکی می‏باشد که علت اصلی آن سربار ناشی از مجازی‏سازی و تداخل بارهای کاری است. از این رو ارایه‏ی الگوریتم‏هایی با رویکرد کاهش تداخل بار کاری، می‏تواند نقش بارزی در کاهش زمان اجرای برنامه‏های اجرایی در محیط‏های مجازی بشود. از سویی دیگر با توجه به تنوع و تعدد میزبان‏های سخت‏افزاری یک در محیط پردازش ابری، مقیاس‏پذیری به عنوان یک مشخصه‏ی کلیدی در الگوریتم‏های ارایه شده می‏بایست مورد توجه ویژه قرار گیرد.
اهدافدر این پایان‏نامه سعی بر آن است که با توجه به اثر منفی پدیده‏ی تداخل بار کاری بر زمان اجرای ماشین‏های مجازی یک الگوریتم زمان‏بندی با رویکرد کاهش تداخل بار کاری، ارایه شودنموده که علاوه بر کاهش زمان اجرا و صرفه‏جویی در مصرف انرژی، مقیاس‏پذیر نیز بوده و قابل اجرا بر روی ابرهای معمول امروزی باشد.
بنابراین در این پایان‌نامه باه بررسی دقیق فن‌آاوری مجازی‌سازی و، اثر تداخل بار کاری پرداخته، سعی در ارایه الگوریتمی جهت زمان‏بندی ماشین‏های مجازی با رویکرد کاهش تداخل بار کاری خواهیم نمود.
ساختار پایان‌نامهمطالب مندرج در این پایان‌نامه، همان طور که در شکل (1-1) نشان داده شده است، به صورت زیر سازمان‌دهی شده‌اند: فصل 2دوم به بررسی پیشینه‏‏ی مجازی‏سازی و سیستم‏های پردازش ابری می‏ی پردازد. این فصل در ادامه گذری بر مفهوم زمان‏بندی و پدیده‏ی تداخل بار کاری دارد. فصل سوم در نهایت تحقیقاتکارهای مرتبط در زمینه‏ی زمان‏بندی ماشین‏های مجازی مورد بررسی قرار خواهد داد. در فصل چهارم3 ضمن فرموله کردن مساله‏ی زمان‏بندی ماشین‏های مجازی با رویکرد تداخل بار کاری، الگوریتمی با همین رویکرد ارایه می‏شود. در فصل پنجم4 راهکار ارایه شده را ارزیابی گردیدهنموده، کارایی، بهبودها و یا مشکلات آن را بیان خواهد شد. در نهایت در فصل ششم5 به نتیجه‌گیری از کل بحث در خصوص رویکرد کاهش تداخل بار کاری در زمان‏بندی ماشین‏های مجازی و نیز کارهای آیندهتی قابل انجام در ادامه‌ی این پایان‌نامه پرداخته خواهد شد.

ساختار پایان‌نامه
مجازی‏سازی و پردازش ابری ادبیات و پیشینه‏ی تحقیقمقدمه
مجازی‏سازی یکی از فناوری‏های به‏روز و مهم فناوری اطلاعات در مراکز داده می‏باشد، هرچند که مفاهیم اولیه‏ی آن به دهه‏ی 60 میلادی بازمی‏گردد. امروزه مجازی‏سازی نامی آشنا برای کارشناسان فناوری اطلاعات است اما با وجود عمومیت آن، تعریف کاملی از آن ارایه نشده است. تعاریف ارایه شده معمولا محدود به حوزه‏ی استفاده از مجازی‏سازی و نگاه ارایه‏کنندگان به مقوله‏ی مجازی‏سازی می‏باشد. مجازی‏سازی می‏کوشد با قرار دادن لایه‏های انتزاعی در سطوح معماری سیستم، از پیچیدگی کار با منابع کاسته، و امکان استفاده‏ی موثرتری و کارآمدتری از این منابع سیستم را فراهم آورد.
تعریف مجازی‏سازیپیشینه‏ی طولانی و کاربردهای متنوع مجازی‏سازی ارایه‏ی یک تعریف جامانع و کامل از آن را بسیار دشوار می‏کند. تعاریفی که از مجازی‏سازی ارایه می‏شود معمولا جنبه‏های خاصی از مجازی‏سازی را پوشش می‏دهند. به عنوان نمونه از دیدگاه مدیران مراکز داده، مجازی‏سازی یعنی تجمیع سرورکارگزارها و یا از دیدگاه یک برنامه‏نویس جاوا مجازی سازی یعنی ماشین مجازی جاوا. زانگ ADDIN EN.CITE <EndNote><Cite><Author>Zhang</Author><Year>2010</Year><RecNum>56</RecNum><DisplayText>[1]</DisplayText><record><rec-number>56</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>56</key></foreign-keys><ref-type name=”Conference Proceedings”>10</ref-type><contributors><authors><author>Xu Zhang</author></authors></contributors><titles><title>A Survey of Sys– Virtualization</title></titles><dates><year>2010</year></dates><pub-location>Chicago</pub-location><urls></urls></record></Cite></EndNote>[1] مجازی‏سازی را این گونه تعریف می‏کند: مجازی‏سازی نمونه‏های جایگزینی برای منابع واقعی ایجاد می‏کند که از نظر عملکرد و رابطه با جهان خارج همانند نمونه‏ی واقعی می‏باشند ولی ممکن است از نظر کارایی، اندازه و هزینه با آن متفاوت باشند. به این منابع، منابع مجازی گفته می‏شود. سین ADDIN EN.CITE <EndNote><Cite><Author>Singh</Author><Year>2004</Year><RecNum>57</RecNum><DisplayText>[2]</DisplayText><record><rec-number>57</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>57</key></foreign-keys><ref-type name=”Conference Paper”>47</ref-type><contributors><authors><author>Amit Singh</author></authors></contributors><titles><title>An Introduction to Virtualization</title></titles><dates><year>2004</year></dates><urls><related-urls><url>http://www.kernelthread.com/publications/virtualization/</url></related-urls></urls></record></Cite></EndNote>[2] نیز مجازی‏سازی را این گونه تعریف می‏کند: مجازی‏سازی فناوری‌ای است که با ترکیب یا تقسیم منابع محاسباتی یک یا چند محیط عملیاتی را با استفاده از روش‏هاییمتدلوژیهایی نظیر تقسیم سخت‏افزار و نرم‏افزار، شبیه‏سازی کامل یا جزیی ماشین، نمونه‏سازی یا (تقلید) و اشتراک زمانی نمایش می‏دهد. رای ADDIN EN.CITE <EndNote><Cite><Author>Ray</Author><Year>2009</Year><RecNum>58</RecNum><DisplayText>[3]</DisplayText><record><rec-number>58</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>58</key></foreign-keys><ref-type name=”Conference Proceedings”>10</ref-type><contributors><authors><author>Edward Ray</author><author>Eugene Schultz</author></authors></contributors><titles><title>Virtualization security</title><secondary-title>Cyber Security and Information Intelligence Research: Cyber Security and Information Intelligence Challenges and Strategies</secondary-title></titles><dates><year>2009</year></dates><urls></urls></record></Cite></EndNote>[3] تعریفی دیگری از مجازی‏سازی ارایه می‏دهد. به این صورت که مجازی‏سازی به فناوری‏هایی دلالت دارد که هدف آن ایجاد یک لایه‏ی انتزاعی بین سخت‏افزارها و نرم‏افزارهایی است که روی آن سخت‏افزارها اجرا می‏شودده بر روی آن ایجاد می‏نمایند. رای مجازی‏سازی را فقط بین سخت‏افزار و نرم‏افزار در نظر گرفته است در صورتی که لایه‏های مجازی‏سازی بین لایه‏های نرم‏افزاری هم قرار می‏گیرند. ماشین مجازی جاوا یک نمونه از این گونه است. در این رساله با تغییر و تکمیل تعریف رای، مجازی‏سازی را به این صورت تعریف می‏نماییم: مجازی‏سازی به فناوری‏هایی دلالت دارد که با ایجاد لایه‏‏های انتزاعی بین لایه‏های مختلفتفاوت معماری سیستم کامپیوتری ایجاد می‏نماید و دو لایه‏ی مجاور را به صورتی که مد نظر ما است به هم می‏نمایاند.ارتباط این لایه‏ها را ساده‏تر و موثرتر می‏نماید. (همیشه ساده‌تر؟؟؟؟)از دیدگاه صوری، مجازی‏بودن با واقعی‏بودن متفاوت است، حال آن‏که ماهیت یا تاثیر یکسانی دارند ولی در دنیای کامپیوتر برنامه‏های کاربردی درک یکسانی از محیط‏های مجازی و واقعی دارند، اگرچه ممکن است این محیط‏ها از نظر صوری کاملا متفاوت باشند. گاهی یک ماشین‏مجازی تصویری غیر واقعی از یک ماشین یا منبع فیزیکی به نمایش می‏گذارد به این معنی که ممکن است ماشین یا منبع مجازی‏سازی شده قابلیت‏هایی کمتر یا بیشتر از نمونه‏ی واقعی داشته باشد. یک سیستم کامپیوتری معمولی نیز از چنین ترفندهایی استفاده می‎‏کند. مثالی از این دست، پیاده‏سازی حافظه مجازی در یک سیستم‏عامل‏ است که اجازه می‏دهد یک پردازه حافظه‏ای بیش از مقداری که سیستم به آن عرضه می‏کند را استفاده کند. حافظه مجازی همچنین امکان می‏دهد که حافظه فیزیکی بین چند صد فرایند به اشتراک گذاشته شود. چند وظیفه‏ای مثالی دیگر از این نوع است که در آن یک پردازنده به روش اشتراک زمانی تقسیم می‏شود تا یک پردازنده‏ی مجازی به هر وظیفه تخصیص دهد. از دیدگاهی دیگر، یک دسته از پردازنده‏های با سرعت متوسط با یکدیگر در یک خوشه قرار می‏گیرند تا یک پردازنده‏ی مجازی با سرعت بالا ایجاد کنند. در دنیای امروزی نمونه‏های بسیار زیادی وجود دارند که از چنین روش‏هایی بهره می‏گیرند. این فناوری‏ها که کمک می‏کند چنین اشیایء مجازی شده‏ای ایجاد کنیم همه نیز در حوزه‏ی نیز مجازی‏سازی قرار می‏گیرند.
تاریخچه‏ی مجازی‏سازیفناوری مجازی‌سازی کاربردهای گسترده و بسیار مهمی در دامنه‏ی گسترده‏ای از زمینه‏هایی نظیر تجمیع سرورکارگزارها، سکوهای محاسباتی امن، پشتیبانی از چند سیستم‏عامل، توسعه و اشکال‏زدایی هسته و مهاجرت پیدا کرده است. اکثر این فناوری‏ها محیط‏های عملیاتی مشابهی را به کاربر نهایی ارایه می‏کنند در حالی که با توجه به سطوح انتزاعی و معماری زیرین با هم متفاوت می‏باشند. مفهوم ماشین‏های مجازی از سال 1960 توسط IBM مطرح شد تا دسترسی همزمان و تعاملی به یک کامپیوتر بزرگ را فراهم آورد ADDIN EN.CITE <EndNote><Cite><Author>Bayles</Author><Year>1996</Year><RecNum>51</RecNum><DisplayText>[4]</DisplayText><record><rec-number>51</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>51</key></foreign-keys><ref-type name=”Report”>27</ref-type><contributors><authors><author>R. U. Bayles</author><author>L. W. Comeau</author><author>R. J. Creasy</author><author>R. J. Adair</author></authors></contributors><titles><title>A Virtual Machine Sys– for the 360/40</title><secondary-title>IBM Corporation</secondary-title></titles><dates><year>1996</year></dates><publisher>Cambridge Scientific Center</publisher><isbn>320</isbn><urls></urls></record></Cite></EndNote>[44]. هر ماشین مجازی نمونه‏ای از ماشین فیزیکی بود به گونه‏ای که کاربران آن تصور می‏کردند که به طور مستقیم به ماشین فیزیکی دسترسی دارند. این کار روشی مناسب و شفاف برای امکان اشتراک منابع و اشتراک زمانی برای سخت‏افزار بسیار گران قیمت بود. هر ماشین مجازی یک کپی کاملا مجزا و حفاظت شده از سیستم زیرین بود. کاربران می‏توانستند نرم‏افزارها را ایجاد، اجرا و تست کنند بدون این که نگران ایجاد مشکل برای سیستم‏هایی باشند که سایر کاربران روی همان کامپیوتر استفاده می‏کردند. بنابراین مجازی‏سازی با ایجاد امکان استفاده‏ی‏ همزمان چندین کاربر از یک سخت‏افزار باعث کاهش هزینه استفاده از سخت‏افزار و بهبود بهره‏وری می‏شد. با ارزان‏تر شدن سخت‏افزار و ظهور سیستم‏های چندپردازندهشی در سال‏های 1970 و 1980 استفاده از فناوریتکنولوژی مجازی‏سازی تقریبا منسوخ شد. ولی با رشد گسترد‏ه‏ی رایانه‏های شخصی های مبتنی بر سخت‏افزار و سیستم‏عامل در سال 1990 ایده‏های مجازی‏سازی مجددا مطرح شدند. در آن زمان کاربرد اصلی ماشین مجازی این بود که امکان اجرای محدوده‏ای از برنامه‏های کاربردی را که اساسا روی سیستم عامل‏ها و سخت‏افزارهای متفاوتی بودند را روی یک ماشین مشخص فراهم می‏کرد.

ناظر ماشین مجازی و ماشین‏های مجازیناظر ماشین مجازییک لایه‏ی مجازی‏سازی، با استفاده از منابع سطح-پایین، یک لایه زیر بنایی فراهم می‏کند تا ماشین‏های مجازی چندگانه‏ای ایجاد کند که مجزا و مستقل هستند. چنین لایه مجازی ناظر ماشین مجازی نامیده می‏شود. ناظر ماشین مجازی شرایطی را به وجود می‏آورد که هر ماشین مجازی قرار گرفته روی آن، گمان می‏کند کنترل سخت‏افزار به عهده دارد. حال آن کنترل سخت‏افزار به عهده‏ی ناظر ماشین مجازی است.مولفه‏ای نرم‏افزاری است که میزبان ماشین‏های مجازی مهمان است. ناظر ماشین مجازی منابع فیزیکی مورد استفاده ماشین‏های مجازی را پنهان می‏کند. به دلیل همین انتزاع می‏تواند چندین ماشین مجازی را روی یک سیستم اجرا کند. شکل 1(2-1) رابطه بین ناظر ماشین مجازی و ماشین‏های مجازی را نشان می‏دهد. یک پردازنده مجازی و سایر نسخه‏های مجازی شده از دستگاه‏های سیستم نظیر دستگاه‏های I/O ، انباره‏، حافظه و غیره. ناظر ماشین مجازی علاوه بر میزبانی ماشین‏های مجازی، آن‏ها را از هم مجزا می‏کند تا مشکلات یک ماشین دیگری را تحت تاثیر قرار ندهد.
کاربردهای مجازی‏سازی
مجازی‏سازی می‏تواند در کاربردهای عملی گوناگونی داشته باشد که به اختصار به آن اشاره می‎شود:
جعبه‏ی شنی ماشین‏های مجازی دربرای ایجاد محیط‏های امن و مجزا برای اجرای برنامه‏های کاربردی بیگانه و مشکوک مفید هستند. تکنولوژی مجازی‏سازی می‏تواند به ایجاد سکوهای محاسباتی امن کمک نماید. اصطلاح جعبه‏ی شنی از بازی کودکان در گودال ماسه اقتباس شده است که در آن کودکان هرکاری بخواهند انجام می‏دهند ولی آسیبی به جایی نمی‏رسانند.
محیط‏های اجرایی چندگانه مجازی‏سازی می‏تواند برای ایجاد محیط‏های اجرایی چندگانه استفاده شود که با ضمانت تخصیص منابع مورد نیاز به هر محیط، کیفیت سرویس را افزایش دهد.
سخت‏افزار مجازیمجازی سی‏سازی می‏تواند سخت‏افزاری ایجاد کند که وجود واقعی ندارد مثلا درایوهای SCSI مجازی، ادپتورهای اترنت مجازی، هاب‏ها و سوییچ‏های اترنت مجازی.
سیستم‏عامل‏های چندگانه همزمانمجازی‏سازی می‏تواند امکان داشتن سیستم‏عامل‏های چندگانه همزمان را فراهم کند که چندین نوع متفاوت از برنامه‏های کاربردی را اجرا کند را فراهم کند..اشکال‏زدایی
مجازی‏سازی کمک می‏کند نرم‏افزارهای پیچیده نظیر سیستم‏عامل یا درایور دستگاه از طریق اجرای آنها روی یک رایانه‏ی تقلید شده با تمام کنترل‏های نرم‏افزاری توسط کاربر اشکال‏زدایی شود.
مهاجرت نرم‏افزارمجازی‏سازی مهاجرت نرم‏افزار را ساده کرده و بنابراین به جابجایییی ‏پذیری کمک می‏کند. مهاجرت خصوصیت مفید و یک توسعه‏ی طبیعی برای سکوهای مجازی‏سازی است که اجازه انتقال ماشین‏های مجازی از یک ماشین فیزیکی به ماشین فیزیکی دیگر را فراهم می‏کند، بدون اندک تعلیق در سرویس‏هایی که روی ماشین‏های مجازی قرار گرفته‏اند. مهاجرت زنده، حالت کاری و حافظه ماشین‏های مجازی را درحالی‏که در حال اجرا هستند در شبکه منتقل می‏کند.
بسته‏ی پیش‏نصب مجازیتعبیهیک بسته‏ی نرم‏افزاری حاوی برنامه کاربردی است که بر روی سیستم‏عامل مناسب خود نصب شده، و تنظیمات آن نیز انجام گردیده، است. و در قالب یک ماشین مجازی ارایه می‏شود. از مزایای آن می‏توان سادگی استفاده، بهینه بودن از نظر نیازمندی‏های نرم‏افزار و قابلیت‏های سیستم‏عامل را نام برد.
تجمیع سرورکارگزارتجمیع بارهای کاری چند ماشین کم بهره بر روی یک ماشین برای کاهش تعداد و تنوع مولفه‏های موجود در محیط مانند: سرورکارگزارها، ابزارهای ذخیره‏سازی، بسترهای ارتباطی، سیستم‏عامل‏ها در نتیجه صرفه‏جویی در سخت‏افزار ، مدیریت و اداره‏ی زیرساخت می‏باشد..
تجمیع سرورکارگزارهاتجمیع سرورکارگزارها به عنوان یکی از ارمغان‏های مهم و کلیدی مجازی‏سازی کاربرد فراوانی در مراکز داده پیدا کرده است. معمولا بهره‏وری منابع سرورکارگزارها در محیط‏های غیر مجازی‏سازی ‏شده بین 5 تا 10 درصد است در حالی که بهره‏وری سخت‏افزار با تجمیع سرورکارگزارها به بالای 50 درصد می‏رسد ADDIN EN.CITE <EndNote><Cite><Author>Uddin</Author><Year>2010</Year><RecNum>4</RecNum><DisplayText>[5]</DisplayText><record><rec-number>4</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>4</key></foreign-keys><ref-type name=”Journal Article”>17</ref-type><contributors><authors><author>M. Uddin</author><author>A. Abdul Rahman</author></authors></contributors><titles><title>Server Consolidation: An Approach to make Data Centers Energy Efficient and Green</title><secondary-title>International Journal of Scientific &amp; Engineering Research</secondary-title></titles><periodical><full-title>International Journal of Scientific &amp; Engineering Research</full-title></periodical><volume>1</volume><number>1</number><dates><year>2010</year><pub-dates><date>October</date></pub-dates></dates><urls></urls></record></Cite></EndNote>[5]. گزارشی از شرکت VMware با بررسی 300000 سرورکارگزار در سراسر جهان در سال 2007 نشان می‏دهد 20% سرورکارگزارها بهره‎وری زیر 0.55/0% دارند و 75% آن‏ها نیز بهره‏وری زییرر 5% دارند ADDIN EN.CITE <EndNote><Cite><Author>virtualization</Author><RecNum>6</RecNum><DisplayText>[6]</DisplayText><record><rec-number>6</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>6</key></foreign-keys><ref-type name=”Journal Article”>17</ref-type><contributors><authors><author>VMware Report server virtualization</author></authors></contributors><titles></titles><dates></dates><urls></urls></record></Cite></EndNote>[6] . همچنین مطالعه‏ای بر روی یک مرکز داده‏ی نمونه، اثر تجمیع سرورکارگزارها را بر مصرف انرژی نشان می‏دهد ADDIN EN.CITE <EndNote><Cite><Year>2010</Year><RecNum>5</RecNum><DisplayText>[7]</DisplayText><record><rec-number>5</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>5</key></foreign-keys><ref-type name=”Journal Article”>17</ref-type><contributors></contributors><titles><title>Using Virtualization to Improve Data Center Efficiency</title></titles><dates><year>2010</year></dates><publisher>Green Grid</publisher><work-type>White Paper</work-type><urls><related-urls><url>http://www.thegreengrid.org</url></related-urls></urls></record></Cite></EndNote>[7]. جدول شماره (2-1) خلاصه‏ی این مطالعه را نمایش می‏دهد.
: بهره‏وه ‏وری کارگزارهاسرورها
همان گونه که در جدول (2-1) مشاهده می‏شود، با تجمیع سرورکارگزارها بهره‏وری به 50 درصد افزایش یافته است و در حدود 87% صرفه‏جویی در مصرف انرژی صورت گرفته است.
مزایا و معایب تجمیع سرورکارگزارها
تجمیع کارگزارها علاوه برگذشته از بهره‏وری انرژی، کاهش تعداد ماشین‏های سخت‏افزاری در یک مرکز داده، کاهش فضای فیزیکی مورد نیاز، نگهداری ساده‏تر ،و کاهش حرارت ناشی از کارکرد ماشین‏های سخت‏افزاری را به دنبال دارد. از طرفی با قرار دادن برنامه‏های کاربردی بر روی سرورکارگزارهای مجازی مجزا، از تاثیر منفی نرم‏افزارها بر یکدیگر جلوگیری می‏شود. از آن‏جا که ماشین‏های مجازی ماهیتی نرم‏افزاری داشتهرند و از سخت‏افزار مستقل می‏باشند، در مقایسه با ماشین‏های فیزیکی به آسانی قابل انتقال به دیگر بسترهای فیزیکی قابل انتقال می‏باشندرا دارند. این به آن مفهوم است که در صورت بروز اشکال در ماشین فیزیکی، ماشین‏های مجازی به راحتی به ماشین فیزیکی دیگر مهاجرت می‏نمایند کرده و به سرویس‏دهی خود ادامه می‏دهند. تهیه نسخه‏ی پشتیبان از ماشین‏های مجازی به آسانی پشتیبان‏گیری ازکپی کردن یک فایل است و بازیافت نسخه‏ی پشتیبان به آسانی اجرای یک برنامه. است. در نتیجه مجازی‏سازی سرورکارگزارها یک بستر قابل اعتماد را نیز برای مدیران مراکز داده ایجاد می‏نماید که به آسانی می‏توانند به مدیریت سرورکارگزارها بپردازند. تجمیع سرورکارگزارها با وجود مزایای غیر قابل انکاری که دارند از معایبی نیز برخوردار است که مواردی از آن‏ها به شرح زیر است:
مقیاس‏پذیری: با افزایش تعداد ماشین‏های مجازی بر روی یک ماشین فیزیکی در ابتدا بهره‏وری منابع به صورت قابل قبولی افزایش پیدا می‏کند، ولی زمانی که تعداد ماشین‏های مجازی بیشتر می‏شود، و یا به عبارت دیگر بار سرورکارگزار افزایش می‏یابد، رشد بهره‏وری کاهش می‏یافتهبد و پارامترهای دیگر دخیل در اندازه‏گیری کارایی سیستم مانند زمان پاسخ به شدت افزایش می‏یابد. هوای و همکاران ADDIN EN.CITE <EndNote><Cite><Author>Lv</Author><Year>2012</Year><RecNum>52</RecNum><DisplayText>[8]</DisplayText><record><rec-number>52</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>52</key></foreign-keys><ref-type name=”Conference Paper”>47</ref-type><contributors><authors><author>H. Lv</author><author>Y. Dong</author><author>J. Duan</author><author>K. Tian</author></authors></contributors><titles><title>Virtualization challenges: a view from server consolidation perspective</title><secondary-title>VEE &apos;12 Proceedings of the 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments</secondary-title></titles><pages>15-26</pages><dates><year>2012</year><pub-dates><date>march</date></pub-dates></dates><pub-location>London, United Kingdom</pub-location><urls></urls></record></Cite></EndNote>[8] دلایل افزایش زمان پاسخ را این ‏گونه بیان می‏نمایند که با افزایش تعداد پردازنده‏های مجازی اختصاص داده شده به ماشین‏های مجازی، سربار مدیریت این پردازنده‏ها توسط ناظر ماشین‏مجازی ناشی افزایش می‏یابد در نتیجه منابع قابل توجهی از میزبان فیزیکی توسط خود ناظر ماشین‏مجازی مصرف می‏شود. به این ترتیب تجمیع سرورکارگزارها با مشکل مقیاس‏پذیری روبرو است. شکل شماره(2-3) این واقعیت را نمایش می‏دهد.
مشکل مقیاس‏پذیری تجمیع سرورکارگزارها[8]همچنین همین مطالعه نشان می‏دهد که در حدود 7% بهره‏وری پردازنده در سیستم‏های تجمیع‏شده، صرف تعویض متن می‏شود.
مدیریت سرورکارگزارها: همان گونه که اشاره شد اگرچه مجازی‏سازی سرورکارگزارها امکانات مدیریتی فوق‏العاده‏ای را برای مدیران مراکز داده فراهم می‏آورد، اما این آسانی کار با ماشین‏های مجازی پدیده‏ای به نام ماشین‏های مجازی هرز را به وجود آورده است ADDIN EN.CITE <EndNote><Cite><Author>Barrett</Author><Year>2006</Year><RecNum>55</RecNum><DisplayText>[9]</DisplayText><record><rec-number>55</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>55</key></foreign-keys><ref-type name=”Electronic Article”>43</ref-type><contributors><authors><author>Alex Barrett</author></authors></contributors><titles><title>VMware users worry about virtual machine sprawl</title></titles><dates><year>2006</year><pub-dates><date>Agust</date></pub-dates></dates><urls><related-urls><url>http://searchservervirtualization.techtarget.com/news/article/0,289142,sid94_gci1209313,00.html</url></related-urls></urls></record></Cite></EndNote>[9]. تجربه نشان داده است که تعداد ماشین‏های مجازی در مراکز داده به مرور زمان افزایش می‏یابد نه از آن جهت که به آن‏ها نیاز هست بلکه به خاطر این ‏که ایجاد و پیکربندی ماشین مجازی در مقایسه با ماشین فیزیکی بسیار آسان و سریع است. به عبارت دیگر کارشناسان مراکز داده به جای این که تعداد ماشین‏ها را در حالت بهینه قرار دهند، برای صرفه‏جویی در زمان و راحتی، حتی برای مقاصد غیر ضروری، بلافاصله یک ماشین مجازی ایجاد نموده از آن استفاده می‏نمایند. به این ترتیب پس از مدتی بستر مجازی، مملو از ماشین‏هایی می‏شود که واقعا نیازی به آن‏ها نیست. وجود این ماشین‏های مجازی هرز، هزینه‏ی زیرساخت مجازی را افزایش می‏دهدداده، و همچنین منابع این زیر ساخت را به هدر می‏دهد.
سطوح مختلف مجازی‏سازیتا قبل از سال 2000 پشتیبانی از مجازی‏سازی در طراحی سخت‏افزارها لحاظ نمی‏شد. هر ماشین سخت‏افزاری یک واسط “ساده” عرضه می‏کرد که فقط می‏توانست یک نمونه از هسته‏ی سیستم عامل را پشتیبانی کند. برای مثال، در یک زمان فقط یک مولفه‏ی نرم‏افزاری در کنترل پردازنده بود و می‏توانست یک دستورالعمل ممتاز را اجرا کند. اجرای دستورالعمل‏های ممتاز برای پردازه‏ها با کمک هسته‏ی سیستم‏عامل ممکن بود. به این ترتیب که هنگامی که یک پردازه می‏خواست یک دستورالعمل ممتاز را اجرا نماید، این درخواست توسط هسته‏ی سیستم‏عامل به تله می‏افتاده، و هسته آن را اجرا می‏کرد. این تکنیک اغلب برای مجازی‏سازی پردازنده کاربرد دارد. پردازنده‏ها شامل دستوراتی هستند که می‏توانند حالت ماشین را تحت تاثیر قرار دهند، نظیر دستورات I/O یا دستوراتی برای اصلاح یا دستکاری ثبات‏های سگمنت، ثبات‏های کنترل پردازنده، پرچم‏ها و غیره. این دستورات حساس نامیده می‏شوند.
معماری یک سیستم قابل مجازی سازی
در سال 1974 پوپک و گلدبرگ نظر خود را در مورد نیازمندی‏های رسمی معماری کامپیوتر قابل مجازی‎سازی بیان کردند ADDIN EN.CITE <EndNote><Cite><Author>Goldberg</Author><Year>1974</Year><RecNum>1</RecNum><DisplayText>[10]</DisplayText><record><rec-number>1</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>1</key></foreign-keys><ref-type name=”Magazine Article”>19</ref-type><contributors><authors><author>G. J. Popek </author><author>R. P. Goldberg</author></authors></contributors><titles><title>Formal requirements for virtualizable third generation architectures</title><secondary-title>Communications of the ACM</secondary-title></titles><pages>412-421</pages><volume>17</volume><number>7</number><dates><year>1974</year><pub-dates><date>July</date></pub-dates></dates><urls></urls></record></Cite></EndNote>[10]. [2] برای هر کامپیوتر یک ناظرمانیتور ماشین مجازی می‏تواند ایجاد شود اگر مجموعه دستورات حساس برای آن کامپیوتر زیرمجموعه‏ای از مجموعه دستورات ممتاز باشد. دستورات ممتاز به دستوراتی گفته می‏شود که فقط زمانی که پردازنده در بالاترین مد امتیاز است اجازه‏ی‏ اجرا دارند. به‏عبارت دیگر، ضروری‏ترین نیازمندی یک معماری کامپیوتری برای اینکه قابل مجازی‏سازی شود این است که دستورات ممتاز باید به تله بیفتند شوند به این معنی که وقتی یک ماشین مجازی مهمان (زمانی‏که روی یک پردازنده به‏طور مستقیم در حال اجراست) تلاش می‏کند که یک دستور ممتاز را اجرا کند، پردازنده متوقف شده و کنترل را به ناظر ماشین مجازی می‏دهد و سپس ناظر ماشین مجازی تصمیم می‏گیرد که دستور را اجرا کند یا نه، یا دستور را به روش‏های دیگری شبیه‏سازی کند. دستورات حساس می‏تو‏انند روی لایه مجازی‏سازی زیرین و بقیه ماشین تاثیر گذاشته، و بنابراین باید برای پیاده‏سازی مجازی‏سازی به صورت صحیح به تله بیفتد. کار لایه مجازی‏سازی (مثلا ناظر ماشین مجازی) این است که حالت ماشین را برای هر یک از موجودیت‏های مستقل نگه داشته و در صورت لزوم این حالت را فقط برای مجموعه‏ای که موجودیت خاصی را نشان می‏دهد به روز رسانی کند. اما موضوع این‏قدر هم ساده نیست. معمول‏‏ترین معماری یعنی x86 کاملا قابل مجازی‏سازی نیست. زیرا مجموعه دستورات حساس زیر مجموعه‏ی مجموعه دستورات ممتاز نیست. یعنی دستورات حساسی وجود دارد که وقتی در مد امتیاز-پایین اجرا می‏شود به‏جای این‏که به تله بیفتد بی‏صدا دچار خرابی می‏شود. پس مجازی‏سازی چنین معماری‏هایی چالشی بیش از آن‏چه به نظر می‏رسد می‏طلبد.
علاوه بر معماری‏ها، مشکلات زیاد دیگری نیز وجود دارد که مجازی‏سازی را مشکل می‏کند. از آنجا که لایه مجازی‏سازی دانش کمی در مورد آن‏چه که درون یک ماشین مجازی اتفاق می‏افتد دارد، برای این لایه، تشخیص این که چه کاری را انجام ندهد مشکل است. مثلا، یک استثنای نبود صفحه که توسط یک سیستم‏عامل مهمان درون یک ماشین مجازی ایجاد می‏شود نباید توسط لایه‏ی مجازی‏سازی اداره شود بلکه باید سیستم‏عامل مهمان خودش آن را مدیریت کند. به طور مشابه، یک لایه مجازی‏سازی در سطح سیستم‏عامل نباید هیچ فراخوان سیستمی را که توسط یکی از پردازه‏های روی ماشین مجازی فرستاده می‏شود، مدیریت کند بلکه باید مدیریت آن را به هسته‏ی سیستم‏عامل مهمان واگذار کند. انجام بهینه‏سازی‏ها در نرم‏افزار مجازی‏سازی نیز دشوار است زیرا نمی‏داند چه موقع یک ماشین مجازی به منابع نیاز ندارد. مثلا برای ناظر ماشین مجازی دشوار است بداند که سیستم عامل مهمان روی یکی از نمونه‏های ماشین مجازی یک رشته‏ی معلق را اجرا می‏کند و به این ترتیب سیکل‏های پردازنده را تلف می‏کند در حالی‏که برای بهبود کارایی می‏تواند به ماشین‏های مجازی دیگر اختصاص داده شود.علاوه بر معماری‏ها، مشکلات زیاد دیگری نیز وجود دارد که مجازی‏سازی را مشکل می‏کند. برای نمونه برای ناظر ماشین مجازی تشخیص این که چه کاری را انجام ندهد مشکل است زیرا دانش کمی در مورد آن‏چه که درون یک ماشین مجازی اتفاق می‏افتد دارد، مثلا، یک استثنای نبود صفحه که توسط یک سیستم‏عامل مهمان درون یک ماشین مجازی ایجاد می‏شود نباید توسط لایه‏ی مجازی‏سازی اداره شود بلکه باید سیستم‏عامل مهمان خودش آن را مدیریت کند. به طور مشابه، یک لایه مجازی‏سازی در سطح سیستم‏عامل نباید هیچ فراخوان سیستمی را که توسط یکی از پردازه‏های روی ماشین مجازی فرستاده می‏شود، مدیریت کند بلکه باید مدیریت آن را به هسته‏ی سیستم‏عامل مهمان واگذار کند. انجام بهینه‏سازی‏ها در نرم‏افزار مجازی‏سازی نیز دشوار است زیرا نمی‏داند چه موقع یک ماشین مجازی به منابع نیاز ندارد. مثلا برای ناظر ماشین مجازی دشوار است بداند که سیستم عامل مهمان روی یکی از نمونه‏های ماشین مجازی یک رشته‏ی معلق را اجرا می‏کند و به این ترتیب سیکل‏های پردازنده را تلف می‏کند در حالی‏که برای بهبود کارایی می‏تواند به ماشین‏های مجازی دیگر اختصاص داده شود.یک ماشین مجازی یک محیط عملیاتی برای برنامه‏های کاربردی سطح کاربر ارایه می‏کند که می‏تواند کتابخانه‏ها، سرویس/واسط فراخوان سیستم، پیکربندی سیستم، پردازه‏هایفرایندهای دیمن ح دیمن و حالت سیستم فایل را شامل شود. مجازی‏سازی می‏تواند در چندین سطح انتزاع پیاده‏سازی شود: سطح مجموعه دستورات، سطح انتزاع سخت‏افزار(HAL)، سطح سیستم عامل (واسط فراخوان سیستم)، واسط کتابخانه سطح-کاربر یا در سطح برنامه کاربردی (همانطور که در شکل (2-4) نمایش داده شده است). سطح انتزاع هر چه باشد پدیده کلی یکی است. به این معنی که با استفاده از تکنیک‏هایی منابع سطح پایین را تقسیم می‏شود و به صورت شفاف به چند ماشین مجازی در سطح بالا نگاشت می‏گردد.

سطوح انتزاعی مجازی‏سازیمنظور از مجازی‏سازی در سطح معماری مجموعه دستور (ISA)، نمونه‏سازی مجموعه دستور است. برای مثال، نمونه‏ساز x86 روی پردازنده اسپارکس می‏تواند هر برنامه کاربردی x86 را اجرا کند بنابراین برنامه‏ی کاربردی را با حیله دچار این توهم می‏کند که روی یک پردازنده واقعی اجرا می‏شود. برای رسیدن به این هدف، یک نمونه‏ساز باید قادر باشد ISA مهمان (x86 در اینجا) را به ISA میزبان (اسپارکس) ترجمه کند.
لایه‏ی مجازی‏سازی سطح سخت‏افزار بین ماشین واقعی و نمونه‏ساز قرار می‏گیرد. ماشین مجازی محیطی است که توسط ناظر ماشین مجازی ایجاد می‏شود. خود ناظر ماشین مجازی، نرم‏افزاری است که بین سخت‏افزار لخت و سیستم‏عامل قرار می‏گیرد و یک دید مجازی‏ از کل سخت‏افزار را به سیستم‏عامل مهمان می‏دهد. ناظر ماشین مجازی می‏تواند چندین ماشین مجازی روی یک ماشین سخت‏افزاری ایجاد کند. در حالی‏که یک نمونه‏ساز یک لایه کامل بین سیستم عامل یا برنامه‏های کاربردی و سخت‏افزار ایجاد می‏کند، ناظر ماشین مجازی یک یا چند ماشین مجازی را مدیریت می‏کند که هر ماشین مجازی به یک سیستم عامل یا برنامه کاربردی امکان می‏دهد که باور کند گویا روی یک محیط نرمال و مستقیما روی سخت‏افزار اجرا می‏شود.
مجازی‏سازی در سطح سیستم عامل در حقیقت ماژولی است که بین هسته و فضای کاربر قرار می‏گیرد و فراخوانی سیستم را مجازی ‏سازی می‏کند. از آن‏جا که احضار فراخوان سیستم تنها راه ارتباط بین فضای کاربر و فضای هسته است نرم‏افزار مجازی سازی باید بتواند با مدیریت این واسط پردازه‏های فرایندهای فضای کاربر را به‏طور کامل کنترل کند.
اکثر برنامه‏های کاربردی برای پیاده‏سازی منطق خود به‏جای فراخوان‏های مستقیم سیستم از مجموعه APIهای صادر شده از کتابخانه‏های سطح- کاربر استفاده می‏کنند. به همین دلیل در بیشتر سیستم‏ها مجموعه APIهای به خوبی- مستند شده و روش‏های خوش-‏تعریفی برای بدست آوردن آن‏ها ایجاد می‏شودکنند. چنین واسطی داوطلب دیگری برای مجازی‏سازی است. مجازی‏سازی در واسط کتابخانه با کنترل لینک ارتباطی بین برنامه‏های کاربردی و بقیه‏ی سیستم از طریق قلاب‏هایAPI امکان‏پذیر است. به جای این می‏توان پیاده‏سازی‏های متفاوتی را که همگی از یک مجموعه از API استفاده می‏کنند و در عین حال یک سیستم در حال اجرا دارند را نمایش داد. نرم‏افزار ADDIN EN.CITE <EndNote><Cite><RecNum>53</RecNum><DisplayText>[11]</DisplayText><record><rec-number>53</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>53</key></foreign-keys><ref-type name=”Web Page”>12</ref-type><contributors><authors><author>Wine Project</author></authors></contributors><titles></titles><volume>2012</volume><number>August</number><dates><year>2012</year></dates><urls><related-urls><url>http://www.winehq.org/</url></related-urls></urls></record></Cite></EndNote>[11]Wine کار مشابهی برای پشتیبانی برنامه‏های کاربردی ویندوز روی Unix/X انجام داده است.
مجازی‏ی سازی در سطح برنامه کاربردی اندکی متفاوت است. یعنی به این صورت نیست که یک لایه مجازی را در میانه قرار دهند، بلکه یک لایه مجازی را به‏عنوان یک برنامه کاربردی پیاده‏سازی می‏کنند که در نهایت یک ماشین مجازی ایجاد می‏کند. ماشین مجازی ایجاد شده می‏تواند به سادگی یک مفسر زبان یا به پیچیدگی یک JVM باشد.
فناوریتکنولوژی‏های مجازی‏سازی ذکر شده از نظر کارایی، انعطاف‏پذیری، راحتی استفاده، مصرف منابع و مقیاس‏پذیری با هم متفاوت هستند و در عمل نیز کاربردهای متفاوت دارند. به عنوان مثال، نمونه‏سازهای مجموعه دستور که در سطح ISA عمل می‏کنند بار زیادی را تحمیل می‏نمایند که استفاده از آن‏ها را به صورت دایمی غیرعملی می‏سازد،. اما در اشکال‏زدایی و یادگیری بسیار مفید هستند. اکثر ماشین‏های مجازی تجاری که در سطح HAL کار می‏کنند مثلا VMware این قابلیت انعطاف را به سیستم می‏دهد که با ارایه‏ی واسط کامل ماشین، سیستم‏عامل‏های متفاوت یا نسخه‏های مختلفی از یک سیستم‏عامل روی یک ماشین اجرا کند. این حالت منابع بسیار زیادی می‏طلبد. زمانی‏که چنین انعطاف‏پذیری نیاز نباشد ماشین‏های مجازی سطح سیستم‏عامل بسیار مفید هستند. در این حالت اگرچه سیستم‏عامل در تمام ماشین‏های مجازی مانند سیستم‏عامل زیرین به نمایش ‏گذاشته می‏شود ولی نیازمندی به منابع بسیار کم، کارایی بسیار بهتر و دستکاری (مثلا ایجاد) بسیار سریعتر است. فناوریتکنولوژی‏های مجازی‏سازی سطح- کتابخانه بی‏نهایت سبک-‏وزن هستند و می‏توانند به ایجاد یک زیر سیستم کامل زیر همان ساختار کمک کند(مثلا Win32روی Unix) . مجازی‏سازی سطح- برنامه کاربردی در محاسبات سیار و ایجاد زیرساخت‏های محاسباتی مورد اطمینان کاربردهایی پیدا کرده‏اند.
مجازی‏سازی در سطح معماری مجموعه دستور مجازی‏سازی در سطح معماری مجموعه دستور، نمونه‏سازی کامل مجموعه دستورات معماری به صورت نرم‏افزاری است. یک کامپیوتر نوعی شامل پردازنده‏ها، تراشه‏های حافظه، گذرگاه‏ها، درایوهای سخت، کنترل‏گرهای دیسک، تایمر، دستگاه‏های چندگانه I/O و غیره است. نمونه‏ساز تلاش می‏کند که دستورهای صادره از ماشین مهمان را با ترجمه آن‏ها به مجموعه‏ای از دستورات محلی و اجرای آن‏ها روی سخت‏افزار موجود اجرا کند. این دستورات شامل دستورات یک پردازنده نوعی (جمع، تفریق، پرش و غیره) و دستورات خاص ورودی/خروجی برای دستگاه‏ها (مثلا IN/OUT) هستند. نمونه‏ساز برای تقلید موفق یک کامپیوتر واقعی باید هر چیزی را که یک کامپیوتر واقعی انجام می‏دهد نظیر تراشه‏های ROM، راه‏اندازی مجدد کردن و سوییچ کردن روی آن را تقلیدنمونه‏سازی می‏کند.
اگرچه این معماری ماشین مجازی از نظر سادگی و پایداریقدرت خوب کار می‏کند ولی مسایل خود را دارد. از جنبه مثبت، معماری در حالی‏که با چندین سکو سرو کار دارد راحتی پیاده‏سازی را فراهم می‏کند. با توجه به این‏که نمونه‏ساز با ترجمه‏ی دستورات سکوی مهمان به سکوی میزبان کار می‏کند زمانی‏که معماری سکوی مهمان تغییر می‏کند و روشی برای انجام همان کار با دستورات موجود سکوی میزبان وجود دارد به راحتی وفق داده می‏شود. با این روش، هیچ تاکیدی برای پیوند محکم بین سکوی مهمان و میزبان وجود ندارد که ایجاد زیرساختی را ممکن می‏سازد که ماشین‏های مجازی می‏توانند بر اساس آن ساخته شوند مثلا x86 بر روی سکوهایی نظیر x86، اسپارکس، آلفا و غیره. به هرحال قابلیت حمل به بهای کارایی به دست می‏آید. با توجه به این که هر دستورالعمل صادره از طریق کامپیوتر تقلید شده باید در نرم‏افزار تفسیر شود، کارایی چنین رویکردهایی چندان مطلوب نیست. سه نمونه از چنین مجازی‏سازی‏هایی عبارتنداز:
BochsBochs ADDIN EN.CITE <EndNote><Cite><RecNum>54</RecNum><DisplayText>[12]</DisplayText><record><rec-number>54</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>54</key></foreign-keys><ref-type name=”Web Page”>12</ref-type><contributors></contributors><titles><title>Bochs</title></titles><volume>2012</volume><number>August</number><dates><year>2012</year></dates><urls><related-urls><url>http://bochs.sourceforge.net/</url></related-urls></urls></record></Cite></EndNote>[12] یک نمونه‏ساز x86 PC منبع باز است که توسط گروهی به رهبری کویل لاوتن و به زبانC++ نوشته شده است. Bochs یک نمونه‏ساز با قابلیت حمل بالاست که می‏تواند روی مشهورترین سکوهایی که شامل X86، PowerPC، Alpha، Sun و MIPS است اجرا شوده و می‏تواند برای تقلید بیشتر نسخه‏های ماشین‏های x86 شامل 386، 486، پنتیوم، پنتیوم پرو یا AMD64 CPU شامل دستورات انتخابی MMX، SSE، SSE2و 3DNow کامپایل شود. Bochs تمام محیط یک PC از دستورالعمل‏های روشن شدن گرفته تا ماوس و کارت شبکه را نمونه‏سازی می‏کند. به طوری که نرم‏افزاری که در داخل آن اجرا می‏شود گمان می‏کند بر روی یک سخت‏افزار PC در حال اجرا است. Bochs دایما دستورالعمل‏های x86 را تقلیید می‏کند این بدان معنی است که تک تک دستورالعمل‏ها تقلید می‏شوند که نتیجه‏ی آن سر بار دایمی و زیاد این مجازی‏ساز می‏باشد. هنگامی که کلیدی در ماشین مجازی Bochs فشرده می‏شود، این رویداد به نمونه‏ی‏ شبیه‏سازی شده‏ی صفحه‏کلید ارسال می‏شود و این نمونه رویداد را برای میزبان ترجمه می‏نماید. اگرچه عملکرد Bochs ببسیار کند است ولی امکاناتی را فراهم می‏آورد که در سطوح دیگر مجازی‏سازی فراهم نمی‏شود. به عنوان نمونه Bochs امکان اجرای نرم‏افزارهای مبتنی بر معماری x86 را بر روی سکوهای غیرx86 فراهم می‏آورد. همچنین با توجه به متن باز بودن آن امکان اشکال‏زدایی سیستم‏عامل‏های جدید در Bochs فراهم است. در دنیای صنعتی از Bochs برای اجرای نرم‏افزارهای قدیمی بر روی سخت‏افزارهای مدرن استفاده می‏شود.
BIRDBIRD [5] ADDIN EN.CITE <EndNote><Cite><Author>Chiueh</Author><Year>2005</Year><RecNum>75</RecNum><DisplayText>[13]</DisplayText><record><rec-number>75</rec-number><foreign-keys><key app=”EN” db-id=”sfsx05ppmsx0x2e99v5pvxdmt2ppttsz9wed”>75</key></foreign-keys><ref-type name=”Journal Article”>17</ref-type><contributors><authors><author>Tzi-cker Chiueh</author><author>Wei Li</author><author>Yanjun Wu</author><author>Susanta Nanda</author><author>Lap-Chung Lam </author></authors></contributors><titles><title>Binary Interpretation using Runtime Disassembly</title></titles><dates><year>2005</year></dates><urls></urls></record></Cite></EndNote>[13] یک موتور مفسر برای سکوهای x86 د x86 های دودویی است که در حال حاضر فقط x86 را به عنوان ISA میزبان پشتیبانی می‏کند و هدف توسعه به سایر معماری‏ها را نیز در پیش دارد. BIRD از شباهت بین معماری‏ها و tries بهره می‏گیرد تا تعداد بیشتری دستور را روی سخت‏افزار بومی اجرا کند. تمام دستورات دیگر با تقلید نرم‏افزار پشتیبانی می‏شوند. BIRD جدا از تفسیر، ابزارهایی برای تحلیل دودویی و نوشتن مجدد دودویی فراهم می‏کند که برای رفع آسیب‏های امنیتی و بهینه‏سازی کد مفید هستند. BIRD تکنیک‏های تحلیل و ترجمه ایستا و پویا را برای تقلید کارآمد برنامه‏های مبتنی بر x86 ترکیب می‏کند.
مجازی‏سازی در سطح انتزاع سخت‏افزارمجازی‏سازی در HAL از شباهت معماری سکوهای میزبان و مهمان استفاده می‏کند تا بار عملیات تفسیر را کاهش دهد. بیشتر نمونه‏سازهای PC تجاری امروزی از این تکنیک مجازی‏سازی روی سکوهای x86 معروف استفاده می‏‏کنند تا استفاده از آن را عملی و کارا کنند. تکنیک‏های مجازی‏سازی کمک می‏کنند تا منابع مجازی را به منابع فیزیکی نگاشت کرده، از سخت‏افزار محلی برای محاسبات در ماشین مجازی استفاده شودکنیم. وقتی‏که ماشین تقلید شده نیاز دارد با منابع فیزیکی بحرانی تعامل کند، شبیه‏ساز کنترل را به دست می‏گیرد و به طور مناسب منابع را تسهیم می‏کند.
برای این‏که چنین فناوری مجازی‏سازی به‏طور مناسب کار کند، ماشین مجازی باید بتواند اجرای هر دستور ممتاز شده را در تله انداخته، و آن را برای رسیدگی به ناظر زیرین ارسال کندپاس دهد، زیرا در محیط یک ناظر و چندین ماشین مجازی وجود دارد که هر کدام سیستم‏عامل در حال اجرای خود را دارند ممکن است بخواهند دستورات ممتاز خود را صادر کرده و توجه پردازندهCPU را به خود جلب کند. زمانی‏که در طول اجرای دستور ممتاز به‏جای تولید استثنا و بروز اتفاقات ناخواسته یک تله اتفاق می‏افتد دستور به ناظر ماشین مجازی ارسال می‏شود. به این ترتیب ناظر، کنترل کامل ماشین را در دست می‏گیرد و هر ماشین مجازی را به‏طور مجزا نگه‏ داشته می‏شود. بعد از این کار ناظر یا دستور را روی پردازنده اجرا می‏کند یا نتایج آن را تقلید کرده و به ماشین مجازی بر می‏گرداند. با همه‏ی این توصیفات همان گونه که گفته شد مشهورحبوب‏ترین سکو،x86، به طور کامل قابل مجازی‏سازی نیست به‏عنوان مثال، دستورات ناظر(ممتاز) خاص زمانی‏که با امتیاز ناکافی اجرا می‏شوند به‏جای این‏که موجب تله مناسب شوند بی‏صدا دچار شکست می‏شوند. بنابراین تکنیک مجازی‏سازی در زمان نقص اجرای دستور برای انتقالپاس دادن کنترل به ناظر ماشین مجازی باید مقدار کار اضافی انجام دهد. بیشتر نمونه‏سازهای تجاری برای غلبه بر چنین مسایلی از تکنیک‏هایی نظیر پویش کد و نوشتن مجدد دستور پویا استفاده می‏کنند. در این بخش، تکنیک‏هایی که توسط تعدادی از مقلدهای PC تجاری برای ایجاد ماشین‏های مجازی مناسب و کارا استفاده می‏شوند و سایر ویژگی‏ها و کاستی‏های آن‏ها را بررسی می‏کنیم.

ساختار ماشین مجازی مستقلVMWareVMware یکی از شرکت‏های بزرگ در زمینه‏ی تولید نرم‏افزارهای مجازی‏سازی می‏باشد. دو گونه از ناظرهای ماشین مجازی تولیدی این شرکت به نام‏های VMware ESX و VMware workstation بیشتر مورد نظر می‏باشند که به آن‏ها اشاره خواهد شد.
ناظر ماشین مجازی می‏تواند مستقل یا میزبانی باشد. شکل شماره (52-25) معماری یک ناظر ماشین مجازی مستقل را نمایش می‏دهد. ناظر ماشین مستقل مستقیما بر روی سخت‏افزار نصب می‏شود. این نوع ناظر ماشین مجازی همانند یک سیستم‏عامل نیاز برای ارتباط با اجزای سخت‏افزاری نیاز به گردانندهدرایور دارد. به همین دلیل این ناظران ماشین مجازی در پشتیبانی از سخت‏افزارهای مختلف محدودیت دارند و معمولا بر روی سرورکارگزارها نصب می‏شوند. VMware ESX یک نمونه از این ناظران ماشین مجازی می‏باشد. ناظر ماشین مجازی میزبانی به ناظری اطلاق می‏شود که به عنوان یک نرم‏افزار بر روی یک سیستم‏عامل میزبان نصب می‏شود.( شکل شماره(6-2)) شماتیکی از این نوع ناظر ماشین مجازی را نشان می‏دهد. این نوع ناظر ماشین مجازی از امکانات سیستم‏عامل میزبان مانند مدیریت حافظه، زمان‏بندی پردازه‏ها، گردانندهدرایور‏ها و مدیریت منابع استفاده می‏نمایند. VMware Workstation یک نمونه از این نوع ناظر است.

ساختار ماشین مجازی میزبانیبرای فهم چگونگی عملکرد VMware Workstation نخست باید مروری بر معماری x86 داشته باشیم. در این معماری مکانیسم حفاظتی، 3سه سطح عملیاتی فراهم می‏آورد که از صفر0 تا سه3. نام گرفته‏اند. به این سطوح اصطلاحا حلقه‏ نیز گفته می‏شود. طبق این معماری، سیستم‏عامل و سرویس‏های هسته در حلقه‏ی شماره‏ی صفر 0 و گرداننده‏هادرایورها در حلقه‏های شماره‏ی 1یک و دو2 و در نهایت نرم‏افزارهای کاربردی در حلقه‏ی شماره‏ی سه3 اجرا می‎‏شوند، ولیلی در عمل سیسیستم‏عامل و گرداننده‏هادرایورها در حلقه‏ی صفر0 و نرم‏افزارهای کاربردی در حلقه‏ی سه3 اجرا ممی‏ی‏شوند. دستورالعمل‏های ممتاز فقط در حلقه‏ی شماره 0 اجازه‏ی اجرا دارند و اجرای آن‏ها در حلقه‏های دیگر با ممانعت سخت‏افزار مواجه می‏شود.
VMware Workstation از 3سه جز تشکیل شده است. درایور VMX و ناظر ماشین مجازی در حلقه‏ی صفر اجرا می‏شوند و VMapp در حلقه‏ی شماره 3سه اجرا می‏شود. پس از اجرای VMapp، با کمک درایور VMX ناظر ماشین مجازی نیز در حافظه بارگذاری می‏شود و به این ترتیب امکان اجرای دستورات در حلقه‏ی صفر0 را فراهم می‏شود. سیستم‏عامل میزبان از وجود VMapp در حلقه‏ی 3سه و VMX در حلقه‏ی صفر0 آگاه است ولی در مورد ناظر ماشین مجازی مقیم در حافظه آگاهی ندارد. به این ترتیب دو دنیای متقاوت بر روی یک سخت‏افزار ایجاد می‏شود. یکی دنیای سیستم‏عامل میزبان و دیگری دنیای ناظر ماشین مجازی.
در خواست‏های پردازنده و حافظه در ماشین‏های مجازی از طریق ناظر مستقیما روی سخت‏افزار اجرا می‏شود، ولی درخواست‏های ورودی/خروجی نخست به ناظر ارجاع می‏شود و ناظر این درخواست را به VMapp می‏فرستد. همان گونه که به آن اشاره شد، VMapp در حلقه‏ی 3سه و در دنیای سیستم‏عامل میزبان قرار دارد. درخواست‏ها از طریق VMapp به سیستم‏عامل میزبان ارسال می‏شود و نتایج آن به VMapp باز می‏گردد. سپس VMapp این نتایج را به ناظر انتقال می‏دهد و ناظر نیز پاسخ‏های مناسب را به ماشین مجازی ارسال می‏نماید. شکل (2-7) این فرایند را نمایش می‏دهد.

معماری VMware Workstationاز آن‏جا که نسخه‏ی ناظر ماشین مجازی VMware ESX مستقیما بر روی سخت‏افزار نصب می‏شود،. تمام وظایف سیستم‏عامل میزبان را نیز باید به دوش بکشد. یعنی این که مدیریت منابع، ارتباط با وسایل ورودی خروجی، پشتیبانی از سخت‏افزار و … همه به عهده‏ی ناظر است. علاوه بر آن، این ناظر یک سوییچ مجازی نیز در اختیار کاربران قرار می‏دهد که به کمک آن ماشین‏های مجازی می‏تواننداز طریق این سوییچ با خود و دنیای بیرون از VMware ESX ارتباط شبکه‏ای داشته باشند. شکل(2-8) معماری VMware ESX را نمایش می‏دهد.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *