سیستم مجازی در سیستم عامل
سیستم عامل VM بر روی سیستمهای IBM بهترین مثال از مفهوم ماشین مجازی است . قلب سیستم که به
مانیتور ماشین مجازی(Virual Machine Monitor) معروف است ، بر روی سخت افزار عریانی اجراء شده و چند برنامگی را پدید میآورد، این
مانیتور مجازی را در لایه بالاتر فراهم میسازد.
این ماشین های مجازی برای کاربران مشابه یک نسخه از سخت افزار عریان هستند که دارای مودهای کابر و هسته ،
I/O ، وقفهها و چیزهای دیگر «ماشین حقیقی» میباشند.
به هر کاربر ماشین مجازی خودش داده میشود و او میتواند هر یک از سیستم عاملها یا بستههای نرم افزاری موجود را روی ماشین خودش اجراء کند.
هر کاربر یک برنامه(Conversational Monitor System) مخصوص به خود را دارد که یک سیستم عامل تک کاربره محاورهای است .
مزایای این ماشین مجازی عبارتند از:
- در این سیستم دو وظیفه اصلی چند برنامگی و ایجاد واسطه راحت(مستقل از سخت افزار ) از یکدیگر مجزا شدهاند . مانیتور ماشین مجازی وظیفه چند برنامگی را بر عهده داردو لایه بالای آن وظیفه ایجاد واسطه کاربر با سخت افزار را بر عهده دارد. لذا هریک از این بخشها سادهتر شده و از قابلیت انعطاف بیشتری برخوردارند.
- هر ماشین مجازی از سایر ماشین ها کاملاً جداست . بنابراین هیچ مشکل امنیتی وجود نخواهد داشت و برنامههای کاربران تداخلی با همدیگر ندارند.
- از آنجا که هر ماشین مجازی کاملاً مشابه سخت افزار واقعی است ، هر یک از آنها میتوانند هر سیستم عاملی را مستقلاً اجراء کند. این امر همچنین باعث میشود مراحل تحقیق و توسعه سیستم عاملها راحت تر صورت بگیرد، چرا که دیگر سازندگان سیستم عامل برای تست کردن سیستم عامل تولیدی جدید لازم نیست کل کامپیوتر را در اختیار داشته باشند.
ایده ماشینهای مجازی امروزه نیز جهت رفع مشکلات عدم سازگاری گسترش زیادی یافته است . به عنوان مثال شرکتهای میکروسیستم یا شرکتDEC که کامپیوترهای غیر intel را میسازند مایلند که مشتریهایشان بتوانند برنامه های
DOS (تحت intel) را نیز اجراء کنند. برای این کار یک ماشین مجازی اینتل بر روی پردازنده خود پدید میآورند.
در این حال ماشین مجازی دستورات اینتل را به دستورات پردازنده جدید تبدیل میکند. یا مثلاً کامپیوترpower PC شامل ماشین مجازی Motorola 6800 میباشد . مثال دیگر اجراء شدن DOS تحت محیط ویندوز است،پردازندههای 386 به بعد دارای یک مد مجازی هستند. که میتوانند چندین برنامه تحت DOS تحت ویندوز نیز اجراء شوند (البته به شرطی که دستورالعملهای عادی را اجراء کنندو مستقیماً با
پورتهای مهم سر و کار نداشته باشند.).
مثال دیگر از این مفهوم ماشین مجازی زبان
جاوا میباشد.
کامپایلرزبان جاوا توسط شرکت sun طراحی شده است یک خروجی
بایت کد(byte code) تولید میکند. این بایت کدها دستوراتی هستند که بر روی ماشین مجازی جاوا(JVM) اجراء میشوند. جهت اجرای برنامههای جاوا در یک ماشین ، آن کامپیوتر میبایست دارای یک JVM باشد.
امروزه JVM بر روی بسیاری از انواع کامپیوترها (PC،
مکینتاش، SUN مینی کامپیوترها و
مین فریمها) وجود دارد . JVM همچنین در
Microsoft Explorer ویندوز پیاده سازی شده است . بدین ترتیب برنامههایی که به زبان java نوشته شدهاند به راحتی بر روی انواع کامپیوترها اجراء میشوند. فقط کافی است بایت کدها را روی آن ماشین کامپایل کرد. بدیهی است به علت نیاز به کامپایل شدن بایت کدها ، برنامه های جاوا سرعت کمتری نسبت به برنامههایی نظیر
C دارد .
برنامه های C توسط کامپایلر بومی یک کامپیوتر ، برای یک بار تبدیل به زبان ماشین آن کامپیوتر میگردد. پس خروجی زبان ماشین کامپایلر c از یک نوع کامپیوتر به کامپیوتر دیگر متفاوت است ولی بایت کدهای خروجی جاوا برای همه ماشین ها یکسان است.
پیوندهای خارجی
همچنین ببینید