قد يتم إيقاف هندسة Linux Kernel x32

نواة لينكس 4.19

مؤخرا تم إصدار بريد إلكتروني من خلال القائمة البريدية لـ Linux Kernel وهذا البريد الإلكتروني هدفه الرئيسي إزالة التعليمات البرمجية من تنفيذ العمارة الفرعية x32 (يجب عدم الخلط بينه وبين x86 IA-32).

والذي يسمح لك باستخدام نموذج عنونة الذاكرة 32 بت (هجين x86 و x86_64) على أنظمة x86 64 بت.

ما هي بنية x32؟

من المهم الإشارة إلى أن العمارة الفرعية x32 هي هجين x86_64 ABI، والذي يسمح باستخدام نموذج عنونة ذاكرة 32 بت على أنظمة 64 بت (يعمل المعالج في وضع 64 بت ، ولكنه يستخدم مؤشرات 32 بت وعمليات حسابية).

أبي X32 يسمح للتطبيقات بالاستفادة الكاملة من بنية x86_64 ، مثل السجلات الإضافية والتعليمات الأسرع ، PIC ABI.

في الوقت نفسه ، يدعم ABI X32 مؤشرات ذاكرة 32 بت ، مما يحفظ الذاكرة ، ويساهم في تعبئة ذاكرة التخزين المؤقت للمعالج بشكل أكثر كفاءة ، وله تأثير إيجابي على السرعة الإجمالية لتنفيذ التعليمات البرمجية.

الحد من ABI X32 هو استحالة توجيه أكثر من 4 جيجا بايت من الذاكرة من التطبيق.

كان دعم X32 جزءًا من Linux Kernel منذ إصداره 3.4 ، الذي تم تشكيله في مايو 2012.

سوف يناقش المطورون ما إذا كانوا سيستمرون في صيانة هذه البنية أم لا

وفقًا للمطور الذي اقترح إزالة تقنية x32 لم يتم تبريره ولم يتم العثور على تطبيق عملي في المخططات الصناعية الحديثة.

الى جانب ويستخدم كود l x32 طريقة مثيرة للجدل للعمل مع مكالمات النظام، مما يؤدي إلى خطر مقاطعة التشغيل العادي بعد معالجة تطبيقات استدعاء النظام.

قال Linus Torvalds إنه سيوافق على إزالة x32 إذا لم يتم تقديم الحجج أو إذا لم يتم تقديم الأنظمة التي تم فيها تطبيق البنية الفرعية x32.

لينوس لاحظ أيضًا أن استخدام بنية x32 كان مقصورًا على ما يبدو على اختبار الأداء الفائقs ، حيث يرتبط دعم هذه البنية الفرعية بقدر كبير من التعقيدات في الحفاظ على التوزيعات وبيئة التطوير.

البريد:

مرحبا بالجميع.

أنا أفكر بجدية في إرسال تصحيح لإزالة دعم x32 من Linux. فيما يلي بعض المشكلات المتعلقة بهذا:

  1. ليس من الواضح تمامًا أن لديها مستخدمين. بقدر ما أعرف ، يتم دعمه على Gentoo و Debian
  2. الطريقة التي يعمل بها نظام الاتصال غريبة للغاية. يتم إدخال معظم عمليات syscalls على x32 عبر * الأصلي * (أي ليس COMPAT_SYSCALL_DEFINE) بنقطة الإدخال ، وهذا مقصود.

على سبيل المثال ، يستخدم Adagtimex () الإدخال الأصلي ، وليس الإدخال المتوافق ، لأن x32 Struct timex يطابق تخطيط x86_64. لكن هناك عددًا قليلاً من نداءات syscalls لها نقاط دخول منفصلة - وهذه هي نقاط الدخول التي تبدأ من 512.

هذه تدخل من خلال نقاط دخول COMPAT_SYSCALL_DEFINE.

X32 syscalls التي * ليست * في النطاق 512 تنتهك كل مظهر من أشكال اصطلاح kernel syscall.

في معالجات syscall ، يعود in_compat_syscall () صحيحًا ، ولكن لم يتم استدعاء إدخال COMPAT_SYSCALL_DEFINE ، فهذا جنون وأنت تخاطر بتكسير الأشياء عندما يقوم الأشخاص بإعادة تشكيل تطبيقات نظامهم.

وفوق كل شيء ، لا أحد يحاول هذه الأشياء.

في مناسبة واحدة عند اختبار x32 ، خلص أحد مطوري Gentoo إلى أن تحسين الأداء عند التبديل إلى ABI x32 ليس بالقدر الذي تظهره الاختبارات التركيبية من صانعي ABI x32:

يُلاحظ تقدم كبير فقط عند مقارنته بهندسة x86 السابقة ، ولكن عند مقارنتها بهندسة x86-64 الحالية ، فإن المكسب لا يكاد يذكر (أظهرت اختبارات SPEC التي أجراها مبتكرو x32 تسارعًا يصل إلى 40٪ مقارنة مع ABI x86_64 الكلاسيكي ، والاختبارات مع برنامج الترميز H.264 أظهر تسارعًا بنسبة 15-20 ٪).


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: AB Internet Networks 2008 SL
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.