سؤال

وأوضح في الكلمات الخاصة بك ، ما هو الاستباق و ماذا يعني أن (لينكس) النواة ؟

ما هي مزايا وعيوب في وجود preemptible النواة ؟

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

المحلول

وقائي تعدد المهام - تشغيل العديد من العمليات / المواضيع في معالج واحد، وخلق الوهم بأن تشغيلها في وقت واحد عند في الواقع يتم تخصيص كل شرائح الوقت المضاعفة صغيرة لتشغيل في عملية هو "استبقت" حيث من المقرر عليه للخروج من التنفيذ و ينتظر شريحة الوقت المقبلة لتشغيل في.

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

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

نصائح أخرى

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

آخرون كاف في بيان ما preemptible النواة.

ما هو جيد ل ؟

في الغالب فوائد هي:

  • زمن أقل على غير SMP النظم - التي تستخدم عادة في أنظمة الوقت الحقيقي أو لأشياء أخرى حيث الكمون مهم (الصوت والفيديو تطبيقات ربما)
  • التدريس نواة المطورين الذين ليس لديهم أنظمة SMP كيفية كتابة الكود الصحيح عن SMP

مع عدم preemptible نواة في معالج واحد نظام الممكن نواة المطورين أن يكون كسول و الحصول على بعيدا دون أي تأمين أكثر من مرة - بالطبع هذا هو كبيرة تفشل على SMP.Preemptible حبات تسمح لهم للحصول على هذا الألم دون المزيد من النوى.

وأعتقد أن هذا آخر يفسر أسئلتك:

<اقتباس فقرة>   

ما هي الشفعة؟

وقدرة نظام التشغيل لاستباق أو إيقاف مهمة مجدولة حاليا لصالح مهمة ذات أولوية أعلى. قد تكون جدولة أحد، ولكن ليس على سبيل الحصر، عملية أو I O جدولة / الخ.

<اقتباس فقرة>   

ما هو نواة الشفعة؟

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

ولكن، حتى 2.6 الحبوب، كانت نواة نفسها لا preemtible: حالما موضوع واحد دخلت النواة، لا يمكن أن استبق ذلك لتنفيذ أي موضوع آخر. ويمكن استخدام المعالج لتنفيذ موضوع آخر عندما تم إنهاء وsyscall، أو عندما يكون موضوع الحالي طلب explictly جدولة لتشغيل موضوع آخر باستخدام وظيفة جدول (). وهذا يعني أن حلقة لا نهائية في قانون نواة منعت النظام بأكمله، ولكن هذا ليس حقا مشكلة: تم تصميم رمز النواة بحيث لا توجد حلقات لانهائية.

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

<اقتباس فقرة>   

وإيجابيات وسلبيات؟

والايجابيات: نواة الشفعة يمكن أن تحسن الكمون وتطويره، وأنها يمكن أن تجعل المدى مهمة ذات أولوية عالية والرد في الوقت المناسب

ويري: أن يجعل من الصعب كتابة التعليمات البرمجية في نواة الشفعة، وخاصة في SMP، ويجب عليك أن تنظر عوامل كثيرة

.

والشفعة يعني OS يدعم العديد من المهام (أ، قطعة قائمة بذاتها منفصلة من التعليمات البرمجية)، وسوف التبديل بين المهام على جدول زمني. عندما مهمة تمت مقاطعة، ويسمى "استباق". دعم نظام التشغيل الحديث هذا - ولكنها ليست مطلوبة للأنظمة المدمجة بسيطة، على سبيل المثال. النفقات العامة لدعم التحول المهمة ليست دائما يستحق كل هذا العناء.

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