سؤال

ما هو بالضبط حفظ و استعادة في سياق التبديل بين اثنين من المواضيع

  • في نفس العملية
  • بين العمليتين
هل كانت مفيدة؟

المحلول

هذه هي بالأحرى مسألة معقدة منذ الجواب(s) تعتمد على أشياء كثيرة:

  1. وحدة المعالجة المركزية في السؤال
    • فإنه يمكن أن تختلف بشكل كبير حتى داخل نفس العائلة على سبيل المثال إضافية يسجل وأضاف SSE/MMX العمليات.
  2. نظام التشغيل ، حيث أنها تسيطر على معالجات والتي تؤدي في سياق التبديل تقرر ما إذا كانت وحدة المعالجة المركزية الأجهزة (إن وجدت) للمساعدة في سياق استخدام رمز التبديل أو لا.
    • على سبيل المثال ويندوز لا تستخدم إنتل الأجهزة التي يمكن أن تفعل الكثير من سياق التحول التخزين بالنسبة لك لأنه لا تخزن النقطة العائمة السجلات.
  3. أي تحسينات مكنت من قبل برنامج علم من نفسه متطلبات قادرة على إبلاغ نظام التشغيل هذا
    • ربما للإشارة إلى أنه ليس باستخدام FP يسجل حتى لا تتعب نفسك معهم
    • في أبنية كبيرة سجل ملفات مثل معظم RISC التصاميم هناك فائدة كبيرة في معرفة ما عليك سوى مجموعة فرعية أصغر من هذه السجلات

على الأقل في استخدام سجلات للأغراض العامة و برنامج مكافحة التسجيل سوف تحتاج ليتم حفظها (على افتراض شائع التصميم الأكثر الحالية CISC/RISC نمط العامة الغرض وحدات المعالجة المركزية).

علما أن تحاول أن تفعل أقل قدر من الجهد فيما يتعلق تبديل السياق هو الموضوع بعض الاهتمام الأكاديمي

لينكس من الواضح لديه مزيد من المعلومات المتاحة على هذا في المجال العام رغم ان المراجع قد يكون قليلا من التاريخ.

هناك 'task_struct' والذي يحتوي على عدد كبير من المجالات المتعلقة مهمة الدولة وكذلك عملية مهمة بالنسبة.

واحد من هذه هو 'thread_struct'

/* وحدة المعالجة المركزية الخاصة الدولة هذه المهمة */
- البنية thread_struct ترابط ؛
يحمل معلومات حول ذاكرة التخزين المؤقت TLS الواصفات تصحيح السجلات ،
خطأ معلومات النقطة العائمة, الظاهري 86 الوضعية أو IO الأذونات.

كل العمارة يعرف نفسه thread_struct الذي يحدد السجلات وغيرها من القيم المحفوظة على التبديل.

هذا هو أكثر تعقيدا بسبب وجود إعادة تسمية السجلات التي تسمح متعددة في رحلة تعليمات (إما عن طريق superscalar أو أنابيب ذات التصاميم المعمارية).استعادة مرحلة سياق التبديل من المرجح أن تعتمد على وحدة المعالجة المركزية أنابيب يتم استعادتها في البداية فارغة الدولة هذه التعليمات التي لم يكن قد تقاعد في خط أنابيب يكون لها أي تأثير وبالتالي يمكن تجاهلها.وهذا يجعل تصميم وحدة المعالجة المركزية أكثر صعوبة بكثير.

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

هذه ستكون أساسا مؤشرات إلى أكثر الغنية هياكل البيانات حتى لا يكون هناك تكلفة كبيرة بالنسبة إلى موضوع تبديل السياق.

نصائح أخرى

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

هذا يعتمد على نظام التشغيل الذي تستخدمه ، ولكن بالتأكيد سيكون لديك لتوفير المحتوى من جميع السجلات (بما في ذلك التعليمات العداد) وتحميل سجلات الخيط أنت التحول إلى.

الفرق الوحيد الذي يتبادر إلى ذهني بخصوص التبديل بين اثنين من المواضيع على نفس العملية هو أنك لا تفقد محتوى L1 و MMU ذاكرة التخزين المؤقت.

لست متأكدا, ولكن إذا كنت أتذكر بشكل صحيح أيضا الذاكرة العاملة مجموعة من تبديل.

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