در دنیای امروز که هزینه تجهیزات سخت افزاری و یا خرید لایسنس نرم افزارهای کاربردی برای اجرای پروژه های دانشگاهی و صنعتی مقرون بصرفه نمیباشد و توجیه اقتصادی مناسبی ندارد، کارشناسان راه حلی را به عنوان سازکار شبیه سازی و تقلید کننده ها ارائه نموده اند. simulation و emulation این امکان را فراهم آورده اند که با صرف هزینه کمتر و یا حذف هزینه ارزیابی رویکردهای متفاوت برای انجام پروژه های مختلف، مشکلات اقتصادی و عدم وجود محیط آزمایشگاهی مناسب برطرف گردد. اگر با نرم افزارهای Simulator (شبیه ساز) و ابزارهای Emulator (تقلید کننده) آشنایی داشته باشید، بهتر است تفاوت بین این دو واژه را بیشتر بدانید. این دو مفهوم با همدیگر تفاوت های اساسی دارند و میبایست واژه های Emulator و Simulator در جایگاه مناسب به خود مورد استفاده قرار گیرند، حال در این مقاله به تشریح کلی این ابزارها و تفاوت کلی میان آنها میپردازیم.
تفاوت Simulation با Emulation
جهت آشنایی بیشتر و بررسی دقیقتر تفاوت میان این دو قابلیت بهتر است ابتدا تعریف مشخصی از آنها داشته باشیم:
زمانی که سیستمی شبیه به سیستم دیگر عمل میکند ولی پیاده سازی آن کاملاً متفاوت است در اصل عملیات شبیه سازی در حال اجرا میباشد، در این حالت میتوان گفت که شبیه سازی در حال انجام عملیات میباشد. سیمولیشن ها عملکرد پایه ای سیستم رو تکرار میکنند اما قوانینی که در سیستم پایه مدنظر میباشد را بطور کلی پیروی نخواهد نمینمایند، پس با استفاده از شبیه سازها امکان شناخت مناسب از نحوه عملکرد یک سیستم پدیدار میشود.
برای مثال شبیه ساز یک هواپیما فضای کلی پرواز را ایجاد مینماید ولی امکان پرواز واقعی را به کاربر نمیدهد، بلکه برای آموزش ساخته شده و حتی تجهیزات داخلی هواپیما از قبیل اهرم ها و پدال ها و پنجره شبیه سازی شده است و در برخی مواقع قوانین و اصول کلی پراواز را نیز زیر پا میگذارد. حال اگر دانش آموخته در محیط شبیه ساز هواپیمای مسافربری تصمیم داشته باشد به شکل عمود پرواز از زمین بلند شود، تا تجربه جدیدی را کسب نماید و فضای جالبی را برای خود محیی سازد این امکان برای ایشان فراهم آمده است که در واقعیت برای خلبان میسر نمیباشد، پس این شبیه ساز بخشی از قواعد اصلی را نقض نموده ولی بدون پرواز واقعی خلبانی را به دانش آموخته خود آموزش میدهد.
Emulate کردن یک سیستم همان تقلید رفتاری و کلی از آن میباشد که در همه جنبه ها همانند سیستم اصلی خواهد بود، به انجام این عملیات توسط نرم افزار و یا سخت افزاری Emulation گفته میشود. یک امولاتور تمامی قابلیت های سیستم مورد تقلید رو تکرار مینماید که در بهترین حالت به کپی دقیق از آن سیستم تبدیل میگردد. در دنیای کامپیوتر امولاتورهای قدرتمند حتی در سطح باینری با سیستم اصلی سازگار میباشند. برای مثال با یک امولاتور اندروید میتوانید برنامه های تحت این نرم افزار را بروی سیستم عامل لینوکس و یا ویندوز اجرا نمایید، این Emulator با وجود اینکه در محیطی متفاوت از سیستم اصلی قرار دارد ولی سطح ورودی و خروجی کاملا سازگار با سیستم ابتدایی خواهد بود.
مثالی مناسب از این ابزار را میتوان امولاتورهای بازی در محیط های کامپیوتری نام برد، پروژه M.A.M.E امولاتور چندین سخت افزار قدیمی بازی میباشد تا مستقیماً بروی سیستم جدید اجرا شوند. باید در این رابطه خاطر نشان شد که عدم رعایت قوانین اصلی و تقلید از سیستم اولیه بطور کلی فرآیند Emulation را تغییر خواهد داد که در این مثال این مورد کاملاً قابل درک میباشد.
تفاوت ها :
حال با آشنایی در مورد این دو مفهوم امکان بررسی تفاوت میان آنها وجود دارد، network emulation تکنیکی برای آزمودن عملکرد نرم افزارهای در یک شبکه مجازی است که این مفهوم با شبیه سازی شبکه network simulation متفاوت است. شبیه سازی جهت ارزیابی عملکرد، پیش بینی تأثیر تغییرات و کمک به فرایند تصمیم گیری مطلوب مورد استفاده قرار میگیرد. در شبکه ای که از امولاتور استفاده میشود سیستمهای انتهایی end-system مانند کامپیوترها به امولاتور شبکه متصل میگردند بطوری که به یک شبکه واقعی متصل شده اند، حال شبیه سازهای شبکه معمولا نرم افزار هایی میباشند که روی یک کامپیوتر اجرا می شوند و گزارشی از ترافیک شبکه و فرایند ورود جریان و وضعیت بافر را ارائه می دهند. شبیه ساز یا سیمولاتور می تواند نرم افزار و یا سخت افزاری باشد که این سیستم عملکردی نزدیک و مشابه به سیستم واقعی را ارائه میدهد.
نحوه پیاده سازی Simulator ها کاملا متفاوت است، بدلیل آنکه شبیه سازها دقیقا از قوانین و رفتارهایی که سیستم واقعی دارد پیروی نمی کنند و امکان دارد رفتاری را از خود نشان دهند که به هیچ عنوان در سیستم واقعی وجود نداشته باشد. در مجموع Simulator در خصوص ایده و روش کارکرد یک سیستم بحث مینماید و به جزئیات کامل کار کردن سیستم کاری ندارد، مثال شبیه ساز هواپیما نمایانگر همین مورد است. مثال دیگر نرم افزارهایی مانند Packet Tracer یا NetSim هستند که امکان شبیه سازی روترها و سویچ های شبکه را فراهم می آورند، در این ابزار ها کاربر دستوراتی را به اختیار وارد می کند و بصورت شبیه سازی شده اتصالات را برقرار و مورد بررسی قرار میدهد. اما امکان محاسبه فیزیکی درجه گرمایی که CPU روترها و سویچ ها بعد از هر پیکربندی وجود ندارد یا امکان دارد دستورات مورد استفاده در محیط و شبکه واقعی بدرستی عمل نکنند، درنتیجه شبیه سازها محیطی برای مصارف آموزشی و آشنایی با عملکرد کلی محیط واقعی را فراهم میکنند .
Emulator یا مقلد یک سیستم کاملا مشابه با آنچه در محیط واقعی است را به مشتری ارائه میدهد. سیستم تقلید کننده کاملاً همان قوانینی را اجرا مینماید که در سیستم واقعی بکار گرفته شده اند که همان کپی بدون تغییری از محیط و سیستم واقعی میباشد. میتوان سورس کد و در اصطلاح Clone سیستم اصلی را تقلید کننده آن نام برد، هرگونه عملیاتی که در شبکه و محیط واقعی از نرم افزارها فرض میگردد همان را بدون نقص میتوان در محیط Emulator عملی ساخت. ورودی و خروجی نرم افزار و روش پردازش مقلد مشابه به محیط اصلی نرم افزار میباشد، البته محیط کاری در مقلد بدون شک با محیط نرم افزار واقعی کمی مجزا خواهد بود که این مورد بدلیل طراحی کارشناسان مختلف با سلیقه های گوناگون امری طبیعی میباشد. لازم بذکر است اصول کاری و قواعد سیستم اصلی با مقلد خود حتی تفاوتی ندارند بلکه قابل تغییر نیز نمیباشند. برای درک بهتر این موضوع مثالی در این خصوص را بررسی مینماییم، برای تولید نرم افزاری تحت سیستم عامل اندروید از امولاتورهای همچون BlueStacks استفاده میگردد که بجایی شبیه سازی محیط سیستم عامل فضایی بدون تغییر و یا همان سیستم عامل را در اختیار برنامه نویسان قرار میدهد تا امکان نصب و تست نرم افزار وجود داشته باشد.
در انتها زمانیکه صحبت از Emulator میباشد به یک کپی از سیستم اصلی اشاره میگردد اما زمانیکه صحبت از Simulator یا شبیه ساز است در واقع یک سیستم مدل سازی یا Modeling از نرم افزار یا محیط واقعی مدنظر میباشد. بدون شک یک سیستم Simulator محیطی مشابه به یک سیستم Emulator را فراهم نمیکند پس میبایست این دو واژاه را از هم متمایز بدانیم و هرکدام را محیطی مخصوص به خود استفاده کنیم، البته باید خاطر نشان شد که از لحاظ سرعت (نرم افزاری و سخت افزاری) سرعت Emulator ها به مراتب کند تر از Simulator ها است.