الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

hardware interrupts and proccessor core

بدأه C++er في 9 يونيو 2011 · 6 رد · 1,212 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

فى البدايه أعتذر عن كتابة العنوان بالإنجليزيه و لكني لا اعرف ترجمه عربيه تؤدى لنفس المعني.

لتوحيد المصطلحات الألفاظ التاليه تعني شي واحد:

core = hardware thread = execution engine = logic processor

فى الأجهزه التى تحتوى على core واحد فقط عند حدوث hardware interrupt يتم إعلام الـ core به، بالنسبه للأجهزه التى تحتوى على أكثر من core هل عندما يحدث hardware interrupt يتم إعلامهم جميعا ام أحدهم؟

إن كان احدهم فلماذا وقع الإختيار عليه بالتحديد؟ و إن كانوا جميعهم - بالإضافه بكونها معلومه جديده لي - فما هو الترتيب الذى يتم به إرسال الـ notification و لماذا هذا الترتيب بالتحديد؟

و الله ولي التوفيق

1

مدونتي: C++ Tips and Tricks

#2

قرأت عن هذا الموضوع منذ سنة تقريبا، كنت اعبث قليلا مع الـKeyBoard Interrupts biggrin.gif

الحل في الـAPIC هو من يحدد أي Core سيتم عمل routing للـinterrupt إليه ...

الافتراضي تقريبا ان يتم عمل routing للـكور رقم 0 لكن أي نظام تشغيل يقوم بتعديلها كي لا يتم استهلاك الـكور الاول بشكل دائم وترك الباقي.

1

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#3
اقتباس
الحل في الـAPIC هو من يحدد أي Core سيتم عمل routing للـinterrupt إليه ...

كيف يقوم بتحديد ذلك و كل core له APIC خاص به؟

اقتباس
الافتراضي تقريبا ان يتم عمل routing للـكور رقم 0 لكن أي نظام تشغيل يقوم بتعديلها كي لا يتم استهلاك الـكور الاول بشكل دائم وترك الباقي.

هل يمكن عمل redirect لكود ليتم تنفيذه من core أخر غير الذى تم الإستدعاء منه؟

مدونتي: C++ Tips and Tricks

#4
اقتباس
كيف يقوم بتحديد ذلك و كل core له APIC خاص به؟

الـIO-APIC يقوم باستلام الـinterrupt من device ويقوم بتسليمه الى الـLAPIC ، الطبيعي ان يسلمه الى LAPIC 0 لكن هناك field في مسجلات الـIO_APIC يمكن استغلالها لعمل Bitmask للـLAPIC التي ستستلم الـinterrupt ...

هناك ايضا اسلوب اخر لم اقرأ عنه أظن انه يقوم بربط كل interupt بـLAPIC معين، ابحث عن SMP Affinity .

اقتباس
هل يمكن عمل redirect لكود ليتم تنفيذه من core أخر غير الذى تم الإستدعاء منه؟

طبعا، نظم التشغيل توفر API لعمل ذلك بسهولة ...

1

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#5

شكرا يا G.

مدونتي: C++ Tips and Tricks

#6

باقي اسبوعين وانتهي من امتحاناتي ...

هناك مواضيع شيقة تخص الـAPIC's مثل الـIPI ربما نتحدث عنها لاحقا لو كنت مهتم happy.gif

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#7
اقتباس
باقي اسبوعين وانتهي من امتحاناتي ...

بالتوفيق إن شاء الله.

اقتباس
هناك مواضيع شيقة تخص الـAPIC's مثل الـIPI ربما نتحدث عنها لاحقا لو كنت مهتم

أكيد طبعا مهتم، أى مواضيع تخص الـ Hardware Programming او OS Programming هتلاقيني موجود فيها إن شاء الله.

مدونتي: C++ Tips and Tricks

مواضيع مشابهة