سؤال

سأكتب نظام رسائل ذاكرة مشتركة متعددة الخيوط لتسليم الرسائل عالية الحجم للغاية بين العمليات. سوف تنشأ الرسائل من مؤشرات ترابط العامل لخادم الويب. أرغب في استغلال محلية ذاكرة التخزين المؤقت لوحدة المعالجة المركزية التي تنظيس حصة CPU نفسها. لذلك عندما أستيقظ مؤشر ترابط العمال على الطرف المتلقي لنظام IPC هذا، أستيقظ مؤشر ترابط على نفس وحدة المعالجة المركزية.

أحتاج إلى Linux (Posix بشكل مسبق Posix في Genaral) ويندوز مكالمات API والدقيقة التي أحتاج إلى القيام بها لاستخراج المعلومات التي ستسمح لي بتصنيف معرف الموضوع المنفذ - من سياق الخيط المذكور - باستخدام الهيكل التالي في

struct thread_core_id
{
    uint16_t cpu_Id;
    uint16_t core_Id;
};

سيتم تقدير الوظائف لكلا المنصات بشكل كبير. آمل أن يتم ذلك دون مكالمات النظام - أي مفاتيح السياق.

-- تعديل --

أنا أركز على X86 في الوقت الحالي، لكن الهندسة الأخرى ستكون مفيدة أيضا.

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

المحلول

بالنسبة لنظام التشغيل Linux على وجه التحديد، يجب أن تكون قادرا على الحصول على المعلومات المطلوبة /proc/cpuinfo و /sys/devices/system/cpu/cpu*/cache واستخدام ذلك مع sched_{s|g}etaffinity() المكالمات. إلقاء نظرة على ما يجب أن يعرفه كل مبرمج عن الذاكرة, ، إذا لم تقم بذلك بالفعل، حول القسم 5.3.

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