تفعيل حجم الصفحة الذي يبلغ 16 كيلوبايت

يتوافق الإصدار 15 من نظام التشغيل Android (AOSP التجريبي) والإصدارات الأحدث مع نظام التشغيل Android بحجم صفحة 16 كيلوبايت. يستخدم هذا الخيار ذاكرة إضافية ولكن تحسين أداء النظام.

لا تتوافق الصفحات التي يبلغ حجمها 16 كيلوبايت إلا مع استهدافات arm64 ذات النواة التي يبلغ حجمها 16 كيلوبايت. ومع ذلك، هناك أيضًا خيار محاكاة مساحة المستخدم التي تبلغ 16 كيلوبايت على x86_64 لتطبيق حبَّار.

لتفعيل صفحات 16 كيلوبايت، يجب ضبط خيارات الإصدار التالية على جهاز:

  • تُزيل ميزة "PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true" PAGE_SIZE. وتجعل المكونات تحدد حجم الصفحة في وقت التشغيل.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 الذي يضمن ملفات ELF للنظام الأساسي تم تصميمها بتوافق 16 كيلوبايت. هذا الحجم الأكبر من المطلوب مخصص التوافق المستقبلي. من خلال محاذاة ELF التي تبلغ 16 كيلوبايت، يمكن للنواة دعم أحجام الصفحات: 4 كيلوبايت/16 كيلوبايت.

التأكّد من علامات الإصدار

بعد اختيار هدف lunch، تأكَّد من أنّه تم إعداد علامات الإصدار. بشكل صحيح في البيئة:

$ source build/envsetup.sh
$ lunch target

$ get_build_var TARGET_MAX_PAGE_SIZE_SUPPORTED
16384
$ get_build_var TARGET_NO_BIONIC_PAGE_SIZE_MACRO
true

إذا كان الأمران السابقان يعرضان 16384 وtrue على التوالي، سيتم يتم إعداد العلامات بشكل صحيح.

إنشاء مكتبات مشتركة باستخدام تنسيق ELF الذي يبلغ 16 كيلوبايت

لإنشاء مكتبات مشتركة تشكل جزءًا من مشروع Android، ما عليك سوى وضع علامات الإصدار هذه في هدفك:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

لإنشاء مكتبات مشتركة ليست جزءًا من مشروع Android، تحتاج إلى تمرير علامة الربط هذه:

-Wl,-z,max-page-size=16384

التحقُّق من البرامج الثنائية والعناصر المُعَدة مسبقًا لمحاذاة ELF بحجم 16 كيلوبايت

إن أفضل طريقة للتحقق من المحاذاة وسلوك بيئة التشغيل هي الاختبار والتشغيل على نواة مجمّعة بحجم 16 كيلوبايت. ومع ذلك، للتعرّف على بعض المشاكل في وقت سابق:

  • بدءًا من إصدار Android W (الإصدار التجريبي من AOSP)، يمكنك ضبط PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true في وقت الإصدار استخدام ignore_max_page_size: true في Android.bp و LOCAL_IGNORE_MAX_PAGE_SIZE := true في Android.mk لتجاهلها مؤقتًا معهم. تتحقّق هذه الإعدادات من جميع الإعدادات المسبقة الإنشاء وتسمح لك باكتشاف حالات يتم تحديثها ولكن لا تتم محاذاتها مع 16 كيلوبايت.

  • يمكنك تشغيل atest elf_alignment_test الذي يتحقق من توافق ملفات ELF المحفوظة على الجهاز فقط على الأجهزة عند إطلاقها الإصدار 15 من نظام التشغيل Android (الإصدار التجريبي من AOSP) والإصدارات الأحدث