بدأت Google في فتح تنفيذ نموذج التدفق M: N

متصفح الجوجل اقترحت لتضمين المجموعة الأولى من التصحيحات في نواة لينكس مع تنفيذ المكونات الضرورية لضمان عمل نموذج الترابط M: N. ترتبط مبادرة Google بفتح واجهة برمجة تطبيقات تم تطويرها خلف الأبواب المغلقة التبديل إلى بالنسبة إلى Linux kernel ، والذي يوفر نظامًا فرعيًا متعدد الخيوط يتم تنفيذه في مساحة المستخدم التي تستخدم نموذج مؤشر الترابط M: N. تستخدم Google النظام الفرعي لتوفير الخدمات التي تتطلب أدنى حد من التأخير. يتم تنفيذ جدولة وإدارة توزيع مؤشرات الترابط بالكامل في مساحة المستخدم ، مما يمكن أن يقلل بشكل كبير من عدد مفاتيح التبديل عن طريق تقليل تنفيذ استدعاءات النظام.

لضمان تشغيل هذا النظام الفرعي ، تم تنفيذ SwitchTo API على مستوى Linux kernel ، مما يوفر ثلاث عمليات أساسية - الانتظار والاستئناف والتبديل (التبديل). للتضمين في النواة ، تم اقتراح رمز لعملية FUTEX_SWAP جديدة ، مكملة FUTEX_WAIT و FUTEX_WAKE، ويوفر إطار عمل لبناء مكتبات متعددة الخيوط لمساحة المستخدم. يمكن أيضًا استخدام FUTEX_SWAP لتمرير الرسائل بين المهام ، على غرار RPC. على سبيل المثال ، في الوقت الحالي ، لنقل رسالة بين المهام ، يلزم إجراء أربع مكالمات على الأقل إلى FUTEX_WAIT و FUTEX_WAKE ، بينما سيسمح استخدام FUTEX_SWAP بإكمال عملية واحدة أسرع بخمس إلى عشر مرات.

بدأت Google في فتح تنفيذ نموذج التدفق M: N

في الوقت الحاضر ، يتم استخدام نماذج التدفق 1: 1 و N: 1 بشكل أساسي في الممارسة العملية. يتم استخدام نموذج 1: 1 في إن بي تي إل (خيوط POSIX) و خيوط لينكس، ويشير إلى تعيين مباشر لمؤشر ترابط مساحة المستخدم إلى مؤشر ترابط (وحدة جدولة التنفيذ) على مستوى النواة. يتم تنفيذ نموذج N: 1 في جنو بيث، يجلب جدولة الخيط إلى مساحة المستخدم ويسمح لسلاسل ترابط مساحة المستخدم N بالارتباط بخيط واحد في النواة ، دون معرفة النواة بخيوط المستخدم.

العيب الرئيسي لنموذج 1: 1 هو الحمل الكبير للتبديل بين kernel ومساحة المستخدم. يحل نموذج N: 1 هذه المشكلة ، ولكنه ينشئ مشكلة جديدة - نظرًا لأن الخيط في النواة عبارة عن وحدة غير قابلة للتجزئة لجدولة التنفيذ ، فإن خيوط المستخدم المرتبطة بمؤشر واحد في نواة نظام التشغيل لا يمكنها التحجيم عبر نوى وحدة المعالجة المركزية وتصبح مرتبطة بـ نواة وحدة معالجة مركزية واحدة.

نموذج M: N مختلط ويعالج جميع العيوب المذكورة أعلاه من خلال تعيين سلاسل N userpace إلى سلاسل M kernel ، مما يقلل من عبء تبديل السياق والقياس عبر نوى وحدة المعالجة المركزية. سعر هذا الخيار هو التعقيد الكبير لتنفيذ جدولة مؤشر الترابط في مساحة المستخدم والحاجة إلى آليات لتنسيق الإجراءات مع برنامج جدولة kernel.

المصدر: opennet.ru

إضافة تعليق