سؤال

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

  1. لن يتم الاحتجاج معالج المقاطعة لـ "A" ، حيث يتم تعطيل المقاطعات في القسم الحرج أو
  2. سيتم التعامل مع المقاطعة من قبل نظام التشغيل ولكن تأخر ، حتى يتم تمكين المقاطعات مرة أخرى. على وجه التحديد ، هل سيحتاج المستخدم إلى الضغط على "A" مرة أخرى ، إذا كانت المرة الأولى التي ضغط فيها "A" كانت في وقت تم فيه تعطيل المقاطعات؟
هل كانت مفيدة؟

المحلول

في كثير من الأحيان ، تتم مقاطعة واحدة "في قائمة الانتظار" بواسطة الأجهزة.

غالبًا ما تكون المقاطعة مجرد بوابة منطقية يمكنها التمسك بها ؛ بمجرد تشغيله ، يبقى لفترة من الوقت.

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

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

نصائح أخرى

الجواب هو أنه يعتمد على ما إذا كنت تتعامل بالفعل مع مقاطعة لوحة المفاتيح.

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

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

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

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

الإجابة البسيطة هي أن المقاطعة تعطل تلقائيًا المقاطعات الإضافية. يجب أن يتم تعطيل المقاطعات وأقصر وقت فقط. كانت التعليمات الأولى في الأصل في لوحة مفاتيح BIOS ISR STI لتمكين المقاطعات.

الجواب السعيد هو أن صورة يعطي الأولوية لمقاطعات الأجهزة ، وحتى مع تمكين المقاطعات فقط ، يمكن لمقاطعة المؤقت IRQ0 فقط مقاطعة لوحة المفاتيح ISR. بالطبع يمكن أن يحدث NMI في كلتا الحالتين ولكن لحسن الحظ لا يحدث هذا أبدًا على جهاز كمبيوتر حالي.

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

على أجهزة الكمبيوتر-هذا يعود إلى أيام PCXT الخاصة بي-قد يحتفظ النظام الفرعي لوحة المفاتيح في مساحة 13 مكبسًا رئيسيًا في وحدة المعالجة المركزية.

تعطيل Interupt لديهم دليل مختلف. 1. صدع الأجهزة 2. Exceptions {على سبيل المثال: تقسيم على الصفر} و ECT.

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

أو على سبيل المثال: لجهاز I/O. إذا لم يكن interupt ، فإن الكمبيوتر لم يكن الكفاءة!

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