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