منافس

يحاكي برنامج DOSBox واجهة سطر الأوامر لنظام DOS.

في مجال الحوسبة ، يُعدّ المحاكي جهازًا أو برنامجًا يمكّن نظام حاسوب (يُسمى المضيف ) من العمل كنظام حاسوب آخر (يُسمى الضيف ). ويُمكّن المحاكي عادةً النظام المضيف من تشغيل برامج أو استخدام أجهزة طرفية مصممة للنظام الضيف. وتشير المحاكاة إلى قدرة برنامج حاسوبي في جهاز إلكتروني على محاكاة برنامج أو جهاز آخر.

صُممت العديد من الطابعات ، على سبيل المثال، لمحاكاة طابعات HP LaserJet نظرًا لوجود قدر كبير من البرامج المصممة خصيصًا لطرازات HP. إذا قامت طابعة غير تابعة لشركة HP بمحاكاة طابعة HP، فإن أي برنامج مصمم لطابعة HP أصلية سيعمل أيضًا على الجهاز غير التابع لشركة HP، مما ينتج عنه نتائج طباعة مماثلة. منذ تسعينيات القرن الماضي على الأقل، استخدم العديد من هواة ألعاب الفيديو برامج المحاكاة لتشغيل ألعاب الأركيد الكلاسيكية من ثمانينيات القرن الماضي باستخدام شفرة وبيانات اللعبة الأصلية من ثمانينيات القرن الماضي، والتي يتم تفسيرها بواسطة نظام حديث، ولمحاكاة أجهزة ألعاب الفيديو القديمة (انظر: برنامج محاكاة أجهزة ألعاب الفيديو ).

محاكي الأجهزة هو محاكي يتخذ شكل جهاز مادي. ومن الأمثلة على ذلك البطاقة المتوافقة مع نظام التشغيل DOS والمثبتة في بعض أجهزة ماكنتوش من تسعينيات القرن الماضي ، مثل Centris 610 أو Performa 630 ، والتي سمحت لها بتشغيل برامج الحاسوب الشخصي ومحاكيات الأجهزة القائمة على مصفوفات البوابات المنطقية القابلة للبرمجة الميدانية . تنص فرضية تشيرش-تورينج على أنه نظريًا، يمكن محاكاة أي بيئة تشغيل داخل أي بيئة أخرى، بافتراض تجاهل قيود الذاكرة. ومع ذلك، عمليًا، قد يكون ذلك صعبًا للغاية، خاصةً عندما لا يكون السلوك الدقيق للنظام المراد محاكاته موثقًا، ويتعين استنتاجه من خلال الهندسة العكسية . كما أنها لا تتطرق إلى قيود التوقيت؛ فإذا لم يعمل المحاكي بنفس سرعة أدائه باستخدام الجهاز الأصلي، فقد يعمل البرنامج داخل المحاكاة ببطء شديد (مما قد يؤدي إلى مقاطعات مؤقتة تُغير السلوك).

"هل يمكن لجهاز كومودور 64 محاكاة نظام التشغيل MS-DOS ؟" نعم، من الممكن لجهاز كومودور 64 محاكاة جهاز IBM PC [الذي يستخدم نظام التشغيل MS-DOS]، بنفس الطريقة التي يمكن بها إفراغ بحيرة ميشيغان بملعقة صغيرة .

رسالة إلى مجلة Compute! ورد تحريري، أبريل 1988 [ 1 ]

الأنواع

نظام التشغيل ويندوز إكس بي الذي يشغل برنامج محاكاة أرخميدس ، والذي بدوره يشغل برنامج محاكاة زد إكس سبكتروم
لعبة تتريس تعمل على محاكي Wzonka-Lad Game Boy على نظام AmigaOS ، والذي يعمل بدوره على نظام E-UAE على نظام Fedora Linux حديث

معظم برامج المحاكاة تحاكي بنية الأجهزة فقط، وإذا تطلب البرنامج المطلوب نظام تشغيل أو برنامجًا ثابتًا، فيجب توفيره أيضًا (وقد تتم محاكاته هو الآخر). يقوم برنامج المحاكاة بتفسير كل من نظام التشغيل والبرنامج ، بدلًا من تشغيلهما بواسطة الجهاز الأصلي. إلى جانب هذا المفسر للغة الآلة الثنائية المحاكاة ، يجب توفير بعض الأجهزة الأخرى (مثل أجهزة الإدخال أو الإخراج) بشكل افتراضي؛ على سبيل المثال، إذا كان للكتابة إلى موقع ذاكرة محدد تأثير على ما يُعرض على الشاشة، فسيلزم محاكاة ذلك. مع أن المحاكاة، في أقصى حالاتها، قد تصل إلى المستوى الذري، معتمدةً في مخرجاتها على محاكاة الدوائر الفعلية من مصدر طاقة افتراضي، إلا أن هذا حل نادر جدًا. عادةً ما تتوقف برامج المحاكاة عند محاكاة مواصفات الأجهزة الموثقة والمنطق الرقمي. تتطلب المحاكاة الكافية لبعض منصات الأجهزة دقة متناهية، تصل إلى مستوى دورات الساعة الفردية، والميزات غير الموثقة، والعناصر التناظرية غير المتوقعة، وأخطاء التنفيذ. وينطبق هذا بشكل خاص على أجهزة الكمبيوتر المنزلية الكلاسيكية مثل كومودور 64 ، والتي تعتمد برامجها في كثير من الأحيان على حيل برمجة متطورة للغاية منخفضة المستوى ابتكرها مبرمجو الألعاب و" مشهد العروض التوضيحية ".

في المقابل، لم تستخدم بعض المنصات الأخرى معالجة الأجهزة المباشرة إلا نادرًا، مثل محاكي بلاي ستيشن 4. في هذه الحالات، قد تكفي طبقة توافق بسيطة . تقوم هذه الطبقة بترجمة استدعاءات النظام للنظام الأجنبي إلى استدعاءات النظام للنظام المضيف، على سبيل المثال، طبقة توافق لينكس المستخدمة في أنظمة *BSD لتشغيل برامج لينكس الأصلية مغلقة المصدر على أنظمة FreeBSD و NetBSD . [ 2 ] على سبيل المثال، بينما كان معالج الرسومات في نينتندو 64 قابلاً للبرمجة بالكامل، استخدمت معظم الألعاب أحد البرامج الجاهزة القليلة، والتي كانت في الغالب مكتفية ذاتيًا وتتواصل مع اللعبة عبر FIFO ؛ لذلك، لا تحاكي العديد من المحاكيات معالج الرسومات على الإطلاق، بل تفسر ببساطة الأوامر الواردة من وحدة المعالجة المركزية كما يفعل البرنامج الأصلي. غالبًا ما يصمم مطورو البرامج للأنظمة المدمجة أو منصات ألعاب الفيديو برامجهم على محاكيات دقيقة للغاية تُسمى أجهزة المحاكاة قبل تجربتها على الأجهزة الحقيقية. يُتيح ذلك إنتاج البرمجيات واختبارها قبل توفر الأجهزة النهائية بكميات كبيرة، ما يسمح باختبارها دون الحاجة إلى نسخ البرنامج المراد تصحيحه على مستوى منخفض، ودون إدخال الآثار الجانبية لمصحح الأخطاء . في كثير من الحالات، تُنتج الشركة المُصنِّعة للأجهزة برنامج المحاكاة، ما يُحسِّن دقته نظريًا. تسمح برامج محاكاة المعالج المساعد الرياضي بتشغيل البرامج المُجمَّعة بتعليمات رياضية على أجهزة لا تحتوي على هذا المعالج، إلا أن العمل الإضافي الذي يقوم به المعالج المركزي قد يُبطئ النظام. إذا لم يكن المعالج المساعد الرياضي مُثبَّتًا أو موجودًا على المعالج المركزي، فعند تنفيذ أي تعليمة منه، سيُصدر المعالج المركزي مقاطعة مُحدَّدة (المعالج المساعد غير متوفر)، مُستدعيًا إجراءات برنامج المحاكاة الرياضية. عند نجاح محاكاة التعليمة، يستمر البرنامج في التنفيذ.

محاكيات المنطق

المحاكاة المنطقية هي استخدام برنامج حاسوبي لمحاكاة عمل دائرة رقمية مثل المعالج. [ 3 ] ويتم ذلك بعد تصميم الدائرة الرقمية باستخدام المعادلات المنطقية، ولكن قبل تصنيعها فعلياً.

محاكيات وظيفية

المحاكاة الوظيفية هي استخدام برنامج حاسوبي لمحاكاة تنفيذ برنامج حاسوبي آخر مكتوب بلغة التجميع الرمزية أو لغة المترجم ، بدلاً من لغة الآلة الثنائية . باستخدام المحاكي الوظيفي، يستطيع المبرمجون تنفيذ وتتبع أجزاء محددة من شفرة المصدر للبحث عن أخطاء البرمجة (الثغرات)، دون توليد شفرة ثنائية. وهذا يختلف عن محاكاة تنفيذ الشفرة الثنائية، والتي تُعرف بمحاكاة البرمجيات. كتبت شركة أوتونيتكس أول محاكي وظيفي حوالي عام 1960 لاختبار برامج لغة التجميع لتنفيذها لاحقًا على الحاسوب العسكري D-17B . وقد مكّن هذا من كتابة برامج الطيران وتنفيذها واختبارها قبل بناء جهاز الحاسوب D-17B. كما برمجت أوتونيتكس محاكيًا وظيفيًا لاختبار برامج الطيران لتنفيذها لاحقًا على الحاسوب العسكري D-37C .

محاكيات أجهزة ألعاب الفيديو

برامج محاكاة أجهزة ألعاب الفيديو هي برامج تسمح لجهاز كمبيوتر شخصي أو جهاز ألعاب فيديو بمحاكاة جهاز ألعاب فيديو آخر. تُستخدم هذه البرامج غالبًا لتشغيل ألعاب الفيديو القديمة التي صدرت في الفترة من ثمانينيات إلى ألفينيات القرن الماضي على أجهزة الكمبيوتر الشخصية الحديثة وأجهزة ألعاب الفيديو المعاصرة. كما تُستخدم أيضًا لترجمة الألعاب إلى لغات أخرى، وتعديل الألعاب الموجودة، وفي عملية تطوير عروض تجريبية منزلية الصنع ، وفي إنشاء ألعاب جديدة للأنظمة القديمة. ساهم الإنترنت في انتشار برامج محاكاة أجهزة الألعاب، حيث أن معظمها - إن لم يكن جميعها - غير متوفر للبيع في المتاجر. من أمثلة برامج محاكاة أجهزة الألعاب التي صدرت في العقود القليلة الماضية: RPCS3 ، و Dolphin ، وCemu ، و PCSX2 ، و PPSSPP ، و ZSNES ، و Citra ، و ePSXe ، و Project64 ، و Visual Boy Advance ، و Nestopia ، و Yuzu .

بسبب شعبيتها، تعرضت برامج المحاكاة للاختراق من قبل برامج خبيثة. معظم هذه البرامج مخصصة لأجهزة ألعاب الفيديو مثل إكس بوكس ​​360، وإكس بوكس ​​ون، ونينتندو 3DS، وغيرها. وتدّعي هذه البرامج عادةً أنها غير قابلة للتطبيق حاليًا، مثل تشغيل ألعاب إكس بوكس ​​ون وإكس بوكس ​​360 في برنامج واحد. [ 4 ]

مع استمرار تطور أجهزة الكمبيوتر وشبكاتها العالمية ، وازدياد مهارة مطوري برامج المحاكاة، بدأت الفترة الزمنية بين طرح جهاز ألعاب تجاريًا ونجاح محاكاته بالتقلص. وشهدت أجهزة الجيل الخامس ، مثل نينتندو 64 وبلاي ستيشن ، وأجهزة الجيل السادس المحمولة، مثل جيم بوي أدفانس ، تقدمًا ملحوظًا نحو المحاكاة أثناء إنتاجها. دفع هذا الأمر مصنعي أجهزة الألعاب إلى محاولة وقف المحاكاة غير الرسمية، إلا أن الإخفاقات المتكررة، مثل قضية سيجا ضد أكوليد (977 F.2d 1510 (الدائرة التاسعة، 1992))، وقضية سوني كمبيوتر إنترتينمنت ضد كونيكتكس (203 F.3d 596 (2000))، وقضية سوني كمبيوتر إنترتينمنت أمريكا ضد بليم (214 F.3d 1022 (2000))، [ 5 ] كان لها أثر معاكس. ووفقًا لجميع السوابق القانونية، فإن المحاكاة قانونية في الولايات المتحدة. مع ذلك، يظل التوزيع غير المصرح به للبرمجيات المحمية بحقوق الطبع والنشر غير قانوني، وفقًا لقوانين حقوق الطبع والنشر الخاصة بكل دولة والقانون الدولي لحقوق الطبع والنشر بموجب اتفاقية برن . [ 6 ] وبموجب قانون الولايات المتحدة، يُعد الحصول على نسخة مُستخرجة من نظام الإدخال والإخراج الأساسي (BIOS) للجهاز الأصلي قانونيًا بموجب حكم قضية Lewis Galoob Toys, Inc. ضد Nintendo of America, Inc. ، 964 F.2d 965 (الدائرة التاسعة، 1992)، باعتباره استخدامًا عادلًا طالما حصل المستخدم على نسخة من الجهاز تم شراؤها بشكل قانوني. وللتخفيف من هذا الأمر، فإن العديد من برامج المحاكاة لمنصات مثل Game Boy Advance قادرة على العمل بدون ملف BIOS، باستخدام محاكاة عالية المستوى لمحاكاة إجراءات BIOS الفرعية مع انخفاض طفيف في دقة المحاكاة. [ 7 ] [ 8 ] [ 9 ]

صالة

برامج محاكاة الطرفيات هي برامج توفر لأجهزة الكمبيوتر والأجهزة الحديثة إمكانية الوصول التفاعلي إلى التطبيقات التي تعمل على أنظمة تشغيل الحواسيب المركزية أو أنظمة مضيفة أخرى مثل HP-UX أو OpenVMS . لم تعد تُصنع أجهزة طرفية مثل IBM 3270 أو VT100 وغيرها الكثير كأجهزة مادية. بدلاً من ذلك، يقوم برنامج يعمل على أنظمة التشغيل الحديثة بمحاكاة طرفية بسيطة، حيث يستطيع عرض العناصر الرسومية والنصية للتطبيق المضيف، وإرسال ضغطات المفاتيح، ومعالجة الأوامر باستخدام بروتوكول الطرفية المناسب. تتضمن بعض تطبيقات محاكاة الطرفيات Attachmate Reflection و IBM Personal Communications و Micro Focus Rumba.

أنواع أخرى

تشمل أنواع المحاكيات الأخرى ما يلي:

الهيكل والتنظيم

عادةً، يُقسّم برنامج المحاكاة إلى وحدات تُطابق تقريبًا الأنظمة الفرعية للحاسوب المُحاكى. في أغلب الأحيان، يتكون برنامج المحاكاة من الوحدات التالية:

  • محاكي وحدة المعالجة المركزية (يُستخدم المصطلحان بشكل متبادل في هذه الحالة)، إلا إذا كان الهدف الذي تتم محاكاته يمتلك نفس بنية وحدة المعالجة المركزية الخاصة بالمضيف، وفي هذه الحالة يمكن استخدام طبقة آلة افتراضية بدلاً من ذلك.
  • وحدة نظام الذاكرة الفرعية
  • محاكيات أجهزة الإدخال/الإخراج المختلفة

غالباً لا تتم محاكاة الحافلات، إما لأسباب تتعلق بالأداء أو البساطة، وتتصل الأجهزة الطرفية الافتراضية مباشرة بوحدة المعالجة المركزية أو النظام الفرعي للذاكرة.

نظام الذاكرة الفرعي

من الممكن اختزال محاكاة نظام الذاكرة الفرعي إلى مجرد مصفوفة من العناصر، كل عنصر بحجم كلمة مُحاكاة؛ إلا أن هذا النموذج يفشل بسرعة بمجرد عدم تطابق أي موقع في الذاكرة المنطقية للحاسوب مع الذاكرة الفعلية . ويتضح هذا جليًا عندما تسمح الأجهزة المُحاكاة بإدارة متقدمة للذاكرة (في هذه الحالة، يمكن تضمين منطق وحدة إدارة الذاكرة في مُحاكي الذاكرة، أو جعله وحدة مستقلة، أو دمجه أحيانًا في مُحاكي وحدة المعالجة المركزية). حتى لو لم يكن الحاسوب المُحاكى مزودًا بوحدة إدارة ذاكرة، فعادةً ما توجد عوامل أخرى تُخلّ بالتكافؤ بين الذاكرة المنطقية والفعلية: فالعديد من البنى (إن لم يكن معظمها) تُوفر إدخال/إخراج مُرتبط بالذاكرة ؛ وحتى تلك التي لا تُوفر ذلك غالبًا ما يكون لديها كتلة من الذاكرة المنطقية مُرتبطة بذاكرة القراءة فقط ، مما يعني أنه يجب التخلص من وحدة مصفوفة الذاكرة إذا أُريد محاكاة طبيعة القراءة فقط لذاكرة القراءة فقط. كما أن ميزات مثل تبديل البنوك أو التجزئة قد تُعقّد محاكاة الذاكرة. ونتيجة لذلك، تقوم معظم برامج المحاكاة بتنفيذ إجراءين على الأقل للكتابة إلى الذاكرة المنطقية والقراءة منها، ومن واجب هذه الإجراءات تعيين كل عملية وصول إلى الموقع الصحيح للكائن الصحيح.

في نظام عنونة الحد الأساسي حيث تكون الذاكرة من العنوان 0 إلى العنوان ROMSIZE-1 ذاكرة للقراءة فقط، بينما الباقي ذاكرة وصول عشوائي (RAM)، فإن شيئًا من هذا القبيل سيكون نموذجيًا:

void WriteMemory ( word Address , word Value ) { word RealAddress ; RealAddress = Address + BaseRegister ; if (( RealAddress < LimitRegister ) && ( RealAddress > ROMSIZE )) { Memory [ RealAddress ] = Value ; } else { RaiseInterrupt ( INT_SEGFAULT ); } }
دالة ReadMemory ( كلمة العنوان ) { كلمة العنوان الحقيقي ؛ العنوان الحقيقي = العنوان + السجل الأساسي ؛ إذا كان ( العنوان الحقيقي < السجل المحدود ) { إرجاع الذاكرة [ العنوان الحقيقي } وإلا { رفع مقاطعة ( INT_SEGFAULT إرجاع NULL ؛ } }

محاكي وحدة المعالجة المركزية

غالبًا ما يكون مُحاكي وحدة المعالجة المركزية (CPU) الجزء الأكثر تعقيدًا في أي برنامج محاكاة. تُكتب العديد من برامج المحاكاة باستخدام مُحاكيات وحدة معالجة مركزية "جاهزة"، وذلك للتركيز على محاكاة جيدة وفعّالة لجهاز مُحدد. أبسط أشكال مُحاكي وحدة المعالجة المركزية هو المُفسّر ، وهو برنامج حاسوبي يتبع مسار تنفيذ كود البرنامج المُحاكى، ويُنفّذ، لكل تعليمة من تعليمات كود الآلة، عمليات على المعالج المضيف تُكافئ دلاليًا التعليمات الأصلية. يتحقق ذلك من خلال تعيين مُتغير لكل مُسجل وعلامة في وحدة المعالجة المركزية المُحاكاة. بعد ذلك ، يُمكن ترجمة منطق وحدة المعالجة المركزية المُحاكاة بشكل مباشر تقريبًا إلى خوارزميات برمجية، مما يُنشئ إعادة تنفيذ برمجية تُحاكي بشكل أساسي التنفيذ المادي الأصلي.

يوضح المثال التالي كيفية محاكاة وحدة المعالجة المركزية بواسطة مترجم. في هذه الحالة، يتم التحقق من وجود مقاطعات قبل تنفيذ كل تعليمة، على الرغم من أن هذا السلوك نادر في المحاكيات الحقيقية لأسباب تتعلق بالأداء (من الأسرع عمومًا استخدام روتين فرعي للقيام بعمل المقاطعة).

void Execute ( void ) { if ( Interrupt != INT_NONE ) { SuperUser = TRUE ; WriteMemory ( ++ StackPointer , ProgramCounter ); ProgramCounter = InterruptPointer ; } switch ( ReadMemory ( ProgramCounter ++ )) { /*  * معالجة كل تعليمة صالحة  * هنا...  */ default : Interrupt = INT_ILLEGAL ; } }

تُعدّ المترجمات شائعة الاستخدام في محاكاة الحواسيب، نظرًا لسهولة تطبيقها مقارنةً بالحلول البديلة الأكثر كفاءةً من حيث الوقت، وسرعتها الكافية لمحاكاة حواسيب تعود لأكثر من عقد من الزمان تقريبًا على الأجهزة الحديثة. مع ذلك، قد يُشكّل تباطؤ الأداء الناتج عن الترجمة مشكلةً عند محاكاة حواسيب ذات سرعة معالج تُقارب سرعة الجهاز المضيف . وحتى وقت قريب، كان الكثيرون يعتبرون المحاكاة في مثل هذه الحالات غير عملية على الإطلاق .

ما سمح بتجاوز هذا القيد هو التقدم في تقنيات إعادة الترجمة الديناميكية . عادةً ما يكون من المستحيل ترجمة كود البرنامج المحاكي إلى كود قابل للتنفيذ على بنية النظام المضيف بشكل مباشر، وذلك لعدة أسباب:

تحاول أشكال مختلفة من إعادة الترجمة الديناميكية، بما في ذلك تقنية الترجمة الفورية الشائعة (JIT) ، تجاوز هذه المشاكل بالانتظار حتى ينتقل مسار تحكم المعالج إلى موقع يحتوي على كود غير مترجم، وعندها فقط ("في الوقت المناسب") تُترجم كتلة من الكود إلى كود قابل للتنفيذ. يُحفظ الكود المترجم في ذاكرة تخزين مؤقتة ، ولا يُفقد الكود الأصلي أو يتأثر؛ وبهذه الطريقة، يمكن حتى لمقاطع البيانات أن تُترجم (دون جدوى) بواسطة المُترجم، مما ينتج عنه مجرد إهدار لوقت الترجمة. قد لا تكون السرعة مرغوبة لأن بعض الألعاب القديمة لم تُصمم مع مراعاة سرعة أجهزة الكمبيوتر الأسرع. لعبة مصممة لجهاز كمبيوتر بسرعة 30 ميجاهرتز مع مؤقت مستوى 300 ثانية قد لا تُعطي اللاعب سوى 30 ثانية على جهاز كمبيوتر بسرعة 300 ميجاهرتز. قد لا تعمل برامج أخرى، مثل بعض برامج DOS، على أجهزة كمبيوتر أسرع. وخاصة عند محاكاة أجهزة الكمبيوتر التي كانت "مغلقة الصندوق"، حيث لم تكن التغييرات في جوهر النظام شائعة، فقد تستخدم البرامج تقنيات تعتمد على خصائص محددة للكمبيوتر الذي تعمل عليه (مثل سرعة وحدة المعالجة المركزية الخاصة به)، وبالتالي فإن التحكم الدقيق في سرعة المحاكاة أمر مهم لكي تتم محاكاة هذه التطبيقات بشكل صحيح.  

المدخلات/المخرجات (I/O)

كما ذُكر سابقًا، لا تُحاكي معظم برامج المحاكاة ناقل النظام الرئيسي ؛ لذا يُعامل كل جهاز إدخال/إخراج غالبًا كحالة خاصة، ولا تُوفّر واجهة موحدة للأجهزة الطرفية الافتراضية. قد يُؤدي هذا إلى تحسين الأداء، حيث يُمكن تخصيص كل وحدة إدخال/إخراج وفقًا لخصائص الجهاز المُحاكى؛ ومع ذلك، يُمكن للتصاميم القائمة على واجهة برمجة تطبيقات موحدة للإدخال/الإخراج أن تُنافس هذه النماذج الأبسط، إذا ما رُوعي تصميمها جيدًا، ولها ميزة إضافية تتمثل في توفير خدمة إضافية "تلقائية" تُتيح استخدام أجهزة افتراضية خارجية داخل برنامج المحاكاة. قد لا تُطابق واجهة برمجة تطبيقات الإدخال/الإخراج الموحدة بالضرورة بنية ناقل الأجهزة الحقيقي: إذ يُقيّد تصميم الناقل بالعديد من القيود الكهربائية والحاجة إلى إدارة التزامن في الأجهزة ، والتي يُمكن تجاهلها في الغالب عند تنفيذ البرامج.

حتى في برامج المحاكاة التي تتعامل مع كل جهاز كحالة خاصة، توجد عادةً بنية أساسية مشتركة لما يلي:

  • إدارة المقاطعات ، من خلال إجراء يقوم بتعيين علامات يمكن قراءتها بواسطة محاكي وحدة المعالجة المركزية كلما تم رفع مقاطعة، مما يسمح لوحدة المعالجة المركزية الافتراضية "بالتحقق من المقاطعات (الافتراضية)".
  • الكتابة إلى الذاكرة الفعلية والقراءة منها، عن طريق إجراءين مشابهين لتلك التي تتعامل مع الذاكرة المنطقية (على الرغم من أنه، على عكس الأخيرة، يمكن في كثير من الأحيان حذف الإجراء الأول، واستخدام مراجع مباشرة لمصفوفة الذاكرة بدلاً من ذلك).

التطبيقات

في مجال الحفظ

محاكي DPS8M يعمل بنظام Multics على نظام Linux

تُعدّ المحاكاة إحدى استراتيجيات الحفاظ على المحتوى الرقمي ومكافحة التقادم . وتركز المحاكاة على إعادة إنشاء بيئة حاسوبية أصلية، وهو ما قد يستغرق وقتًا طويلاً ويصعب تحقيقه، ولكنه ذو قيمة كبيرة لقدرته على الحفاظ على صلة أوثق بأصالة الكائن الرقمي أو نظام التشغيل أو حتى منصة الألعاب. [ 10 ] تعالج المحاكاة بيئة الأجهزة والبرامج الأصلية للكائن الرقمي، وتعيد إنشائها على جهاز حديث. [ 11 ] يتيح برنامج المحاكاة للمستخدم الوصول إلى أي نوع من التطبيقات أو أنظمة التشغيل على منصة حديثة ، بينما يعمل البرنامج كما كان يعمل في بيئته الأصلية. [ 12 ] يقول جيفري روثنبرغ، أحد أوائل المؤيدين للمحاكاة كاستراتيجية للحفاظ على المحتوى الرقمي : "يتمثل النهج الأمثل في توفير حل واحد قابل للتوسيع وطويل الأمد، يمكن تصميمه مرة واحدة وإلى الأبد، وتطبيقه بشكل موحد وتلقائي ومتزامن ومنظم (على سبيل المثال، في كل دورة تحديث) على جميع أنواع المستندات والوسائط". [ 13 ] ويضيف أن هذا لا ينبغي أن يقتصر على الأنظمة القديمة فحسب، بل يجب أن يشمل أيضًا الأنظمة المستقبلية غير المعروفة. [ 14 ] عمليًا، عند إصدار تطبيق معين بنسخة جديدة، بدلًا من معالجة مشكلات التوافق ونقل البيانات لكل عنصر رقمي تم إنشاؤه في النسخة السابقة من ذلك التطبيق ، يمكن إنشاء محاكي للتطبيق ، مما يتيح الوصول إلى جميع تلك العناصر الرقمية.

في فن الإعلام الجديد

نظراً لاعتمادها الأساسي على الوسائط الرقمية، تعتمد فنون الإعلام الجديد بشكل كبير على المحاكاة كاستراتيجية للحفظ. يتخصص فنانون مثل كوري أركانجيل في إحياء التقنيات القديمة في أعمالهم الفنية، ويدركون أهمية اتباع عملية لا مركزية وغير مؤسسية لحفظ الثقافة الرقمية. في كثير من الحالات، يهدف استخدام المحاكاة في فنون الإعلام الجديد إلى حفظ الوسائط الرقمية بحيث يمكن حفظها إلى أجل غير مسمى وإعادة إنتاجها دون أخطاء، مما يغني عن الاعتماد على الأجهزة التي تتقادم وتصبح قديمة. المفارقة تكمن في ضرورة تصميم المحاكاة وبرنامج المحاكاة ليعملا على أجهزة الكمبيوتر المستقبلية. [ 15 ]

في تصميم الأنظمة المستقبلية

تُستخدم تقنيات المحاكاة بشكل شائع أثناء تصميم وتطوير الأنظمة الجديدة. فهي تُسهّل عملية التطوير من خلال توفير القدرة على اكتشاف عيوب التصميم وإعادة إنشائها وإصلاحها حتى قبل بناء النظام فعليًا. [ 16 ] وتُعدّ هذه التقنيات مفيدة بشكل خاص في تصميم الأنظمة متعددة النوى ، حيث يصعب اكتشاف أخطاء التزامن وتصحيحها دون البيئة المُتحكّم بها التي توفرها الأجهزة الافتراضية. [ 17 ] كما يسمح ذلك بتطوير البرمجيات قبل جاهزية الأجهزة، [ 18 ] مما يُساعد على التحقق من صحة قرارات التصميم ومنح مزيد من التحكم.

مقارنة مع المحاكاة

صِيغَ مصطلح "المحاكي" عام 1963 في شركة IBM [ 19 ] خلال تطوير خط إنتاج NPL ( IBM System/360 )، باستخدام " مزيج جديد من البرمجيات والبرمجيات الدقيقة والأجهزة " . [ 20 ] اكتشفوا أن المحاكاة باستخدام تعليمات إضافية مُنفذة في البرمجيات الدقيقة والأجهزة ، بدلاً من محاكاة البرمجيات باستخدام التعليمات القياسية فقط، لتشغيل البرامج المكتوبة لأجهزة كمبيوتر IBM السابقة، زادت بشكل كبير من سرعة المحاكاة. في السابق، وفرت IBM محاكيات ، على سبيل المثال، للمعالج 650 على جهاز 705. [ 21 ] بالإضافة إلى المحاكيات، كان لدى IBM ميزات توافق على جهازي 709 و 7090 ، [ 22 ] حيث زودت جهاز الكمبيوتر IBM 709 ببرنامج لتشغيل البرامج القديمة المكتوبة لجهاز IBM 704 على جهاز 709 ، ولاحقًا على جهاز IBM 7090. استخدم هذا البرنامج التعليمات المُضافة بواسطة ميزة التوافق [ 23 ] لاعتراض التعليمات التي تتطلب معالجة خاصة؛ جميع تعليمات 704 الأخرى تعمل بنفس الطريقة على 7090. ميزة التوافق على 1410 [ 24 ] تتطلب فقط ضبط مفتاح تبديل وحدة التحكم، وليس برنامج دعم.

في عام 1963، عندما استُخدمت الشفرة الدقيقة لأول مرة لتسريع عملية المحاكاة هذه، صاغ مهندسو شركة IBM مصطلح "المُحاكي" لوصف هذا المفهوم. وفي العقد الأول من الألفية الثانية، شاع استخدام كلمة "محاكاة" في سياق البرمجيات. مع ذلك، قبل عام 1980، كانت كلمة "محاكاة" تشير فقط إلى المحاكاة بمساعدة الأجهزة أو الشفرة الدقيقة، بينما كانت كلمة "محاكاة" تشير إلى محاكاة البرمجيات البحتة. [ 25 ] على سبيل المثال، يُعد الحاسوب المُصمم خصيصًا لتشغيل برامج مُصممة لبنية أخرى مُحاكيًا. في المقابل، قد يكون المُحاكي برنامجًا يعمل على جهاز حاسوب شخصي، بحيث يُمكن محاكاة ألعاب أتاري القديمة عليه. لا يزال المُختصون يُصرّون على هذا التمييز، ولكن حاليًا، غالبًا ما يعني مصطلح "محاكاة" التقليد الكامل لآلة تُنفذ شفرة ثنائية، بينما غالبًا ما تُشير كلمة "محاكاة" إلى محاكاة الحاسوب ، حيث يُستخدم برنامج حاسوبي لمحاكاة نموذج مجرد. تُستخدم المحاكاة الحاسوبية في جميع المجالات العلمية والهندسية تقريبًا، وعلوم الحاسوب ليست استثناءً، حيث توجد العديد من المشاريع التي تحاكي نماذج مجردة لأنظمة الحاسوب، مثل محاكاة الشبكات ، والتي تختلف عمليًا ودلاليًا عن محاكاة الشبكات. [ 26 ]

مقارنة مع تقنية المحاكاة الافتراضية للأجهزة

تُعرف المحاكاة الافتراضية للأجهزة بأنها محاكاة افتراضية لأجهزة الحاسوب كمنصات أجهزة كاملة، أو كنسخ منطقية مُجردة من مكوناتها، أو فقط الوظائف اللازمة لتشغيل أنظمة التشغيل المختلفة . تُخفي المحاكاة الافتراضية الخصائص الفيزيائية لمنصة الحوسبة عن المستخدمين، مُقدمةً بدلاً منها منصة حوسبة مجردة. [ 27 ] [ 28 ] في بداياتها، كان يُطلق على البرنامج الذي يتحكم في المحاكاة الافتراضية اسم "برنامج التحكم"، ولكن مع مرور الوقت، أصبح مصطلحا " المُشرف الافتراضي " أو "مُراقب الآلة الافتراضية" هما الأكثر شيوعًا. [ 29 ] يستطيع كل مُشرف افتراضي إدارة أو تشغيل عدة آلات افتراضية .

انظر أيضاً

مراجع

  1. واريك، مايك (أبريل 1988). "محاكاة نظام التشغيل MS-DOS للمعالج 64 بت" . مجلة الحوسبة !، ص  43. تاريخ الاسترجاع: 10 نوفمبر 2013 .
  2. تمت إزالة محاكاة لينكس من OpenBSD في الإصدار 6.0 https://www.openbsd.org/60.html
  3. أتمتة التصميم الإلكتروني : التركيب والتحقق والاختبار . لونغ-ترنغ وانغ، ياو-وين تشانغ، كوانغ-تينغ تشنغ. أمستردام: مورغان كوفمان/إلسيفير. 2009. ISBN  978-0-08-092200-3. OCLC 433173319 . {{cite book}}صيانة CS1: أخرى ( رابط )
  4. "محاكاة التقليد" . مختبرات مالويربايتس . 17 أكتوبر 2014. تم الاطلاع عليه بتاريخ 30 مايو 2016 .
  5. انظر قضية شركة ميدواي للتصنيع ضد شركة آرتيك الدولية ، 574 F.Supp. 999، المؤيدة في 704 F.2d 1009 (الدائرة التاسعة، 1982) (حيث اعتبرت المحكمة أن ذاكرة القراءة فقط (ROM) الخاصة بلعبة باك مان تُعدّ تثبيتًا كافيًا لأغراض قانون حقوق النشر، حتى وإن كانت اللعبة تتغير في كل مرة تُشغّل فيها). والمادة 2 من اتفاقية برن.
  6. nba-emu/NanoBoyAdvance ، NanoBoyAdvance، 12-03-2025 ، تم الاطلاع عليه بتاريخ 13-03-2025
  7. ^ mgba-emu/mgba ، mGBA ، 13-03-2025 ، استرجاعها 13-03-2025
  8. سكاي (12 مارس 2025)، skylersaleh/SkyEmu ، تم الاطلاع عليه في 13 مارس 2025
  9. "ما هو المحاكاة؟" . مكتبة كونينكليكي . مؤرشف من الأصل بتاريخ 13-09-2015 . تم الاسترجاع 2007-12-11 .
  10. فان دير هوفن، جيفري، برام لومان، وريمكو فيرديغيم. "المحاكاة من أجل الحفظ الرقمي في الممارسة العملية: النتائج". المجلة الدولية للتقييم الرقمي 2.2 (2007): 123-132.
  11. مويرا، غريغوري. "توسيع حدود سياسة التراث التقليدي: الحفاظ على الوصول طويل الأمد إلى محتوى الوسائط المتعددة." مجلة الاتحاد الدولي لجمعيات المكتبات ومؤسساتها 33 (2007): 323-326.
  12. روثنبرغ، جيفري (1998). ""معايير الحل الأمثل". تجنب المأزق التكنولوجي: إيجاد أساس تقني قابل للتطبيق للحفظ الرقمي . مجلس موارد المكتبات والمعلومات . واشنطن العاصمة . تاريخ الاسترجاع: 8 مارس 2008 .
  13. روثنبرغ، جيفري. "حل المحاكاة". تجنب المستنقعات التكنولوجية: إيجاد أساس تقني قابل للتطبيق للحفظ الرقمي. واشنطن العاصمة: مجلس موارد المكتبات والمعلومات، 1998. مجلس موارد المكتبات والمعلومات. 2008. 28 مارس 2008. https://www.clir.org/pubs/reports/rothenberg/contents.html
  14. "أصداء الفن: المحاكاة كاستراتيجية للحفظ" . مؤرشف من الأصل بتاريخ 27-10-2007 . تم الاطلاع عليه بتاريخ 11-12-2007 .
  15. بيتر ماغنوسون (2004). "محاكاة النظام الكامل: الحلقة المفقودة في تطوير البرمجيات" . مؤرشف من الأصل بتاريخ 7 أكتوبر 2012. تم الاطلاع عليه بتاريخ 22 أبريل 2012 .
  16. "تصحيح الأخطاء ومحاكاة النظام الكامل" .
  17. فانيا جولوبوف (2009). "محاكاة النظام الكامل للأنظمة المدمجة" (ملف PDF) . مؤرشف من الأصل (ملف PDF) بتاريخ 9 فبراير 2014. تم الاطلاع عليه بتاريخ 22 أبريل 2012 .
  18. بو، إيمرسون و. (1995). بناء شركة آي بي إم: تشكيل صناعة وتقنياتها . معهد ماساتشوستس للتكنولوجيا. ص 274. ISBN  0-262-16147-8.
  19. بو، إيمرسون دبليو؛ وآخرون (1991). أنظمة IBM 360 وأنظمة 370 المبكرة . معهد ماساتشوستس للتكنولوجيا. ISBN  0-262-16123-0.الصفحات 160-161
  20. محاكاة جهاز IBM 650 على جهاز IBM 705
  21. "أرشيفات IBM: نظام معالجة البيانات 7090 (تابع)" . www-03.ibm.com . 23 يناير 2003. مؤرشف من الأصل في 13 مارس 2005.
  22. "عمليات توافق النظام". دليل مرجعي لنظام معالجة البيانات IBM 7090 (ملف PDF) . مارس 1962. الصفحات 65-66 . A22-6528-4. 
  23. "عمليات توافق النظام". مبادئ تشغيل IBM 1410 (ملف PDF) . مارس 1962. الصفحات 56-57 ، 98-100 . A22-0526-3. 
  24. تاكر، إس. جي. (1965). "محاكاة الأنظمة الكبيرة" . اتصالات رابطة مكائن ​​الحوسبة . 8 (12): 753-761 . doi : 10.1145/365691.365931 . S2CID 15375675 . 
  25. "محاكاة الشبكة أم تقليدها؟" . عالم الشبكات . 22 سبتمبر 2017. تم الاطلاع عليه بتاريخ 22 سبتمبر 2017 .
  26. توربان، إي؛ كينغ، دي؛ لي، جيه؛ فيهلاند، دي (2008). "19". التجارة الإلكترونية: منظور إداري (ملف PDF) (الطبعة الخامسة ). برنتيس هول. ص 27. مؤرشف من الأصل (ملف PDF) بتاريخ 21-05-2009 . تم الاطلاع عليه بتاريخ 13-12-2021 .  
  27. "الافتراضية في التعليم" (ملف PDF) . شركة IBM . أكتوبر 2007. تم الاطلاع عليه في 6 يوليو 2010 .
  28. كريسي، آر جيه (1981). "أصل نظام المشاركة الزمنية VM/370" (ملف PDF) . آي بي إم . تم الاطلاع عليه بتاريخ 26 فبراير 2013 .