اقرأ في هذا المقال
- ما هي المقاطعة المدفوعة لنقل البيانات بين الذاكرة وأجهزة الإدخال / الإخراج
- كيفية تبادل البيانات بين الذاكرة وأجهزة الإدخال / الإخراج
- خدمة المقاطعة Interrupt Servicing
المقاطعة (I / O) هي طريقة للتحكم في نشاط الإدخال / الإخراج حيث يرسل جهاز طرفي يحتاج إلى إجراء أو استقبال نقل البيانات إشارة، سيؤدي هذا إلى تعيين مقاطعة البرنامج، في وقت مناسب لمستوى الأولوية لمقاطعة الإدخال / الإخراج، بالنسبة لنظام المقاطعة الكلي، تدخل المعالجات في روتين خدمة المقاطعة، ستعتمد وظيفة الروتين على نظام مستويات المقاطعة والأولويات التي يتم تنفيذها في المعالج.
ما هي المقاطعة المدفوعة لنقل البيانات بين الذاكرة وأجهزة الإدخال / الإخراج
المقاطعة المدفوعة (I / O) هو أسلوب لنقل البيانات بين “الذاكرة” و “أجهزة الإدخال / الإخراج” من خلال “المعالج”، الطريقتان الأخريان لنفس الشيء هما الإدخال / الإخراج المبرمج والوصول المباشر للذاكرة (DMA)، يتضمن الإدخال / الإخراج المستند إلى المقاطعة استخدام المقاطعة لتبادل البيانات بين الإدخال / الإخراج والذاكرة.
في (I / O) المبرمج يكون المعالج هو الذي يستمر في التحقق ممّا إذا كانت وحدة الإدخال / الإخراج جاهزة لاستقبال البيانات ونقلها أو ما إذا كانت وحدة الإدخال / الإخراج قد أكملت المهمة المطلوبة أم لا، هذا الانتظار الطويل للمعالج يؤدي إلى تدهور أداء النظام، لتحسين أداء النظام، يمكن استخدام نهج بديل حيث يمكن للمعالج بعد إصدار أمر الإدخال / الإخراج إلى وحدة الإدخال / الإخراج أن ينشغل بنفسه في القيام ببعض الأعمال الأخرى، بهذه الطريقة، يمكن الاستفادة من الوقت الثمين للمعالج.
كيفية تبادل البيانات بين الذاكرة وأجهزة الإدخال / الإخراج
هنا سوف نتحدث عن كيفية تبادل البيانات بين الذاكرة والإدخال / الإخراج من خلال المعالج باستخدام طريقة الإدخال / الإخراج المدفوع بالمقاطعة (interrupt-driven I/O)، سنرى أولاً هذا السيناريو بأكمله من وجهة نظر وحدة الإدخال / الإخراج ثمّ من وجهة نظر المعالج، ضع في اعتبارك أنّه يجب تخزين البيانات في الذاكرة الرئيسية من وحدة الإدخال / الإخراج كمدخلات من وجهة نظر وحدة الإدخال / الإخراج:
- يقوم المعالج بإصدار أمر (READ I / O) لوحدة الإدخال / الإخراج المقابلة ويتابع بعض المهام المفيدة الأخرى، لا تنتظر وحدة الإدخال / الإخراج للاستعداد بالبيانات المطلوبة.
- تقوم وحدة الإدخال / الإخراج بعد ذلك بمعالجة أمر “قراءة الإدخال / الإخراج” هذا وقراءة البيانات من الجهاز الطرفي الذي تمت معالجته، تخزن وحدة الإدخال / الإخراج بيانات القراءة في سجل البيانات الخاص بها وتصدر إشارة مقاطعة إلى المعالج عبر خط التحكم في ناقل النظام، بإرسال الإشارة المقطوعة، تشير وحدة الإدخال / الإخراج إلى المعالج أنّه جاهز الآن لنقل البيانات، ولكن، يجب أن تنتظر وحدة الإدخال / الإخراج حتى يطلب المعالج البيانات من وحدة الإدخال / الإخراج.
- عندما يطلب المعالج البيانات من الإدخال / الإخراج، فإنّه يضع البيانات فوق خط البيانات لناقل النظام، بمجرد أن تقوم وحدة الإدخال / الإخراج بنقل البيانات إلى المعالج، فإنّها تعد نفسها جاهزة لنقل إدخال / إخراج آخر.
الآن دعونا نناقش هذا النقل للبيانات بين المعالج و(I / O) من وجهة نظر المعالج:
- فلنبدأ مرة أخرى، لاسترداد البيانات من وحدة الإدخال / الإخراج، يقوم المعالج بإصدار أمر القراءة والمضي قدمًا في القيام بشيء آخر، على سبيل المثال، يبدأ في تنفيذ بعض البرامج الأخرى لأنّه قد يعمل على برامج متعددة في وقت واحد.
- كما نعلم أنّه عندما يقوم المعالج بتنفيذ أي برنامج، فإنّه بعد كل دورة تعليمات يقوم بفحص المقاطعات التي حدثت، إذا وجد المقاطعات المعلقة فإنّه يستجيب ويخدم المقاطعة التي حدثت.
- يجد المعالج اللحظي المقاطعات بواسطة وحدة الإدخال / الإخراج، ويوقف تنفيذه الحالي ويحفظ السياق “على سبيل المثال، عداد البرنامج (program counter)، سجل المعالج (processor register)” لخدمة المقاطعة.
- الآن طلب المعالج البيانات من وحدة الإدخال / الإخراج وقبول كلمة البيانات عبر خط البيانات، يقوم المعالج بتخزين هذه البيانات على الذاكرة ويستعيد سياق البرنامج الذي كان يعمل عليه ويستأنف تنفيذه.
إذًا، يتم نقل البيانات بين الذاكرة و(I / O) بمساعدة المقاطعة (I / O)، على الرغم من كونه أكثر كفاءة من الإدخال / الإخراج المبرمج، إلّا أنّه يهدر بعض وقت المعالج، حيث أنّ نقل البيانات من الذاكرة إلى وحدة الإدخال / الإخراج أو من وحدة الإدخال / الإخراج إلى الذاكرة يمر عبر المعالج.
خدمة المقاطعة Interrupt Servicing
حتى الآن رأينا نقل البيانات بين الإدخال / الإخراج والذاكرة حيث تشير وحدة الإدخال / الإخراج إلى المعالج عن طريق إصدار مقاطعة، يؤدي إصدار المقاطعة إلى العديد من الأحداث الأخرى في أجهزة وبرامج المعالجات والتي سنناقشها بالتفصيل هنا:
- يكمل جهاز الإدخال / الإخراج المهمة التي أصدرها المعالج إليه من خلال أمر الإدخال / الإخراج ثمّ يشير إلى مقاطعة المعالج.
- يقوم المعالج بتنفيذ تعليماته الحالية ثمّ التحقق من المقاطعة.
- عندما يحدد المعالج مقاطعة، فإنّه يشير إلى جهاز الإدخال / الإخراج المقابل مع إقرار بأنّه تلقى مقاطعة، استلام الإقرار من المعالج، وسحب جهاز الإدخال / الإخراج إشارة المقاطعة الخاصة به.
- يتعين على المعالج الآن نقل عنصر التحكم إلى روتين خدمة المقاطعة، ولكن قبل تبديل عنصر التحكم، يجب عليه حفظ المعلومات التي يتطلبها لاستئناف تنفيذ البرنامج الذي كان يعمل عليه عند نقطة الانقطاع، أقل المعلومات التي سيحتاجها المعالج لاستئناف عمله عند نقطة المقاطعة هي الحالة الحالية للمعالج وعنوان التعليمات التالية التي سيتم تنفيذها، يحفظ المعالج حالته في كلمة حالة برنامج التسجيل (PSW) وعنوان التعليمات التالية ليتم تنفيذها في عداد البرنامج، وضع المعالج هذه المعلومات على مكدس التحكم في النظام.
- يقوم المعالج بتحميل عداد البرنامج بعنوان موقع إدخال روتين خدمة المقاطعة المناسب الذي سيخدم المقاطعة التي حدثت.
- اعتمادًا على بنية الكمبيوتر ونوع نظام التشغيل لديك، قد يكون هناك برنامج واحد لمعالجة المقاطعة لجميع أنواع المقاطعات أو قد يكون هناك برنامج مختلف لكل نوع من أنواع المقاطعة.
- في حالة وجود العديد من برامج معالجة المقاطعة، يجب على المعالج تحديد روتين معالجة المقاطعة الذي يجب أن يستدعيه وهذه المعلومات موجودة في إشارة المقاطعة الصادرة إلى المعالج بواسطة وحدة الإدخال / الإخراج، بمجرد الحصول على هذه المعلومات، يبدأ المعالج في تنفيذ روتين خدمة البرنامج.
- يخدم روتين خدمة المقاطعة المقاطعة التي حدثت لذلك يتحقق المعالج من حالة جهاز الإدخال / الإخراج الذي يشير إلى المقاطعة أو الحدث الذي يسبب المقاطعة، أثناء خدمة المقاطعة، قد يقوم المعالج بإرسال بعض الأوامر الإضافية أو الإقرار بجهاز الإدخال / الإخراج.
- عندما تتم معالجة المقاطعة بالكامل، يستعيد المعالج قيم التسجيل الخاصة به من المكدس.
- أخيرًا، يتم استعادة قيم عداد البرنامج وكلمة حالة البرنامج من المكدس واستئناف تنفيذ البرنامج الذي تمت مقاطعته.
ملاحظة: يتم تنفيذ آلية في دائرة الواجهة لكل جهاز تتحكم في ما إذا كان جهاز الإدخال / الإخراج المقابل مسموحًا به للإشارة إلى مقاطعة أم لا، يتم تنفيذ هذه الآلية عن طريق تمكين أو تعطيل بت تمكين المقاطعة، هذا البت موجود في دائرة واجهة الجهاز.