بایگانی برچسب‌ها : فرایند

ماشین مجازی Virtual Machine

ماشین مجازی یا Virtual Machine چیست؟

ماشین مجازی (Virtual Machine به اختصار VM) یک همسان‌سازی از سیستم‌های رایانه‌ای است. در واقع ماشین‌های مجازی می‌توانند رفتار و عملکرد یک رایانه فیزیکی را تقلید کنند. معمولا این همسان سازی حاصل ترکیبی از نرم‌افزار و سخت‌افزارهای ویژه می‌باشد.

به عبارت ساده‌تر، ماشین مجازی یک کامپیوتر نرم‌افزاری – سخت‌افزاری است که مشابه یک کامپیوتر فیزیکی می‌تواند برنامه یا یک سیستم عامل را اجرا کند. سابقه ماشین‌های مجازی به دهه 1960 میلادی برمی‌گردد.

اغلب ماشین‌های مجازی براساس یک معماری رایانه‌ای طراحی می‌شوند اما برخی از آنها قادر هستند رفتار معماری‌های مختلف را همسان‌سازی کنند و به این ترتیب از عهده اجرای نرم افزارها و سیستم عامل‌های طراحی شده برای چند معماری مختلف برمی‌آیند.

به نرم‌افزار یا سخت‌افزاری که امکان ایجاد و اجرای یک ماشین مجازی را فراهم می‌کند Hypervisor (هایپروایزر) گفته می‌شود. سیستم فیزیکی که ماشین مجازی روی آن اجرا می‌شود ماشین میزبان (Host Machine) نامیده می‌شود و هر ماشین مجازی را نیز یک ماشین مهمان (Guest Machine) می‌نامند.

انواع ماشین‌های مجازی و کاربردهای آن‌ها

شاید بتوان گفت محرک اصلی برای شکل‌گیری ماشین‌های مجازی، تمایل کاربران به اجرای همزمان چند سیستم عامل بوده است. ماشین‌های مجازی سیستمی (System Virtual Machine) که تحت عنوان ماشین‌های با مجازی‌سازی کامل (Full Virtualization) نیز شناخته می‌شوند با تقلید رفتار یک ماشین واقعی می‌توانند یک سیستم عامل کامل را اجرا کنند. در این مدل با روش‌های مختلف و بهره‌گیری از تکنیک‌های اشتراک زمانی (Time Sharing) امکان ایجاد ماشین‌های مجازی مجزا (مدیریت و اشتراک منابع سخت‌افزاری یک ماشین واقعی مابین VM ها) فراهم می‌شود. این نوع ماشین‌های مجازی را می‌توان توسعه‌ای از حافظه مجازی (Virtual Memory) به شمار آورد و در کنار کاربردهایی همچون امکان اجرای همزمان چند سیستم عامل، اشکال‌زدایی آسانتر و بوت سریعتر هنگام توسعه یک سیستم عامل، به منظور تست نرم‌افزارهای در حال توسعه روی سیستم‌های مختلف و هم‌چنین نصب نرم‌افزارهایی که هنوز در مراحل آزمایشی به سر می‌برند یا عملکردشان به طور کامل شناخته شده نیست نیز استفاده می‌شود. گفتنی است مجازی سازی با کمک سخت افزار (Hardware-assisted Virtualization) رویکردی است که در آن امکان مجازی سازی کامل و کارامد با بهره‌گیری از قابلیت‌های سخت‌افزار میزبان (به خصوص پردازنده) مهیا می‌شود. VMware Workstation و Oracle VM VirtualBox دو نمونه از مشهورترین هایپروایزرهای این دسته به شمار می‌روند.

ماشین مجازی فرایندی (Process Virtual Machine) که به ماشین مجازی اپلیکیشن نیز مشهور است گونه دیگری از VM هاست که مشابه یک اپلیکیشن معمولی در سیستم عامل رایانه میزبان اجرا می‌شود. هدف از طراحی این ماشین‌ها ایجاد محیطی مستقل از پلتفرم است که امکان اجرای یک برنامه روی هر پلتفرمی را فراهم می‌آورد. این VM ها بر اساس یک مفسر ساخته می‌شوند و از مشهورترین آن‌ها می‌توان به ماشین مجازی جاوا (Java Virtual Machine) و Common Language Runtime اشاره نمود که به ترتیب برای اجرای برنامه‌های جاوا و برنامه‌های مبتنی بر .Net Framework طراحی شده‌اند.

ماشین مجازی Virtual Machine
نمایی از یک ماشین مجازی در حال اجرای Windows 7 و نرم افزار Mozilla Firefox – همانطور که مشاهده می‌کنید این ماشین مجازی روی Windows 10 در حال اجراست.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

پردازنده یا واحد پردازش مرکزی Central Processing Unit – CPU

پردازنده یا Central Processing Unit – CPU چیست؟

پردازنده (Processor) یا واحد پردازش مرکزی (Central Processing Unit) که به اختصار با عنوان سی پی یو (CPU) نیز شناخته می‌شود یک مدار الکترونیکی در رایانه است که مسئولیت پردازش و انجام دستورالعمل‌های یک برنامه را برعهده دارد.

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

  • واحد محاسبه و منطق یا Arithmetic Logic Unit (به اختصار ALU): که اعمال منطقی و حسابی را انجام می‌دهد.
  • ثبات‌های پردازنده یا CPU Registers: که عملوندهای مورد نیاز واحد محاسبه و منطق را فراهم می‌آورند و هم‌چنین حاصل اعمال آن را نگه‌داری می‌کنند.
  • واحد کنترل یا Control Unit: که اعمال پردازنده را هدایت و کنترل می‌کند. به عبارت بهتر، چگونگی واکنش واحد محاسبه و منطق، مموری و دستگاه‌های ورودی و خروجی در برابر دستورالعمل‌ها را تعیین می‌کند.

بسیاری از ریزپردازنده‌های امروزی دارای بخشی به نام واحد مدیریت حافظه (MMU) نیز هستند. اغلب رایانه‌های امروزی از پردازنده‌های چند هسته‌ای (Multi-Core Processor) استفاده می‌کنند. در این رایانه‌ها، یک یا چند CPU که به آن‌ها هسته (Core) گفته می‌شود روی یک چیپ واحد قرار می‌گیرند و امکان پردازش موازی و اجرای چندین دستور به طور همزمان را فراهم می‌کنند. البته چندنخی‌سازی (Multithreading) نیز قابلیتی رایج در پردازنده‌های ساده و هر هسته موجود در پردازنده‌های چند هسته‌ای است که امکان اجرای همزمان چندین فرایند (Process) یا نخ (Thread) را فراهم می‌آورد.

نحوه‌ی عملکرد پردازنده

دستوراتی که قرار است توسط پردازنده اجرا شوند (برنامه) روی نوعی حافظه رایانه‌ای قرار می‌گیرند. به این ترتیب روند اجرای دستورات توسط CPU نیازمند انجام سه مرحله‌ی واکشی (Fetch)، دیکد یا رمزگشایی (Decode) و اجرا (Execute) می‌باشد.

در فرایند واکشی، براساس محتوای ثبات شمارنده برنامه (Program Counter یا PC) محل دستور روی حافظه مشخص می‌شود. پس از اجرای یک دستور، با افزایش مقدار شمارنده برنامه، این روند برای دستور بعدی تکرار می‌شود. در صورتی که یک دستور جهش (Jump) اجرا شود شمارنده برنامه به آدرس دستوری که جهش به آن نقطه انجام شده است تغییر می‌یابد.

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

یک پردازنده ی ساخت شرکت اینتل
یک CPU ساخت شرکت اینتل