سؤال

حصلت على بعض الشكوك مع النصف السفلي. هل أعتبر المهام فقط. أيضا، أنا أعتبر نواة غير مستقيمة فقط.

افترض النظر في برنامج تشغيل Ethernet الذي تقوم فيه معالجة مقاطعة RX ببعض المكالمات 10 وظائف. (برمجة سيئة :))

الآن، بالنظر إلى منظور الأداء إذا كانت هناك 9 مكالمات وظيفة يمكن نقلها إلى سلة معلمة وحيل 1 فقط يجب استدعاؤها في معالجة المقاطعة، هل يمكنني الحصول على بعض الأداء الجيد في تطبيق قراءة TCP.

أو بعبارة أخرى، عند التحول إلى تطبيق المساحة للمستخدم، سيتم استدعاء جميع الدالة 9، وسيتم استدعاء جميع مكالمات الوظائف المجدولة، في فعالة تطبيق مساحة المستخدم سيكون قادرا على الحصول على بيانات نائب الرئيس فقط بعد "جميع المسامبات المجدولة" هي منجز ؟ صيح؟

أفهم أنه من خلال وجود النصف السفلي، فإننا سنتمكن من جميع المقاطعات .. لكن لدي شك في ما إذا كان التطبيق الذي يعتمد على المقاطعة تكسب أي شيء من خلال الحصول على كامل 10 وظائف في مقاطعة المقاطعة نفسها أو في النصف السفلي.

باختصار، من خلال وجود HASTELT هل يمكنني الحصول على تحسين الأداء في تطبيق مساحة المستخدم، هنا؟

هل كانت مفيدة؟

المحلول

نظرا لأن المهام غير قائمة في قائمة الانتظار ولكن مجدولة، أي أن العديد من مقاطعات الأجهزة نشر نفس المهلة قد يؤدي إلى إجراء استدعاء لوظيفات وظيفة واحدة، ستتمكن من الحفظ ما يصل إلى 90٪ من المعالجة في الحالات القصوى.

من ناحية أخرى، هناك بالفعل IRQ ذات الأولوية الناعمة ذات الأولوية ل Net-Rx.

نصائح أخرى

في تجربتي على الأجهزة السريعة، لا تجعل العمل المتحرك من المعالج إلى المهلة تشغيل الجهاز بشكل أسرع. لقد أضفت وحدات الماكرو في المعالج الذي يمكنه تشغيل مكالمة My Schedule_Tasklet () مكالمة إلى وظيفة STAMSATET نفسها، ومن السهل تحديد كلا الاتجاهين ونرى الفرق.

ولكن من المهم أن تنتهي معالجات المقاطعة بسرعة. كما ذكر NIKOLAI، قد تستفيد إذا كان جهازك يحب مقاطعة الكثير، ولكن معظم أجهزة النطاق الترددي العالي تحتوي على أجهزة تخفيف المقاطعة التي تجعل هذه المشكلة أقل خطورة.

باستخدام Taskclets هو الطريقة التي سيقوم بها الناس النواة الأساسية بأشياء، لذلك كل شيء آخر متساو، من الأفضل اتباع زمام المبادرة، خاصة إذا كنت تريد أن ترى سائقك مقبول في نواة الخط الرئيسي.

أود أيضا أن ندعو الكثير من الوظائف ليس بالضرورة ممارسة سيئة؛ يمكن للتنبؤات الفرعية الحديثة أن تجعل الترميز الثقيل فرع يعمل بأسرع رمز غير فرعي. الأكثر أهمية في رأيي هي آثار ذاكرة التخزين المؤقت المحتملة التي يجب أن تفعلها إلى نصف الوظيفة الآن، ثم نصف الوظيفة لاحقا.

لا يعمل معالج معالج في سياق عملية المستخدم. إذا قمت بجدولة ISR الخاصة بك، فسيتم تشغيلها مباشرة بعد انتهاء ISR الخاص بك، ولكن مع تمكين المقاطعات. فائدة هذه هي أن معالجة الحزمة الخاصة بك لا تمنع المقاطعات الإضافية.

في مثال TCP الخاص بك، يتم إخراج الأجهزة قبالة الحزمة إلى مكدس الشبكة ويتم إجراء سائقك - مقابض المكدس الصافي تستيقظ العملية وما إلى ذلك. لذلك لا توجد طريقة حقا لسائق HW للتنفيذ في سياق العملية للبيانات المستفيد، لأن HW لا يعرف حتى من هو.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top