الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عن ال software interrupts

مغلق
بدأه KnowledgeSeeker في 22 يناير 2007 · 3 رد · 2,185 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

من خلال قرائتي عن المقاطعات أجد أنه يتم تقسيمها إلى قسمين: مقاطعات عتادية (hardware interrupts) و مقاطعات برمجية (software interrupts) وحسب ما أعلم فإن سبب تسميتها بالمقاطعة هو أنها تقوم بمقاطعة عمل المعالج CPU وجعله يقوم بخدمة هذه المقاطعة ثم بعد ذلك يعود إلى عمله مرة أخرى حيث كان.

ولكن في حالة الـ software interrupts فأنا لا أرى أي مقاطعة لعمل الـ CPU وذلك لأن مثل هذا النوع من المقاطعات لا يتم تنفيذها إلا عندما يصل إليها وقت التنفيذ في البرنامج فمثلاً: تعليمة INT 10 في معالج 8086 تعتبر مقاطعة برمجية ومع ذلك لا تتم خدمتها إلا عندما يصل المعالج إليها وقت التنفيذ مثلها مثل استدعاء أي دالة أخرى سوى أنها تعتبر system call.

فهل ثمة سبب لاعتبارها مقاطعة (تقاطع ماذا بالضبط؟)

وشكرا مقدماً ..

تم تعديل هذه المشاركة بواسطة KnowledgeSeeker في 22 يناير 2007 في 01:53

#2
KnowledgeSeeker كتب:
ولكن في حالة الـ software interrupts فأنا لا أرى أي مقاطعة لعمل الـ CPU وذلك لأن مثل هذا النوع من المقاطعات لا يتم تنفيذها إلا عندما يصل إليها وقت التنفيذ في البرنامج فمثلاً: تعليمة INT 10 في معالج 8086 تعتبر مقاطعة برمجية ومع ذلك لا تتم خدمتها إلا عندما يصل المعالج إليها وقت التنفيذ مثلها مثل استدعاء

هي سميت لانها تقطع السير العادي للبرنامج

فبدلا من تنفيذ كود البرنامج تنفذ كود اخر تشير له المقاطعة

-

اما ذكرك للمقاطعة 10h فليس عاما

هناك مقاطعات انت تستدعيها كجزء من عمل برنامجك ، لكن هناك مقاطعات لا تستدعيها انت و تنفذ حسب الحاجة

كمثال مقاطعة Division by Zero انت لم تستدعيها ببرنامجك لكنها تحصل في حالة القسمة على صفر

مثال اخر timer interrupt

والسلام عليكم و رحمة الله و بركاته

d4baa0.gif
#3
اقتباس
هي سميت لانها تقطع السير العادي للبرنامج

فبدلا من تنفيذ كود البرنامج تنفذ كود اخر تشير له المقاطعة

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

تحياتي ..

#4

تطلق كلمة مقاطعة Interrupt عادة على المقاطعات المادية Hardware Interrupts و كذلك على الإستثنائات exceptions التي تعتبر كمقاطعات برمجية Software Interrupts.

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

في الواقع المقاطعات تنقسم إلى ثلاث أصناف:

*المقاطعات المادية هي مقاطعات تنتج عن إشاركة إلكترونية خارجية تصل لأرجل معينة للمعالج ك reset و NMI, تسما بمقاطعات IRQ و مجموعها 16 مقاطعة, تنتج عن أحداث مادية كتحريك الفأرة أو الضغط على زر لوحة المفاتيح أو تحيين لمؤقت الساعة للوحة الأم...

*المقاطعات البرمجية تنتج عن إستدعاء مباشر إنطلاقا من التطبيق لتعليمات لغة التجميع كتعليمتي INT و INTO. وتستعمل عادة للاستدعاء دوال النظام Sytem calls لهذا تكون دائما لها علاقة بنظام التشغيل, فمقاطعات الدوس ليست نفسها مقاطعات ويندوز أو يونيكس. فهي بصفة عامة تعتبر api نواة النظام kernel.

*مقاطعات الإستثناء Exception وهي مقاطعات تأتي نتيجة خطأ برمجي عند التنفيذ يلتقطه المعالج كالٌقسمة على العدد 0 Divide by zero ,أو قراءة لعنوان ذاكرة غير موجود ماديا أو عملية حسابية غير سليمة لل FPU ونذكر كذلك Page Fault و Double Fault و General Protection Fault. هذا الصنف يحوي تقريبا 32 مقاطعة غير متوفرة للمبرمج مباشرة بل محجوزة للمعالج فقط.

أنظر هذه الوصلات لعلك تجد بعض التفسير عنها :

/index.ph...mp;#entry482541

/index.ph...mp;#entry508318

تم تعديل هذه المشاركة بواسطة ikossan في 22 يناير 2007 في 23:21

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

هذا الموضوع مغلق.

مواضيع مشابهة