إصدار Linux 5.3 kernel

بعد شهرين من تطوير لينوس تورفالدس المقدمة الافراج عن النواة لينكس شنومكس. تشمل التغييرات الملحوظة: دعم وحدات معالجة الرسومات AMD Navi ومعالجات Zhaoxi وتقنية إدارة الطاقة Intel Speed ​​Select، والقدرة على استخدام تعليمات umwait للانتظار دون استخدام الحلقات،
وضع "تثبيت الاستخدام" التفاعلي لوحدات المعالجة المركزية غير المتماثلة، واستدعاء نظام pidfd_open، والقدرة على استخدام عناوين IPv4 من الشبكة الفرعية 0.0.0.0/8، وإمكانية تسريع أجهزة nftables، ودعم HDR في نظام DRM الفرعي، وتكامل برنامج مراقبة الأجهزة الافتراضية ACRN.

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

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

الإصدار الجديد قبل 15794 إصلاحًا من 1974 مطورًا،
حجم التصحيح - 92 ميجابايت (أثرت التغييرات على 13986 ملفًا، تمت إضافة 258419 سطرًا من التعليمات البرمجية،
تمت إزالة 599137 سطرًا). حوالي 39٪ من إجمالي ما تم تقديمه في 5.3
ترتبط التغييرات ببرامج تشغيل الأجهزة، حوالي 12٪ من التغييرات لها
الموقف تجاه تحديث التعليمات البرمجية الخاصة ببنيات الأجهزة، 11%
تتعلق بمكدس الشبكة، و3% لأنظمة الملفات، و3% للداخلية
الأنظمة الفرعية للنواة.

رئيسي الابتكارات:

  • خدمات الذاكرة والنظام
    • التطوير المستمر لوظيفة 'pidfd' للمساعدة في التعامل مع حالات إعادة استخدام معرف PID (يرتبط pidfd بعملية معينة ولا يتغير، بينما يمكن ربط معرف PID بعملية أخرى بعد انتهاء العملية الحالية المرتبطة بمعرف PID هذا). في السابق، تمت إضافة النواة بالفعل
      استدعاء النظام pidfd_send_signal() وعلامة CLONE_PIDFD في استدعاء clone() للحصول على pidfd لاستخدامه في idfd_send_signal(). عند استخدام استدعاء clone() مع علامة CLONE_PIFDD، قد تكون هناك مشكلات مع مديري الخدمة أو النظام الخاص بإنهاء العمليات قسرًا على الذاكرة المنخفضة على نظام Android الأساسي. في هذه الحالة، يتم استخدام استدعاء fork() أو clone() بدون CLONE_PIFDD للبدء.

      يقدم النواة 5.3 استدعاء النظام pidfd_open()، والذي يسمح لك بالحصول على pidfd قابل للتحقق لعملية موجودة عشوائية لم يتم إنشاؤها عبر استدعاء clone() مع علامة CLONE_PIFDD. أضفنا أيضًا دعمًا لاستقصاء pidfd باستخدام poll() وepoll()، مما يسمح لمديري العمليات بتتبع إنهاء العمليات التعسفية دون القلق بشأن حالة السباق إذا تم تعيين PID لعملية جديدة. آلية الإبلاغ عن الخروج من العملية المرتبطة بـ pidfd تشبه الإبلاغ عن الخروج من العملية الفرعية الخاصة بها؛

    • تمت إضافة دعم لآلية تثبيت التحميل إلى برنامج جدولة المهام (لقط الاستخدام)، والذي يسمح لك بالالتزام بالحد الأدنى أو الأقصى لنطاقات التردد، اعتمادًا على المهام النشطة على وحدة المعالجة المركزية. تعمل الآلية المقدمة على تسريع المهام التي تؤثر بشكل مباشر على جودة تفاعل المستخدم من خلال تشغيل هذه المهام على الأقل عند الحد الأدنى من التردد "المطلوب". يتم إطلاق المهام ذات الأولوية المنخفضة التي لا تؤثر على عمل المستخدم باستخدام الحد الأعلى للتردد "المسموح به". يتم تعيين الحدود عبر سمات sched_uclamp_util_min وsched_uclamp_util_max في استدعاء النظام sched_setattr().
    • - دعم إضافي لتكنولوجيا إدارة الطاقة إنتل تحديد السرعة، متوفر على بعض الخوادم التي تحتوي على معالجات Intel Xeon. تسمح لك هذه التقنية بضبط إعدادات الأداء وتقسيم النطاق الترددي لمختلف مراكز وحدة المعالجة المركزية، مما يسمح لك بتحديد أولويات الأداء للمهام التي يتم تنفيذها على مراكز معينة، والتضحية بالأداء على مراكز أخرى؛
    • العمليات في مساحة المستخدم ممنوح القدرة على الانتظار لفترة قصيرة دون استخدام الحلقات باستخدام تعليمات umwait. سيتم تقديم هذه التعليمات، جنبًا إلى جنب مع تعليمات umonitor وtpause، في شرائح Intel "Tremont" القادمة، وستسمح بتأخيرات موفرة للطاقة ولا تؤثر على أداء الخيوط الأخرى عند استخدام Hyper Threading؛
    • تمت إضافة دعم لصفحات الذاكرة الكبيرة (الصفحات الضخمة) لبنية RISC-V؛
    • تمت إضافة القدرة على إلغاء الإشارة إلى مؤشرات النواة إلى مساحة المستخدم إلى آلية التتبع "kprobes"، والتي يمكن استخدامها، على سبيل المثال، لتقييم محتويات الهياكل التي تم تمريرها إلى استدعاءات النظام. تمت إضافة أيضًا القدرة على ضبط الشيكات في مرحلة التمهيد.
    • تمت إضافة خيار PREEMPT_RT إلى ملف التكوين للتشغيل في الوقت الفعلي. لم تتم إضافة رمز الوقت الفعلي نفسه إلى النواة بعد، لكن ظهور الخيار يعد علامة جيدة على أن الملحمة طويلة المدى لـ دمج التصحيحات Realtime-Preempt على وشك الانتهاء؛
    • تمت إضافة استدعاء النظام clone3() مع تنفيذ نسخة أكثر توسعًا من واجهة clone()، والتي تسمح بتحديد عدد أكبر من العلامات؛
    • تمت إضافة معالج bpf_send_signal() للسماح لبرامج BPF بإرسال إشارات إلى عمليات عشوائية؛
    • بالنسبة لأحداث الأداء في بيئة برنامج Hypervisor لـ KVM، تمت إضافة آلية جديدة لتصفية الأحداث للسماح للمسؤول بتحديد أنواع الأحداث المسموح بها أو غير المسموح بها للمراقبة من جانب الضيف؛
    • تمت إضافة القدرة على معالجة البرامج بالدورات إلى آلية التحقق من تطبيق eBPF إذا كان تنفيذ الدورة محدودًا ولا يمكن أن يؤدي إلى تجاوز الحد الأقصى لعدد التعليمات؛
  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • بالنسبة لنظام الملفات XFS، يتم تنفيذ إمكانية اجتياز inode متعدد الخيوط (على سبيل المثال، عند التحقق من الحصص). تمت إضافة ioctl BULKSTAT وINUMBERS جديدين، مما يوفر الوصول إلى الميزات المقدمة في الإصدار الخامس من تنسيق FS، مثل وقت ميلاد inode والقدرة على تعيين معلمات BULKSTAT وINUMBERS لكل مجموعة AG (مجموعات التخصيص)؛
    • في تحويلة 4 دعم إضافي الفراغات في الدلائل (كتل غير مرتبطة).
      المعالجة المقدمة علامة "i" (غير قابلة للتغيير) للملفات المفتوحة (حظر الكتابة في موقف ما إذا تم تعيين العلامة في الوقت الذي كان فيه الملف مفتوحًا بالفعل)؛

    • يوفر Btrfs تعريفًا للتنفيذ السريع لـ crc32c على جميع البنيات؛
    • في CIFS، تم إهمال التعليمات البرمجية لدعم smbdirect. يضيف SMB3 القدرة على استخدام خوارزميات التشفير في وضع GCM. تمت إضافة خيار تحميل جديد لاستخراج معلمات الوضع من ACEs (إدخال التحكم في الوصول). تحسين أداء الاتصال المفتوح () ؛
    • تمت إضافة خيار إلى F2FS لتقييد أداة تجميع مجمعي البيانات المهملة عند التشغيل في نقطة التفتيش = وضع التعطيل. تمت إضافة ioctl لإزالة نطاقات الحظر من F2FS، مما يسمح بتغيير حجم القسم أثناء التنقل. تمت إضافة القدرة على وضع ملف ترحيل الصفحات في F2FS مع الإدخال / الإخراج المباشر. تمت إضافة دعم لتثبيت ملف وتخصيص كتل لملفات مماثلة لجميع المستخدمين؛
    • تمت إضافة دعم لعمليات sendmsg() وrecvmsg() غير المتزامنة إلى واجهة الإدخال/الإخراج غير المتزامنة io_uring؛
    • تمت إضافة دعم الضغط باستخدام خوارزمية zstd والقدرة على التحقق من صور FS الموقعة إلى نظام ملفات UBIFS؛
    • تمت إضافة دعم ملصقات أمان SELinux للملفات إلى Ceph FS؛
    • بالنسبة إلى NFSv4، يتم تطبيق خيار التثبيت الجديد "nconnect ="، والذي يحدد عدد الاتصالات التي تم إنشاؤها مع الخادم. سيتم توزيع حركة المرور بين هذه الاتصالات باستخدام موازنة التحميل. بالإضافة إلى ذلك، يتم الآن إنشاء دليل /proc/fs/nfsd/clients بواسطة خادم NFSv4 بمعلومات حول العملاء الحاليين، بما في ذلك معلومات حول الملفات التي فتحوها؛
  • المحاكاة الافتراضية والأمن
    • تتضمن النواة برنامج Hypervisor للأجهزة المدمجة ACRN، والذي تمت كتابته مع وضع الاستعداد في الوقت الفعلي وسهولة الاستخدام في المهام الحرجة في الاعتبار. يوفر ACRN الحد الأدنى من الحمل، ويضمن زمن وصول منخفض واستجابة كافية عند التفاعل مع المعدات. يتم دعم المحاكاة الافتراضية لموارد وحدة المعالجة المركزية والإدخال / الإخراج والنظام الفرعي للشبكة والرسومات وعمليات الصوت. يمكن استخدام ACRN لتشغيل العديد من الأجهزة الافتراضية المعزولة في وحدات التحكم الإلكترونية ولوحات المعلومات وأنظمة معلومات السيارات وأجهزة إنترنت الأشياء الاستهلاكية وغيرها من المعدات المدمجة؛
    • في وضع المستخدم لينكس مضاف وضع السفر عبر الزمن الذي يسمح لك بإبطاء أو تسريع الوقت في بيئة UML الافتراضية لتسهيل تصحيح أخطاء التعليمات البرمجية المرتبطة بالوقت. وأضاف المعلمة أيضا
      بدء السفر عبر الزمن، والذي يسمح لساعة النظام بالبدء من الوقت المحدد بتنسيق العصر؛

    • تمت إضافة خيارات سطر أوامر kernel الجديدة "init_on_alloc" و"init_on_free"، والتي، إذا تم تحديدها، تمكن من تصفير مناطق الذاكرة المخصصة والمحررة (ملء الأصفار أثناء malloc ومجاني)، مما يسمح بزيادة الأمان بسبب الحمل الإضافي للتهيئة؛
    • تمت إضافة سائق جديد virtio-iommu مع تنفيذ جهاز شبه افتراضي يسمح بإرسال طلبات IOMMU، مثل ATTACH وDETACH وMAP وUNMAP، عبر النقل الفعّال دون محاكاة جداول صفحات الذاكرة؛
    • تمت إضافة سائق جديد virto-pmemأ يمثل الوصول إلى أجهزة التخزين المعينة لمساحة العنوان الفعلية، مثل NVDIMMs؛
    • تم تنفيذ القدرة على إرفاق مفاتيح التشفير بمستخدم أو بمساحة اسم الشبكة (تصبح المفاتيح غير قابلة للوصول خارج مساحة الاسم المحددة)، بالإضافة إلى حماية المفاتيح باستخدام قوائم ACL؛
    • إلى نظام التشفير الفرعي مضاف دعم خوارزمية التجزئة غير المشفرة السريعة جدًا com.xxxhash، والتي تعتمد سرعتها على أداء الذاكرة؛
  • النظام الفرعي للشبكة
    • دعم التعامل مع عناوين IPv4 في النطاق 0.0.0.0/8، والذي كان غير قابل للاستخدام في السابق. مقدمة لهذه الشبكة الفرعية سوف تخصيص 16 مليون عنوان IPv4 آخر؛
    • في Netfilter لnftables مضاف دعم آليات تصفية الحزم المسرّعة للأجهزة من خلال استخدام ما تمت إضافته إلى برامج التشغيل واجهة برمجة تطبيقات كتلة التدفق. يمكن وضع جداول القواعد بأكملها مع جميع السلاسل على جانب محولات الشبكة. يتم التمكين عن طريق ربط علامة NFT_TABLE_F_HW بالجدول. يدعم البيانات الوصفية البسيطة للطبقة 3 و4، وإجراءات القبول/الرفض، والتعيينات حسب عنوان IP المصدر/الوجهة ومنافذ الشبكة، ونوع البروتوكول؛
    • أضيفت بواسطة دعم مدمج لتتبع الاتصال لجسور الشبكة، والذي لا يتطلب استخدام طبقة مضاهاة br_netfilter؛
    • في nf_tables مضاف دعم وحدة SYNPROXY، التي تكرر وظائف مماثلة من iptables، بالإضافة إلى القدرة على التحقق من قواعد الخيارات الفردية في رأس IPv4؛
    • تمت إضافة القدرة على إرفاق برامج BPF باستدعاءات النظام setockopt() وgetsockopt()، والتي، على سبيل المثال، تسمح لك بإرفاق معالجات وصول مخصصة لهذه الاستدعاءات. بالإضافة إلى ذلك، تمت إضافة نقطة اتصال جديدة (خطاف)، والتي يمكن من خلالها تنظيم مكالمة إلى برنامج BPF مرة واحدة لكل فاصل زمني RTT (وقت ذهاب وإياب، وقت اختبار الاتصال)؛
    • لـ IPv4 وIPv6 مضاف آلية جديدة لتخزين بيانات التوجيه في المرحلة التالية، تهدف إلى زيادة قابلية التوسع في جداول التوجيه. وأظهرت الاختبارات التي تم إجراؤها أنه باستخدام النظام الجديد، تم تحميل مجموعة من 743 ألف مسار إلى النواة خلال 4.3 ثانية فقط؛
    • للبلوتوث مُنفّذ الوظائف المطلوبة لدعم LE ping؛
  • معدات
    • أضيفت بواسطة دعم معالجات الشركة المتوافقة مع x86 تشاوكسينتم تطويره نتيجة لمشروع مشترك بين شركة VIA Technologies وبلدية شنغهاي. تعتمد عائلة وحدة المعالجة المركزية ZX على بنية Isaiah x86-64، لتواصل تطوير التكنولوجيا فيا سنتور;
    • أضاف النظام الفرعي DRM (Direct Rendering Manager)، بالإضافة إلى برامج تشغيل الرسومات amdgpu وi915، دعمًا لتحليل ومعالجة وإرسال البيانات الوصفية HDR (النطاق الديناميكي العالي) عبر منفذ HDMI، مما يسمح باستخدام لوحات HDR وشاشات قادرة على عرض نطاقات إضافية من السطوع؛
    • يضيف برنامج تشغيل Amdgpu الدعم الأولي لـ AMD NAVI GPU (RX5700)، والذي يتضمن برنامج التشغيل الأساسي، ورمز تفاعل الشاشة (DCN2)، وGFX ودعم الحوسبة (GFX10)،
      SDMA 5 (نظام DMA0)، وأجهزة تشفير/فك تشفير إدارة الطاقة والوسائط المتعددة (VCN2). يعمل amdgpu أيضًا على تحسين دعم بطاقات GPU المستندة إلى Vega12 وVega20 مع المزيد من خيارات إدارة الذاكرة والطاقة؛

    • أضاف برنامج تشغيل Amdkfd (لوحدات معالجة الرسومات المنفصلة مثل Fiji وTonga وPolaris) دعمًا للبطاقات المستندة إلى وحدات معالجة الرسومات VegaM؛
    • في برنامج تشغيل DRM لبطاقات فيديو Intel لرقائق Icelake مُنفّذ وضع تصحيح جاما متعدد القطاعات الجديد. تمت إضافة القدرة على الإخراج عبر DisplayPort بتنسيق YCbCr4:2:0. وأضاف البرامج الثابتة الجديدة جوك لـ SKL، BXT، KBL، GLK وICL. تم تنفيذ القدرة على إيقاف تشغيل طاقة الشاشة في الوضع غير المتزامن. أضيفت بواسطة دعم حفظ واستعادة سياق العرض لرقائق Ironlake (gen5) وgen4 (Broadwater - Cantiga)، مما يسمح باستعادة حالة وحدة معالجة الرسومات من مساحة المستخدم عند التبديل من عملية مجمعة إلى أخرى؛
    • يوفر برنامج التشغيل Nouveau الكشف عن شرائح NVIDIA Turing TU116؛
    • إمكانات موسعة لبرنامج تشغيل DRM/KMS لمسرعات عمليات شاشة ARM Komeda (Mali D71)، وإضافة دعم للقياس وتقسيم/دمج الطبقات والتدوير والكتابة البطيئة وAFBC وSMMU وY0L2 وP010 وYUV420_8/10BIT تنسيقات ترميز الألوان؛
    • تمت إضافة دعم لسلسلة معالج الرسوميات A540 GPU Adreno من Qualcomm إلى برنامج تشغيل MSM، بالإضافة إلى دعم وحدة التحكم MSM8998 DSI لـ Snapdragon 835؛
    • تمت إضافة برامج تشغيل لشاشات LCD Samsung S6E63M0، Armadeus ST0700، EDT ETM0430G0DH6، OSD101T2045-53TS،
      Evervision VGG804821، FriendlyELEC HD702E، KOE tx14d24vm1bpa، TFC S9700RTWV43TR-01B، EDT ET035012DM6 وVXT VL050-8048NT-C01؛

    • وأضاف برنامج تشغيل لتمكين أدوات تسريع فك التشفير
      مقاطع الفيديو المتوفرة في SoC Amlogic Meson؛

    • تم تقديم برنامج التشغيل v3d (لوحدة معالجة الرسومات Broadcom Video Core V المستخدمة في Raspberry Pi). دعم إرسال تظليل الحساب؛
    • وأضاف برنامج تشغيل لوحات المفاتيح ولوحات التتبع SPI المستخدمة في الطرازات الحديثة من أجهزة الكمبيوتر المحمولة Apple MacBook وMacBook Pro؛
    • أضيفت بواسطة حماية إضافية لمكالمات ioctl المرتبطة ببرنامج تشغيل القرص المرن، ويتم وضع علامة على برنامج التشغيل نفسه على أنه لم تتم صيانته
      ("يتيم")، مما يعني إنهاء اختباره. لا يزال برنامج التشغيل مخزنًا في النواة، لكن تشغيله الصحيح غير مضمون. يعتبر برنامج التشغيل قديمًا لأنه من الصعب العثور على أجهزة صالحة لاختباره - حيث تستخدم جميع محركات الأقراص الخارجية الحالية، كقاعدة عامة، واجهة USB.

    • وأضاف برنامج تشغيل cpufreq لألواح Raspberry Pi، والذي يسمح لك بالتحكم ديناميكيًا في التغيير في تردد المعالج؛
    • تمت إضافة دعم لـ ARM SoC Mediatek mt8183 الجديد (4x Cortex-A73 + 4x Cortex-A53)، وTI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSPs + MMA) وAmlogic G12B (4x Cortex-A73 + 2x Cortex- A53)، وكذلك المجالس:
      • النقاء Librem5,
      • سرعة بي إم سي,
      • مايكروسوفت أوليمبوس بي إم سي,
      • كونترون سمارك,
      • نوفتيك ميركات96 (i.MX7)،
      • إس تي مايكرو أفنجر96,
      • جوجل تشيزا (كوالكوم SDM845)،
      • كوالكوم دراجونبورد 845c (كوالكوم SDM845)،
      • هاجسون X99 صندوق التلفزيون (Rockchip RK3399)،
      • خداس إيدج/إيدج-V/كابتن (روتشيب RK3399)،
      • هايهوب آر زي/G2M،
      • نكسب LS1021A-TSN.

وفي الوقت نفسه، قامت مؤسسة البرمجيات الحرة بأمريكا اللاتينية شكلت
خيار نواة مجانية تماما 5.3 - لينكس ليبر 5.3 جنو، تم مسحها من البرامج الثابتة وعناصر برنامج التشغيل التي تحتوي على مكونات غير حرة أو أقسام تعليمات برمجية، والتي يقتصر نطاقها من قبل الشركة المصنعة. يعمل الإصدار الجديد على تعطيل تحميل blob في برامج تشغيل qcom وhdcp drm وalegro-dvt وmeson-vdec.
كود تنظيف النقطة المحدثة في برامج التشغيل والأنظمة الفرعية amdgpu وi915 وnetx وr8169 وbrcmfmac وrtl8188eu وadreno وsi2157 وpvrusb2 وtouchscreen_dmi وskylake sound driver ووثائق الرمز الصغير.

المصدر: opennet.ru

إضافة تعليق