WoW64

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

مكتبات الترجمة

يتألف النظام الفرعي WoW64 من طبقة توافق خفيفة الوزن ذات واجهات متشابهة على جميع إصدارات ويندوز 64 بت. ويهدف إلى إنشاء بيئة 32 بت توفر الواجهات اللازمة لتشغيل تطبيقات ويندوز 32 بت الأصلية على نظام 64 بت. يتم تنفيذ WOW64 باستخدام عدة مكتبات DLL، منها: [ 3 ]

  1. Wow64.dll، الواجهة الأساسية لنواة نظام التشغيل ويندوز إن تي التي تترجم (تعمل كدالة وسيطة) بين استدعاءات 32 بت و 64 بت، بما في ذلك معالجة المؤشرات ومكدس الاستدعاءات.
  2. Wow64win.dll، والذي يوفر نقاط الدخول المناسبة لتطبيقات 32 بت (win32k thunks)
  3. ملف DLL يسمح بتنفيذ تعليمات x86 ذات 32 بت، والتي تختلف باختلاف بنية مجموعة التعليمات .
    • في معالجات x86-64 ، Wow64cpu.dllيتولى النظام مهمة تحويل المعالج من وضع 32 بت إلى وضع 64 بت. هذه العملية غير مكلفة حسابيًا، لأن أجهزة x86-64 تحتوي على وضع أصلي لتشغيل كود x86 ذي 32 بت. [ 4 ]
    • في معالج IA-64 ( إيتانيوم 2 )، يلزم وجود ثلاثة ملفات لمحاكاة برمجية أبطأ [ 5 ]Wow64cpu.dll : ، وهي "طبقة تجريد وحدة المعالجة المركزية"؛ IA32Exec.bin، وهو محاكي برمجيات x86؛ و Wowia32x.dll، وهو الجسر بين المحاكي ونظام WOW64. [ 6 ]
    • على معالج ARMv8 64 بت ، xtajit.dllلمحاكاة x86، wowarmhw.dllوللتبديل إلى وضع ARM32. [ 3 ]

نظام التسجيل والملفات

يتولى النظام الفرعي WoW64 أيضًا جوانب رئيسية أخرى لتشغيل تطبيقات 32 بت. فهو يُعنى بإدارة تفاعل تطبيقات 32 بت مع مكونات نظام التشغيل ويندوز، مثل سجل النظام (Registry) ، الذي يحتوي على مفاتيح خاصة بتطبيقات 64 بت و32 بت. على سبيل المثال، يُعدّ HKEY_LOCAL_MACHINE\Software\Wow6432Node مكافئًا لـ HKEY_LOCAL_MACHINE\Software في نظام 32 بت (مع العلم أن تطبيقات 32 بت لا تُدرك هذا التوجيه). يتم ربط بعض مفاتيح سجل النظام من 64 بت إلى مكافئاتها في 32 بت، بينما يتم عكس محتويات مفاتيح أخرى، وذلك بحسب إصدار ويندوز.

يستخدم نظام التشغيل هذا %SystemRoot%\system32المجلد لمكتباته وملفاته التنفيذية ذات 64 بت. ويتم ذلك لأسباب تتعلق بالتوافق مع الإصدارات السابقة، حيث أن العديد من التطبيقات القديمة مُبرمجة مسبقًا لاستخدام هذا المسار. عند تشغيل تطبيقات 32 بت، يقوم WoW64 تلقائيًا بإعادة توجيه الوصول إلى "system32" (مثل تحميلات DLL) إلى هذا المجلد %SystemRoot%\SysWoW64، الذي يحتوي على مكتبات وملفات تنفيذية 32 بت. الاستثناءات من عمليات إعادة التوجيه هذه هي: [ 7 ]

  • %SystemRoot%\system32\catroot
  • %SystemRoot%\system32\catroot2
  • %SystemRoot%\system32\driverstore(تمت إعادة التوجيه على أنظمة التشغيل Windows Server 2008 وWindows Vista وWindows Server 2003 وWindows XP)
  • %SystemRoot%\system32\drivers\etc
  • %SystemRoot%\system32\logfiles
  • %SystemRoot%\system32\spool

تساعد عملية إعادة التوجيه على استمرار عمل تطبيقات 32 بت دون الحاجة إلى معرفة حالة WoW64. [ 7 ] إذا أراد تطبيق 32 بت الوصول إلى المجلد الحقيقي %SystemRoot%\System32، فيمكنه القيام بذلك من خلال الدليل الوهمي %SystemRoot%\sysnativeمنذ نظام التشغيل Windows Vista. [ 7 ] يمكن اكتشاف حالة WoW64 عبر IsWow64Process()...

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

توجد أيضًا بعض المجلدات الجديدة على ARM64، حيث لا يقتصر عمل WOW64 على تشغيل برامج x86 ذات 32 بت فحسب، بل يشمل أيضًا برامج ARM ذات 32 بت، والتي تستخدم SysArm32بدلاً من ذلك. يدعم ARM64 أيضًا ما يُسمى بـ CHPE "البرنامج الهجين المُجمَّع"، والذي يحتوي على كود ARM64 في حاوية مكتبة ديناميكية x86 (لتحسين الكفاءة والتوافق دون الحاجة إلى محاكاة)؛ وتوجد هذه المكتبات الديناميكية في [ 9 ]SyCHPE32 .

توافق التطبيقات

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

يدعم النظام تطبيقات الخدمة ذات 32 بت. يحتوي مجلد SysWOW64 الموجود في مجلد Windows على محرك نظام التشغيل على العديد من التطبيقات لدعم تطبيقات 32 بت (مثل cmd.exe وodbcad32.exe لتسجيل اتصالات ODBC لتطبيقات 32 بت). عادةً ما تكون تطبيقات 16 بت القديمة لنظام MS-DOS والإصدارات الأولى من Windows غير متوافقة مع إصدارات 64 بت من Windows Vista و7 و8 و10، ولكن يمكن تشغيلها على نظام Windows 64 بت عبر برامج المحاكاة الافتراضية. من ناحية أخرى، يمكن لإصدارات 32 بت من Windows XP وVista و7 و8 و10 تشغيل تطبيقات 16 بت بسلاسة تامة أو مع القليل من المشاكل. لا يمكن تشغيل تطبيقات 16 بت مباشرةً على إصدارات x64 من Windows، لأن وحدة المعالجة المركزية لا تدعم وضع VM86 عند التشغيل في بيئة x64.

تم تنفيذ Internet Explorer كتطبيق 32 بت و 64 بت بسبب العدد الكبير من مكونات ActiveX 32 بت على الإنترنت والتي لن تكون قادرة على الاتصال بإصدار 64 بت.

في السابق، كان الإصدار 32 بت يُستخدم افتراضيًا، وكان من الصعب تعيين الإصدار 64 بت كمتصفح افتراضي. تغير هذا في Internet Explorer 10، الذي كان يشغل إضافات 32 بت داخل جلسة 64 بت، مما ألغى الحاجة إلى التبديل بين الإصدارين. إذا انتقل المستخدم إلى مجلد 32 بت (عادةً C:\Program Files (x86)\Internet Explorer) ونقر نقرًا مزدوجًا على ملف iexplore.exe هناك، فسيتم تحميل الإصدار 64 بت. أما في Internet Explorer 9 والإصدارات السابقة، فكان يتم تحميل الإصدار 32 بت فقط.

اعتبارًا من عام 2010يُسبب خللٌ في طبقة الترجمة لإصدار x64 من WoW64 [ 10 ] [ 11 ] عدم توافق جميع تطبيقات 32 بت التي تعتمد على دالة GetThreadContext من واجهة برمجة تطبيقات Windows . تشمل هذه التطبيقات أدوات تصحيح الأخطاء، وأدوات تتبع مكدس الاستدعاءات (مثل بيئات التطوير المتكاملة التي تعرض مكدس الاستدعاءات)، والتطبيقات التي تستخدم محركات جمع البيانات المهملة (GC). يُعد Boehm GC أحد محركات جمع البيانات المهملة الأكثر استخدامًا ولكنه مُتأثر [ 12 ] . كما يُستخدم كجامع البيانات المهملة الافتراضي في Mono ، وهو برنامج شائع الاستخدام أيضًا . على الرغم من أن Mono قدّمت جامع بيانات مهملة جديدًا (اختياريًا) يُسمى SGen-GC في أكتوبر 2010، إلا أنه يُجري مسح المكدس بنفس طريقة Boehm GC، مما يجعله غير متوافق مع WoW64. لم يُقدّم أي حل حتى يوليو 2016، على الرغم من اقتراح حلول بديلة. [ 13 ]

أداء

بحسب مايكروسوفت، فإنّ أداء البرامج ذات 32 بت التي تعمل على نظام WOW64 (x64) يُشابه أداءها عند تشغيلها على نظام ويندوز 32 بت، ولكن مع عدد أقل من الخيوط الممكنة. أما على نظام غير x64، فإنّ WOW64 يُسبّب عبئًا إضافيًا على الأداء بسبب محاكاة البرامج المستخدمة. [ 5 ]

يمكن منح تطبيق 32 بت 4  جيجابايت كاملة من الذاكرة الافتراضية على نظام 64 بت، بينما في نظام 32 بت، يتم فقدان بعض هذه الذاكرة القابلة للعنونة لأنها تستخدم بواسطة النواة والأجهزة الطرفية ذات التعيين في الذاكرة مثل محول العرض ، مما يؤدي عادةً إلى قدرة التطبيقات على استخدام 2 جيجابايت أو 3 جيجابايت من ذاكرة الوصول العشوائي كحد أقصى.

انظر أيضاً

ملحوظات

مراجع

  1. كوين راديتش؛ دي سي ذا جيك؛ إم ساتران جونيور (19 أغسطس 2020). "تفاصيل تنفيذ WOW64" . learn.microsoft.com . مؤرشف من الأصل في 16 أبريل 2023. تم الاطلاع عليه في 16 أبريل 2023 .
  2. كونواي، آدم (25 يناير 2023). "إصدار Wine 8.0 مع توافق أفضل مع أجهزة التحكم، ودعم تجريبي للعبة WoW64، والمزيد" . مطورو XDA . مؤرشف من الأصل في 16 أبريل 2023. تم الاطلاع عليه في 16 أبريل 2023 .
  3. 1 2 "تفاصيل تنفيذ WOW64" . مايكروسوفت . تم الاسترجاع في 21-04-2018 .
  4. إيكلز، ستيفن (9 نوفمبر 2020). "WOW64!Hooks: WOW64 Subsystem Internals and Hooking Techniques" . مانديانت .
  5. 1 2 "الأداء واستهلاك الذاكرة في وضع WOW64" . مايكروسوفت . تم الاطلاع عليه بتاريخ 2013-05-06 .
  6. "تفاصيل تنفيذ WOW64 (ويندوز)" . 26 أبريل 2010. مؤرشف من الأصل في 2010-04-26. نسخة سابقة من المقال، والتي تظهر Wow64cpu.dllكجزء من تطبيق IA-64.
  7. 1 2 3 "مُعيد توجيه نظام الملفات (ويندوز)" . msdn.microsoft.com . 2 فبراير 2023.
  8. "winapi - SHGetFolderPath() 32 بت مقابل 64 بت" . Stack Overflow .
  9. بينيش، بيتر (4 نوفمبر 2018). "WoW64 internals: recovering Heaven's Gate on ARM" . mindless-area (wbenny.github.io) .
  10. زاك سو (13 نوفمبر 2010). "خطأ في WOW64: قد تُرجع الدالة GetThreadContext() بيانات قديمة" . مدونة زاك سو . تاريخ الاسترجاع: 15 نوفمبر 2010 .
  11. "خلل في نظام التشغيل WOW64: تطبيقات XP القديمة ذات 32 بت تتعطل على نظام التشغيل Win7 WOW64" . شبكة مطوري مايكروسوفت . 11 نوفمبر 2010. تاريخ الاطلاع: 15 نوفمبر 2010 .
  12. "مناقشات حول جامع القمامة من بوهم (Boehm GC)" . مؤرشف من الأصل بتاريخ 16 يوليو 2011. تم الاطلاع عليه بتاريخ 25 نوفمبر 2010 .
  13. "تُعيد دالة GetThreadContext قيم سجلات قديمة على WOW64" . مايكروسوفت = 23-07-2016 . مؤرشف من الأصل في 19-08-2016 . تم الاسترجاع في 23-07-2016 .