سؤال

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

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

المحلول

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

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

قول انت:

أنا أعتبر كل عملية لديها مجموعة من السجلات الخاصة، ويمكن لكل مؤشر ترابط تعديل هذه السجلات بشكل صحيح؟

ولكن هذا ليس صحيحا تماما. يحتوي كل CPU Core على مجموعة واحدة من السجلات. يتم تغيير هذه السجلات كلما تحول نظام التشغيل إلى مؤشر ترابط مختلف. ولكن هناك موضوع واحد فقط ينفذ في CPU الأساسية في أي وقت واحد. العمليات لا تملك حقا سجلاتها الخاصة، وعمليات مؤشرات الترابط الخاصة (أو مؤشر ترابط واحد على الأقل)، والتخلصات لها سجلات، أو بالأحرى مكان للحفاظ على قيم السجلات أثناء انتظار الخيط لنواة وحدة المعالجة المركزية لتكون متاحة ل تشغيل.

نصائح أخرى

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

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

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

يتم الخيط من قبل نواة أو نظام تشغيل، لذلك يجب ألا يهتم البرنامج بذلك. إذا لم يكن هناك نواة أو نظام تشغيل متاح، فأنت بحاجة إلى تطبيقه بنفسك. لذلك ستحتاج:

  • وظيفة ستحفظ أزيز جميع السجل في وحدة المعالجة المركزية الخاصة بك وحدة المعالجة المركزية الخاصة بك (SP: مؤشر المكدس، قيمة السجل الداخلي، PC: برنامج برنامج ETC ...) في مساحة ذاكرة أخرى للتبديل إلى مؤشر ترابط جديد.
  • وظيفة لتحميل بيئة مؤشر ترابط إلى بيئة وحدة المعالجة المركزية الخاصة بك، واستعادة قيمة السجل الداخلي المحفوظة مسبقا إلى سجل وحدة المعالجة المركزية الخاصة بك.

اعتمادا على المعالج، هناك مجموعة واحدة فقط من السجلات. ليس مجموعة واحدة لكل موضوع.

هناك طرق لحفظ حالة جميع السجلات، بحيث يمكن أن يستغرق مؤشر الترابط حيث توقفت.

بعض المعالجات تسهيل هذا.

لديك

  • أ مجموعة من العمليات هذا هو واحد من نظام التشغيل الخاص بك،
  • كل معالجة لديه مساحة ذاكرة تحتوي الذاكرة المخصصة ديناميكية, بيانات ثابتة و جمعية الجمعية,
  • كل معالجة لديه قائمة الخيوط
  • كل مسلك لديه خاص بها مجموعة من السجلات, برنامج مكافحة و كومة

مع مفتاح السياق جدولة تنباط بيانات مؤشرات الترابط لتمرير التنفيذ إلى واحد آخر.

عادة أ معالجة هو أثقل من مسلك ونهج جدولة مختلفة موجودة:

  • القيام بمفاتيح السياق داخليا فقط (خيوط خضراء) إلى البرنامج الخاص بك (سوف يعتبر نظام التشغيل الخاص بك مجرد عملية واحدة لذلك: الصعب متعدد النواة)
  • يمكنك تعيين عدد من العمليات الحقيقية للحصول على نهج هجين يسمح بتحسين سهل النواة بسهولة.

كل مؤشر ترابط له سياق الكلام, ، والتي تشمل مجموعة من السجلات، أعلام وحدة المعالجة المركزية، كومة، إلخ.

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