اگر از نرم افزارهای Simulator یا شبیه ساز استفاده کرده باشید و یا با ابزارهای Emulator یا تقلید کننده آشنایی داشته باشید. شاید برای شما هم جالب باشد تفاوت بین این دو واژه را بیشتر بدانید. در وهله اول شما باید بدانید که این دو مفهوم با همدیگر تفاوت های اساسی دارند و نباید واژه های Emulator و Simulator به جای هم استفاده شود. دقت کنید زمانیکه صحبت از Simulator یا شبیه ساز می شود ما در خصوص یک سیستم صحبت می کنیم که هم می تواند نرم افزار و هم می تواند سخت افزاری باشد و این سیستم رفتارهایی بسیار نزدیک و شبیه به سیستم واقعی را دارد و در زمان استفاده از این Simulator شما تصور می کنید که در حال استفاده از سیستم اصلی هستید.
اما نحوه پیاده سازی Simulator ها کاملا متفاوت است ، در واقع شبیه سازها یا Simulator ها دقیقا از قوانین و رفتارهایی که سیستم واقعی دارد پیروی نمی کنند و برای خودشان قوانینی دارند که ممکن است به هیچ عنوان در سیستم واقعی شبیه سازی نشده اتفاق نیوفتد. در واقع زمانیکه صحبت از Simulator یا شبیه ساز می شود که شما در خصوص یک سیستم یا بهتر بگوییم در خصوص ایده و روش کارکرد یک سیستم صحبت می کنید و در خصوص جزئیات کامل کار کردن سیستم صحبتی ندارید.
من چند ابزار شبیه ساز یا Simulator را برای شما مثال می زنم تا مسئله بیشتر برای شما باز شود . نرم افزارهایی وجود دارند که شبیه ساز پرواز با هواپیما هستند ، سخت افزارهایی هم وجود دارند که همین کار شبیه سازی پرواز را انجام می دهند ، در همین حین با توجه به ITPRO بودن وب سایت ، نرم افزارهایی وجود دارند که برای ما شبکه را شبیه سازی می کنند. اینگونه نرم افزارها یا سخت افزارها به شما این احساس را می دهند که در حال کار کردن با یک سیستم واقعی هستید و برای مثال یک هواپیما را از زمین بلند می کنید و بر روی زمین می نشانید یا سویچ ها و روترهای شبکه را پیکربندی می کنید و بین آنها ارتباط برقرار می کنید.
اما این محیط های شبیه سازی شده کاملا از محیط واقعی جدا هستند و هیچ ارتباطی با محیط واقعی ندارند ، شما در یک نرم افزار شبیه ساز پرواز می توانید یک Airbus A380 را بصورت کاملا سر و ته پرواز بدهید اما آیا واقعا در محیط واقعی هم می توانید اینکار را انجام دهید ؟ شما در نرم افزارهایی مثل Packet Tracer یا NetSim روترها و سویچ های شبکه را شبیه سازی می کنید و بر روی آنها دستورات خود را وارد می کنید و در یک محیط شبیه سازی شده تست ارتباطی هم می گیرید ، اما آیا می توانید درجه گرمایی که CPU روترها و سویچ های شما بعد از هر پیکربندی دارند را احساس کنید ؟
اینگونه محیط ها بیشتر مصارف آموزشی و آشنایی با شکل کلی کار با محیط واقعی را دارند ، هر چند واقعی هم طراحی شوند باز هم محیط شبیه سازی شده هستند و بروز مشکل در چنین محیط هایی هیچ تاثیری در محیط واقعی نخواهد داشت. بسیاری از دستورات و کارهایی که در محیط های شبیه سازی شده انجام می دهید ممکن است در محیط واقعی به درستی کار نکند.
زمانیکه صحبت از Emulator یا مقلد می شود در خصوص یک سیستم کاملا مشابه با آنچه در محیط واقعی است صحبت می کنیم. این سیستم تقلید کننده دقیقا همان قوانینی را دارد که در سیستم واقعی وجود دارد و می توان از آن Copy و Paste سیستم اصلی یاد کرد. نرم افزارهای Emulator حتی سورس کد مشابه و در اصطلاح Clone سیستم اصلی هستند ، شما هر کاری که در محیط واقعی با نرم افزار می توانید انجام بدهید در محیط Emulator هم می توانید عینا انجام دهید.
حتی ورودی و خروجی نرم افزار و روش پردازش آن نیز کاملا شبیه به محیط اصلی نرم افزار است ، تنها تفاوت در محیط کاری است که بر روی آن نرم افزار اجرا می شود که طبیعتا محیطی به غیر از محیط اصلی اجرای نرم افزار اصلی خواهد بود. قوانین سیستم اصلی و سیستم emulator کاملا شبیه به هم هستند و غیرقابل تغییر هستند. برای مثال شما زمانیکه می خواهید نرم افزاری برای سیستم عامل اندروید بنویسید می توانید از Emulator ای به نام BlueStacks استفاده کنید. BlueStacks یک نرم افزار شبیه ساز نیست زیرا عینا برای شما سیستم عامل اندروید را روی ویندوز نمایش می دهد و تمامی قوانین اندروید را بر روی آن قرار می دهد.
شما نرم افزارهای اندرویدی خود را برای تست می توانید در این محیط نصب کنید و اجرا کنید. Emulator های بازی هم به همین شکل عمل می کنند ، ممکن است شما بازی های PlayStation یا Xbox را بتوانید بصورت کامل در سیستم شخصی خودتان با استفاده از یک Emulator اجرا کنید. در واقع در اینجا شما یک کپی اصلی از بازی اصلی گرفته اید و این Emulator یا مقلد است که امکان اجرای آن بر روی سیستم اصلی را می دهد.حتی Bug ها و مشکلات و Crash هایی که ممکن است در سیستم اصلی به وجود بیاید عینا در سیستم Emulate شدن نیز به وجود می آید زیرا سورس یا هسته نرم افزار به هیچ عنوان تغییر نکرده است.
بصورت کلی زمانیکه صحبت از Emulator می شود در خصوص یک کپی از سیستم اصلی صحبت می شود که عین دستگاه و سیستم واقعی کار می کند. اما زمانیکه صحبت از Simulator یا شبیه ساز می شود در واقع در خصوص یک سیستم مدل سازی یا Modeling از نرم افزار یا سیستم اصلی صحبت می کنیم . توجه کنید که همیشه قرار نیست یک سیستم Simulator چیزی شبیه به یک سیستم Emulator شود. اگر بخواهیم مثال شبکه ای بزنیم که شما بیشتر برایتان این موضوع جا بیوفتند می توانیم بگوییم نرم افزار مثل Packet Tracer یک نرم افزار شبیه ساز یا Simulator است اما نرم افزاری مثل GNS3 یک نرم افزار Emulator است زیرا در GNS3 شما سیستم عامل اصلی روترها و سویچ ها را بر روی نرم افزار Emulator نصب می کنید و آن را اجرا می کنید. از نظر سرعت ، سرعت Emulator ها به مراتب کند تر از Simulator ها است. توسینسو باشید
Simulator و Emulator در زبان فارسی هر دو شبیه ساز ترجمه شده اند چون از نظر لغوی مترادف وهم معنی (synonymous) هستند به همین دلیل خیلی ها به اشتباه این دو رو معادل هم میدونند.ممنون از متن خوبتون که متفاوت بودن این دو رو آشکار کرد.
برای کمک به درک بهتر مطلب میشه گفت Emulator رو با زبان های سطح پایین مثل زبان ماشین و اسمبلی (Machine-level assembly language) نوشته اند.ولی Simulator رو با زبان های سطح بالا (High-level language) نوشته شده اند.خوب همون طور که میدونید زبان ماشین از زبان High level سریع تر هستش.و هر جا که Performance و سرعت برای ما اهمیت داره از زبان های اسمبلی و Low level استفاده میشه.اما شاید شما براتون این ابهام بوجود بیاد که اگر Emulator ها رو با زبان های سطح پایین و نزدیک به زبان ماشین نوشته اند پس چرا از Simulator ها کند تر هستند !؟ Emulator ها به دلیل این که نیاز به Binary Translation دارند از Simulator ها کندتر هستند.اما چرا به ترجمه باینری احتیاج دارند !؟ ببینید سیستم عامل اندروید برای معماری ARM ساخته شده.بنابراین شبیه ساز اندروید (Android Emulator) رو هم برای معماری ARM طراحی کرده اند.ولی کامپیوتر شما معماری اون Intel هستش.معماری اینتل (CISC = Complex Instruction Set Computers) هستش و از نظر (ISA=Instruction set Architecture) با ARM متفاوت است. معماری ARM اصطلاحا RISC(Reduced Instruction Set Computers) هستش.به همین خاطر به Binary Translation احتیاج داریم.
ببینید در نرم افزاری مثل Packet Tracer رفتارهای یک روتر یا سویچ شبیه سازی شده ، یعنی یک نرم افزار هست که کارهای یک روتر رو فقط به هدف آموزش شبیه سازی میکنه و امکان این نیست که مثلا شما همین ابزار رو در محیط واقعی استفاده کنید فقط صرف آموزش هست اما وقتی GNS3 استفاده می کنید شما همون نرم افزاری که عینا روی روتر نصب شده رو میارید و اجراش می کنید ... در واقع Firmware روتر رو میارید و روشن می کنید فقط سخت افزار رو ندارید ، به خاطر همین شما می تونید ازش در محیط واقعی به عنوان روتر هم استفاده کنید.
سلام و عرض ادب
وقتتون بخیر
تشکر از مطلب مفیدتون
ولی با عرض پوزش، بنده اصلا هنوز تفاوت و شیوه کارکرد دو نرم افزار Packet Tracer و GNS3 رو متوجه نشدم.
امکانش هست به صورت ملموستر و جامع بیان کنید.
ممنون میشم
با تشکر
ممنون از توضیحات شما تا به این لحظه GNS رو سطح پایین تر از Cisco میدیدم اونم به دلیل رابط کاربری خیلی سادش ..
باتشکر.
عالی بود
من فکر میکردم که GNS3 هم simulator هستش