يقطع

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

في أجهزة الكمبيوتر الرقمية ، المقاطعة (يشار إليها أحيانًا بالفخ ) [1] هي طلب للمعالج لمقاطعة رمز التنفيذ حاليًا (عند السماح به) ، بحيث يمكن معالجة الحدث في الوقت المناسب. إذا تم قبول الطلب ، فسيقوم المعالج بتعليق أنشطته الحالية ، وحفظ حالته ، وتنفيذ وظيفة تسمى معالج المقاطعة (أو روتين خدمة المقاطعة ، ISR) للتعامل مع الحدث. غالبًا ما يكون هذا الانقطاع مؤقتًا ، مما يسمح للبرنامج بالاستئناف [أ]الأنشطة العادية بعد انتهاء معالج المقاطعة ، على الرغم من أن المقاطعة قد تشير بدلاً من ذلك إلى خطأ فادح. [2]

تُستخدم المقاطعات بشكل شائع بواسطة الأجهزة للإشارة إلى تغييرات الحالة الإلكترونية أو المادية التي تتطلب انتباهًا حساسًا للوقت. تُستخدم المقاطعات أيضًا بشكل شائع لتنفيذ مهام الكمبيوتر المتعددة ، خاصة في الحوسبة في الوقت الفعلي . ويقال أن الأنظمة التي تستخدم المقاطعات بهذه الطرق مدفوعة بالمقاطعة. [3]

أنواع

نوعان من المقاطعات في نظام التشغيل. jpg

قد يتم إصدار إشارات المقاطعة استجابةً لأحداث الأجهزة أو البرامج . يتم تصنيفها على أنها مقاطعات للأجهزة أو مقاطعات للبرامج ، على التوالي. بالنسبة لأي معالج معين ، فإن عدد أنواع المقاطعة محدود بالبنية.

مقاطعات الأجهزة

مقاطعة الأجهزة هي حالة تتعلق بحالة الأجهزة التي قد يتم الإشارة إليها بواسطة جهاز خارجي ، على سبيل المثال ، خط طلب مقاطعة (IRQ) على جهاز كمبيوتر ، أو يتم اكتشافه بواسطة الأجهزة المضمنة في منطق المعالج (على سبيل المثال ، مؤقت وحدة المعالجة المركزية) في IBM System / 370) ، للإبلاغ عن أن الجهاز يحتاج إلى اهتمام من نظام التشغيل (OS) [4] أو ، في حالة عدم وجود نظام تشغيل ، من برنامج "bare-metal" الذي يعمل على وحدة المعالجة المركزية. قد تكون هذه الأجهزة الخارجية جزءًا من الكمبيوتر (على سبيل المثال ، وحدة تحكم القرص ) أو قد تكون أجهزة طرفية خارجية . على سبيل المثال ، الضغط على مفتاح لوحة مفاتيح أو تحريك ماوس موصول بـ PS / 2يقوم المنفذ بتشغيل مقاطعات الأجهزة التي تجعل المعالج يقرأ ضغط المفاتيح أو موضع الماوس.

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

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

في بعض الأنظمة القديمة ، مثل 1964 CDC 3600 ، [5] ذهبت جميع المقاطعات إلى نفس الموقع ، واستخدم نظام التشغيل تعليمات متخصصة لتحديد المقاطعة غير المقنعة ذات الأولوية القصوى. في الأنظمة المعاصرة ، يوجد بشكل عام روتين قاطع مميز لكل نوع من أنواع المقاطعة (أو لكل مصدر مقاطعة) ، وغالبًا ما يتم تنفيذه كجدول متجه واحد أو أكثر .

اخفاء

لإخفاء المقاطعة ، يتم تعطيلها ، بينما يتم تمكينها لكشف المقاطعة. [6]

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

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

المقاطعات الزائفة

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

في الدائرة السلكية- OR ، سيؤدي شحن / تفريغ السعة الطفيلية من خلال المقاوم التحيز لخط المقاطعة إلى تأخير بسيط قبل أن يدرك المعالج أن مصدر المقاطعة قد تم مسحه. إذا تم مسح جهاز المقاطعة في وقت متأخر جدًا في روتين خدمة المقاطعة (ISR) ، فلن يكون هناك وقت كافٍ لدائرة المقاطعة للعودة إلى الحالة الهادئة قبل إنهاء المثيل الحالي لـ ISR. والنتيجة هي أن المعالج سيعتقد أن مقاطعة أخرى معلقة ، لأن الجهد عند إدخال طلب المقاطعة لن يكون مرتفعًا أو منخفضًا بما يكفي لإنشاء منطق داخلي لا لبس فيه 1 أو منطق 0. لن يكون للمقاطعة الظاهرية مصدر محدد ، ومن ثم " زائف "لقب.

قد تكون المقاطعة الزائفة أيضًا نتيجة للشذوذ الكهربائي بسبب تصميم الدائرة الخاطئ ، أو مستويات الضوضاء العالية ، أو الحديث المتبادل ، أو مشكلات التوقيت ، أو في حالات نادرة ، أخطاء الجهاز . [7]

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

المقاطعات البرمجية

يطلب المعالج نفسه مقاطعة البرنامج عند تنفيذ تعليمات معينة أو عند استيفاء شروط معينة. ترتبط كل إشارة مقاطعة برمجية بمعالج مقاطعة معين.

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

عادةً ما تقوم نواة نظام التشغيل بالتقاط هذه المقاطعات والتعامل معها. يتم التعامل مع بعض المقاطعات بشفافية مع البرنامج - على سبيل المثال ، الدقة العادية لخطأ الصفحة هي جعل الصفحة المطلوبة يمكن الوصول إليها في الذاكرة الفعلية. ولكن في حالات أخرى ، مثل خطأ التجزئة ، يقوم نظام التشغيل بتنفيذ عملية رد الاتصال. في أنظمة التشغيل المشابهة لـ Unix ، يتضمن ذلك إرسال إشارة مثل SIGSEGV أو SIGBUS أو SIGILL أو SIGFPE ، والتي قد تستدعي معالج إشارة أو تنفذ إجراءً افتراضيًا (إنهاء البرنامج). في Windows ، يتم إجراء رد الاتصال باستخداممعالجة الاستثناءات المنظمة مع رمز استثناء مثل STATUS_ACCESS_VIOLATION أو STATUS_INTEGER_DIVIDE_BY_ZERO. [8]

في عملية kernel ، غالبًا ما يكون من المفترض ألا تحدث بعض أنواع مقاطعات البرامج. إذا حدثت مع ذلك ، فقد يؤدي ذلك إلى تعطل نظام التشغيل .

المصطلحات

تُستخدم مصطلحات المقاطعة والفخ والاستثناء والخطأ والإجهاض للتمييز بين أنواع المقاطعات ، على الرغم من "عدم وجود إجماع واضح على أنه المعنى الدقيق لهذه المصطلحات". [9] قد يشير المصطلح " فخ " إلى أي مقاطعة ، أو أي مقاطعة للبرامج ، أو إلى أي مقاطعة متزامنة للبرامج ، أو فقط إلى المقاطعات التي تسببها الإرشادات التي تحتوي على اعتراض في أسمائهم. في بعض الاستخدامات ، يشير مصطلح الملاءمة تحديدًا إلى نقطة توقف تهدف إلى بدء تبديل سياق إلى برنامج مراقبة أو مصحح أخطاء .[1] قد يشير أيضًا إلى مقاطعة متزامنة ناتجة عن حالة استثنائية (على سبيل المثال ، القسمة على صفر ، وصول غير صالح للذاكرة ، كود تشغيل غير قانوني ) ، [9] على الرغم من أن مصطلح استثناء أكثر شيوعًا لهذا الغرض.

يقسم x86 المقاطعات إلى مقاطعات (أجهزة) واستثناءات للبرامج ، ويحدد ثلاثة أنواع من الاستثناءات: الأخطاء ، والاعتراضات ، والإحباط. [10] [11] المقاطعات (الأجهزة) هي مقاطعات يتم تشغيلها بشكل غير متزامن بواسطة جهاز الإدخال / الإخراج ، وتسمح بإعادة تشغيل البرنامج دون فقدان الاستمرارية. [10] يمكن إعادة تشغيل الخطأ أيضًا ولكنه مرتبط بالتنفيذ المتزامن للتعليمات - يشير عنوان المرسل إلى التعليمات الخاطئة. تشبه الملائمة الخطأ فيما عدا أن عنوان المرسل يشير إلى التعليمات التي سيتم تنفيذها بعد تعليمات الملائمة ؛ [12] أحد الاستخدامات البارزة هو تنفيذ استدعاءات النظام . [11]يتم استخدام "الإحباط" للأخطاء الجسيمة ، مثل أخطاء الأجهزة والقيم غير القانونية في جداول النظام ، وغالبًا ما لا تسمح [c] بإعادة تشغيل البرنامج. [12]

يستخدم ARM مصطلح الاستثناء للإشارة إلى جميع أنواع المقاطعات ، [13] ويقسم الاستثناءات إلى المقاطعات (الأجهزة) ، والإحباط ، وإعادة التعيين ، وإرشادات إنشاء الاستثناءات. تتوافق عمليات الإحباط مع استثناءات x86 وقد تكون عمليات إحباط مسبقة (عمليات جلب التعليمات الفاشلة) أو إحباط البيانات (عمليات الوصول الفاشلة إلى البيانات) ، وقد تكون متزامنة أو غير متزامنة. قد تكون عمليات الإجهاض غير المتزامن دقيقة أو غير دقيقة. إحباط MMU (أخطاء الصفحة) متزامن. [14]

طرق التشغيل

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

المستوى المشغل

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

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

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

الحافة المشغلة

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

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

استجابة المعالج

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

  • يتم حفظ حالة المعالج [د] بطريقة معروفة. عادةً ما يتم تخزين الحالة في موقع معروف ، ولكن في بعض الأنظمة يتم تخزينها في مكدس.
  • تم تنفيذ جميع التعليمات قبل التوجيه الذي يشير إليه الكمبيوتر الشخصي بالكامل.
  • لم يتم تنفيذ أي تعليمات بخلاف ذلك الذي أشار إليه الكمبيوتر ، أو تم التراجع عن أي تعليمات من هذا القبيل قبل التعامل مع المقاطعة.
  • تُعرف حالة تنفيذ التعليمات التي يشير إليها الكمبيوتر الشخصي.

تنفيذ النظام

يمكن تنفيذ المقاطعات في الأجهزة كمكون متميز مع خطوط تحكم ، أو يمكن دمجها في النظام الفرعي للذاكرة [ بحاجة لمصدر ] .

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

IRQs المشتركة

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

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

يستخدم ناقل الصناعة القياسية الصناعية (ISA) المقاطعات ذات الحواف المشغلة ، دون إلزام الأجهزة بأن تكون قادرة على مشاركة خطوط IRQ ، ولكن جميع اللوحات الرئيسية ISA تتضمن مقاومات سحب على خطوط IRQ الخاصة بها ، لذا فإن أجهزة ISA جيدة التصرف تشارك خطوط IRQ يجب أن تعمل بشكل جيد. يستخدم المنفذ المتوازي أيضًا المقاطعات ذات الحواف. تفترض العديد من الأجهزة القديمة أن لديها استخدامًا حصريًا لخطوط IRQ ، مما يجعل مشاركتها غير آمنة كهربائيًا.

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

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

صعوبة في مشاركة خطوط المقاطعة

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

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

هجين

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

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

رسالة مُشار إليها

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

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

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

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

يستخدم PCI Express ، ناقل كمبيوتر تسلسلي ، مقاطعات بإشارات الرسائل حصريًا.

الجرس

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

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

يمكن مقارنة مقاطعات جرس الباب بمقاطعات إشارة الرسائل ، نظرًا لوجود بعض أوجه التشابه بينهما.

IPI متعدد المعالجات

في الأنظمة متعددة المعالجات ، قد يرسل المعالج طلب مقاطعة إلى معالج آخر عبر المقاطعات بين المعالجات [e] (IPI).

أداء

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

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

باستخدام المعالجات متعددة النواة ، يمكن تحقيق تحسينات إضافية في الأداء في معالجة المقاطعة من خلال تحجيم جانب الاستقبال (RSS) عند استخدام بطاقات NIC متعددة الألوان . توفر بطاقات NIC هذه قوائم انتظار متعددة للاستقبال مرتبطة بمقاطعات منفصلة ؛ من خلال توجيه كل من هذه المقاطعات إلى مراكز مختلفة ، يمكن توزيع معالجة طلبات المقاطعة التي يتم تشغيلها بواسطة حركة مرور الشبكة المستلمة بواسطة NIC واحد بين مراكز متعددة. يمكن إجراء توزيع المقاطعات بين النوى تلقائيًا بواسطة نظام التشغيل ، أو يمكن تكوين توجيه المقاطعات (يشار إليها عادةً باسم تقارب IRQ ) يدويًا. [16] [17]

يوزع تطبيق قائم على البرامج تمامًا لتوزيع حركة المرور المستقبلة ، والمعروف باسم توجيه حزمة الاستقبال (RPS) ، حركة المرور المستلمة بين النوى لاحقًا في مسار البيانات ، كجزء من وظيفة معالج المقاطعة . تشمل مزايا RPS عبر RSS عدم وجود متطلبات لأجهزة معينة ، وعوامل تصفية توزيع حركة مرور أكثر تقدمًا ، ومعدل منخفض للمقاطعات التي تنتجها NIC. كجانب سلبي ، يزيد RPS من معدل المقاطعات بين المعالجات (IPIs). يأخذ توجيه تدفق الاستقبال (RFS) النهج القائم على البرامج إلى أبعد من ذلك عن طريق حساب موقع التطبيق؛ يتم تحقيق المزيد من التحسينات في الأداء من خلال معالجة طلبات المقاطعة بواسطة نفس المراكز التي سيتم استهلاك حزم شبكة معينة عليها بواسطة التطبيق المستهدف. [16] [18] [19]

الاستخدامات النموذجية

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

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

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

تُستخدم المقاطعات أحيانًا لمحاكاة الإرشادات التي لم يتم تنفيذها على بعض أجهزة الكمبيوتر في مجموعة المنتجات. [20] على سبيل المثال ، يمكن تنفيذ تعليمات النقطة العائمة في الأجهزة في بعض الأنظمة ومحاكاتها على أنظمة منخفضة التكلفة. في الحالة الأخيرة ، سيؤدي تنفيذ تعليمات النقطة العائمة غير المنفذة إلى مقاطعة استثناء "تعليمات غير قانونية". سيقوم معالج المقاطعة بتنفيذ وظيفة النقطة العائمة في البرنامج ثم العودة إلى البرنامج الذي تمت مقاطعته كما لو تم تنفيذ تعليمات الأجهزة. [21] يوفر هذا إمكانية نقل البرامج التطبيقية عبر الخط بأكمله.

المقاطعات تشبه الإشارات ، والفرق هو أن الإشارات تُستخدم للاتصال بين العمليات (IPC) ، بوساطة النواة (ربما عبر مكالمات النظام) ويتم التعامل معها بواسطة العمليات ، بينما يتم التوسط في المقاطعات بواسطة المعالج ومعالجتها بواسطة النواة . قد تقوم النواة بتمرير مقاطعة كإشارة إلى العملية التي تسببت في حدوثها (الأمثلة النموذجية هي SIGSEGV و SIGBUS و SIGILL و SIGFPE ).

التاريخ

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

يُنسب إلى الكمبيوتر UNIVAC 1103A عمومًا أول استخدام للمقاطعات في عام 1953 . ، أو ، حسب خيار المبرمج ، تسبب في توقف الكمبيوتر. " أدرجت IBM 650 (1954) أول ظهور لإخفاء المقاطعة. كان المكتب الوطني للمعايير DYSEAC (1954) أول من استخدم المقاطعات لـ I / O. كان IBM 704 أول من استخدم المقاطعات لتصحيح الأخطاء ، مع "مصيدة النقل" ، والتي يمكن أن تستدعي روتينًا خاصًا عند مواجهة تعليمات الفرع. معهد ماساتشوستس للتكنولوجيا كان نظام Lincoln Laboratory TX-2 (1957) أول نظام يوفر مستويات متعددة من المقاطعات ذات الأولوية. [24]

انظر أيضا

ملاحظات

  1. ^ قد يستأنف نظام التشغيل العملية المتقطعة أو قد يتحول إلى عملية مختلفة.
  2. ^ قد يكون سجل القناع سجلاً منفردًا أو سجلات متعددة ، على سبيل المثال ، بتات في PSW وبتات أخرى في سجلات التحكم .
  3. ^ يمكن لبعض أنظمة التشغيل التعافي من الأخطاء الجسيمة ، على سبيل المثال ، الترحيل في صفحة من ملف ترحيل بعد خطأ ECC غير قابل للتصحيح في صفحة غير معدلة.
  4. ^ قد يكون هذا مجرد برنامج عداد (كمبيوتر) أو PSW أو سجلات متعددة.
  5. ^ تُعرف باسم حنفيات الكتف في بعض أنظمة تشغيل IBM.

المراجع

  1. ^ أ ب "المصطلحات اللغوية اللغوية ، الإصدار 4.4.7" . 2003-10-27 . تم الاسترجاع 20 يناير 2022 .
  2. ^ جوناثان كوربيت. أليساندرو روبيني جريج كروه هارتمان (2005). " برامج تشغيل أجهزة Linux ، الإصدار الثالث ، الفصل 10. معالجة المقاطعة" (PDF) . أورايلي ميديا . ص. 269 . تم الاسترجاع 25 ديسمبر ، 2014 . ثم الأمر يتعلق فقط بالتنظيف ، وتشغيل مقاطعات البرامج ، والعودة إلى العمل المنتظم. قد يكون "العمل العادي" قد تغير نتيجة مقاطعة (يمكن للمعالج عملية ، على سبيل المثال) ، لذا فإن آخر شيء يحدث عند العودة من مقاطعة هو إعادة جدولة محتملة للمعالج. wake_up
  3. ^ روزنتال ، سكوت (مايو 1995). "أساسيات المقاطعات" . مؤرشفة من الأصلي في 2016/04/26 . تم الاسترجاع 2010-11-11 .
  4. ^ "مقاطعات الأجهزة" . تم الاسترجاع 2014/02/09 .
  5. ^ "تعليمات المقاطعة". دليل مرجعي لنظام الكمبيوتر Control Data 3600 (PDF) . شركة التحكم في البيانات. يوليو 1964. ص 4 - 6. 60021300.
  6. ^ باي ، ينج (2017). هندسة الميكروكونترولر مع MSP432: الأساسيات والتطبيقات . اضغط CRC. ص. 21. ISBN 978-1-4987-7298-3. LCCN  2016020120 . في نظام Cortex-M4 ، تتمتع المقاطعات والاستثناءات بالخصائص التالية: ... بشكل عام ، يتم استخدام بت واحد في سجل القناع لإخفاء (تعطيل) أو إلغاء قناع (تمكين) حدوث مقاطعة / استثناءات معينة
  7. ^ لي ، تشينغ ؛ ياو ، كارولين (2003). مفاهيم الوقت الحقيقي للأنظمة المضمنة . اضغط CRC. ص. 163. ISBN 1482280825.
  8. ^ "استثناءات الأجهزة" . docs.microsoft.com . 3 أغسطس 2021.
  9. ^ أ ب هايد ، راندال (1996). "الفصل السابع عشر: المقاطعات والفخاخ والاستثناءات (الجزء 1)" . فن برمجة لغة التجميع . تم الاسترجاع 22 ديسمبر 2021 . مفهوم المقاطعة هو شيء اتسع نطاقه على مر السنين. لقد أضافت عائلة 80x86 إلى الارتباك المحيط بالمقاطعات فقط من خلال إدخال تعليمات int (مقاطعة البرنامج). في الواقع ، استخدمت جهات تصنيع مختلفة مصطلحات مثل أخطاء الاستثناءات وتحبط المصائد والمقاطعات لوصف الظواهر التي يناقشها هذا الفصل. لسوء الحظ ، لا يوجد إجماع واضح حول المعنى الدقيق لهذه المصطلحات. يعتمد المؤلفون المختلفون مصطلحات مختلفة لاستخدامهم الخاص.
  10. ^ أ ب "المجلد 1 من دليل مطور برامج معماريات Intel® 64 و IA-32: البنية الأساسية" . ص. 6-12 المجلد. 1 . تم الاسترجاع 22 ديسمبر 2021 .
  11. ^ أ ب براينت ، راندال إي. O'Hallaron ، David R. (2016). "8.1.2 فئات الاستثناءات". أنظمة الكمبيوتر: منظور المبرمج (الثالث ، الطبعة العالمية). هارلو. رقم ISBN 1-292-10176-8.
  12. ^ أ ب "Intel® 64 و IA-32 لمعمارية حجم دليل مطور البرامج 3A: دليل برمجة النظام ، الجزء 1" . ص. 6-5 المجلد. 3 أ . تم الاسترجاع 22 ديسمبر 2021 .
  13. ^ "معالجة الاستثناءات" . developer.arm.com . دليل مبرمج سلسلة ARM Cortex-A لـ ARMv7-A . تم الاسترجاع 21 يناير 2022 .
  14. ^ "أنواع الاستثناءات" . developer.arm.com . دليل مبرمج سلسلة ARM Cortex-A لـ ARMv7-A . تم الاسترجاع 22 ديسمبر 2021 .
  15. ^ موجول ، جيفري سي ؛ راماكريشنان ، KK (1997). "القضاء على تلقي القفل المباشر في نواة يحركها المقاطعة" . معاملات ACM على أنظمة الكمبيوتر . 15 (3): 217-252. دوى : 10.1145 / 263326.263335 . S2CID 215749380 . تم الاسترجاع 2010-11-11 . 
  16. ^ أ ب توم هربرت ؛ ويليم دي بروين (9 مايو 2014). "التوثيق / الربط الشبكي / scaling.txt" . وثائق Linux kernel . kernel.org . تم الاسترجاع 16 نوفمبر ، 2014 .
  17. ^ "ورقة بيانات عائلة وحدة تحكم Intel 82574 Gigabit Ethernet" (PDF) . إنتل . يونيو 2014. ص. 1 . تم الاسترجاع 16 نوفمبر ، 2014 .
  18. ^ جوناثان كوربيت (17 نوفمبر 2009). "تلقي توجيه الحزمة" . LWN.net . تم الاسترجاع 16 نوفمبر ، 2014 .
  19. ^ جيك إيدج (7 أبريل 2010). "تلقي توجيه التدفق" . LWN.net . تم الاسترجاع 16 نوفمبر ، 2014 .
  20. ^ ثوسو ، شاليش ؛ وآخرون. "براءة الاختراع الأمريكية 5632028 أ" . براءات اختراع جوجل . تم الاسترجاع 13 أغسطس ، 2017 .
  21. ^ شركة Altera (2009). مرجع معالج Nios II (PDF) . ص. 4 . تم الاسترجاع 13 أغسطس ، 2017 .
  22. ^ كود ، إدغار ف. "البرمجة المتعددة". التقدم في أجهزة الكمبيوتر . 3 : 82.
  23. ^ بيل ، سي جوردون ؛ نيويل ، ألين (1971). هياكل الحاسوب: قراءات وأمثلة . ماكجرو هيل. ص. 46. ردمك 9780070043572. تم الاسترجاع 18 فبراير ، 2019 .
  24. ^ أ ب Smotherman ، مارك. "المقاطعات" . تم الاسترجاع 22 ديسمبر 2021 .

روابط خارجية