مجازیسازی (Virtualization)
توضیحات
در جلسه شانزدهم درس سیستمعامل پیشرفته دکتر حقیقت که از مهمترین دروس تخصصی آزمون دکترای مهندسی کامپیوتر در گرایش نرمافزار و گرایش شبکه و رایانش است، ادامه فصل سوم این درس با عنوان «فرایندها» تدریس میشود. موضوع این جلسه مجازیسازی (Virtualization) است. ابتدا سه نوع هایپروایزر (Hypervisor) یا VMM (Virtual Machine Manager) مورد بحث و بررسی قرار گرفته و تفاوتها و کاربردهای هر یک مطرح میشوند. اول از همه Type 0 Hypervisor شرح داده میشود که در Firmware سرورهای بزرگ IBM و Oracle تعبیه میشوند. سپس Type 1 Hypervisor ارائه میشوند که شبه سيستمعاملی هستند و بر روی سختافزار خام كامپيوتر را Boot كرده و سپس به ايجاد ماشينهای مجازی مجزا و مستقل برای اجرای چند سيستم عامل میپردازند. بر خلاف Hypervisor نوع 2 شركت VMWare، كه بر روی يك سيستم عامل ميزبان مثل Windows اجرا میشد، VMMهايی مانند VMWare ESXو Cirix XenServer و Joyent SmartOS ديگر بر روی سيستمعامل ميزبان اجرا نمیشوند، بلكه خودشان به گونهای شبهسيستمعامل ميزبان محسوب میشوند كه خدمات و مديريت منابع را برای ماشينهای مجازی فراهم میكنند. پس از آن Type 2 Hypervisor مطرح میشوند که این نوع ازVMMها(شبه)برنامههای كاربردی خاصی هستند كه بر روی يک سيستم عامل ميزبان معمولی مثل Windows اجرا شده و به ساخت و اداره ماشين مجازی میپردازند. مثلاً VMware Workstation و Fusion و Parallels Desktop و نيز Oracle Virtual Box از اين دستهاند. در ادامه پارا-مجازی سازی (Paravirtualization) ارائه میشود که تكنيكی است كه در آن سيستم عامل ميهمان به گونهای تغيير میكند كه با VMMهمكاری نمايد تا كارآيی بالاتری حاصل شود. بعد از آن مجازی سازی محيط برنامه نويسی (Programming-environment Virtualization) ارائه میگردد که تكنيكی است كه در آن VMMها سختافزار واقعی را مجازی سازی نمیكنند و اصلاً قصد اجرای يک سيستمعامل ميهمان را ندارند، بلكه با هدف قابليت حمل (Portability) برنامهها بر روی ماشينهای گوناگون با معماری سختافزاری و سيستمعاملهای مختلف، يک سيستم زمان اجرای (Runtime System) مجازی بهينه را ايجاد میكنند و بر روی سيستمعامل مقصد نصب و اجرا میكنند تا برنامه كامپايل شده برای CPU واقعی يا فرضی مبدأ بتواند بر روی بستر متفاوت مقصد نيز اجرا شود. اين ويژگی را مستقل بودن از بستر (Platform Independent) نيز میگويند. اين فناوری ابتدا توسط Oracle Java و بعد توسط Microsoft .Net ارائه شد. سپس Emulation و Virtualization با هم مقایسه میشوند تا دانشجویان مفهوم همانند سازی را درک نمایند. برابرسازی يا همانندسازی (Emulation) شبيهسازی سختافزار يک كامپيوتر در نرمافزار است. اين شبيهسازی نرمافزاری وقتی مورد استفاده قرار میگيرد كه بخواهيم برنامههای كامپايل شده برای CPUمبدأ را عيناً بر روی CPU مقصد با معماری و مجموعه دستورالعملهای متفاوت به اجرا در آوريم. بعد از آن جداسازی و بازداری برنامههای کاربردی (Application Containment) مورد بررسی قرار میگیرد. اين تكنيک در واقع مجازیسازی ماشين محسوب نمیشود بلكه ويژگیهايی شبيه مجازیسازی را فراهم میكند تا برنامههای كاربردی را از سيستم عامل جدا و تفکیک (Segregation) نمايد (مثل Docker). در انتها چهار نوع مختلف از واسط ها در چهار سطح متفاوت معماری ماشین مورد مطالعه قرار میگیرند.