مقدمه اي بر وقفه ها

وقفه سيگنالي از دستگاههاي جانبي و يا برنامه اي در حال اجرا است كه عمل خاصي را درخواست مي كند . وقتي وقفه اي اتفاق مي افتد اجراي برنامه به تعويق افتاده و محتويات ثبات هاي CS و IP در پشته نگهداري مي شود ، كنترل به روال پاسخگويي اين وقفه منتقل مي شود . پس از اجراي برنامه اين روال ، محتويات CS و IP از پشته بازيابي مي شود و اجراي برنامه اي كه به تعويق افتاده بود ، ادامه مي يابد .

در شروع اجراي زير برنامه وقفه ، محتويات ثباتها در پشته ذخيره مي شود و در اجراي آن مجددا بازيابي مي شوند تا مشكلي در اجراي برنامه ايجاد نشود.

1_ اجراي برنامه     2_ذخيره كردن محتويات ثبات ها   3_بازيابي محتويات ثباتها  4_ برگشت

نحوه اجراي زير برنامه وقفه و تعداد وقفه ها

تعداد وقفه هايي كه در سيستم مورد استفاده قرار مي گيرند 256 عدد است كه از صفر تا 255 شماره گذاري مي شوند ، هر وقفه داراي زير برنامه اي مربوط به خود است كه مي توان به آن وقفه پاسخ داد . آدرس زير برنامه هاي پاسخگويي به وقفه ها در جدولي به نام جدول بردار وقفه قرار دارد . وقتي وقفه اي اتفاق مي افتد آدرس زير برنامه اي كه بايد به وقفه پاسخ دهد ، از جدول بردار وقفه پيدا شده اجراي آن آغاز مي شود . آدرس شروع هر زير برنامه پاسخگويي به وقفه ، بر اساس آدرس ناحيه و تفاوت مكان در آن ناحيه محاسبه مي شود (يعني آدرس شروع زير برنامه پاسخگويي وقفه ، 32 بيتي است ) چون 256 وقفه ممكن است وجود داشته با شد لذا ميزان حافظه اي كه براي جدول بردار وقفه در نظر گرفته مي شود برابر با (1024 = 4*256 ) بايت است كه فضاي آدرس OH تا 3FFH را اشغال مي كند. براي پيدا كردن آدرس زير برنامه مربوط به يك وقفه ، شماره آن وقفه در 4 ضريب مي شود نتيجه حاصل محلي از جدول بردار وقفه است كه آدرس زير برنامه پاسخگويي به آن وقفه را مشخص مي كند.

وقفه 5

محل وجود آدرس زير برنامه ، پاسخگويي به وقفه 5

20 = 4*5

بعضي از وقفه ها داراي يك يا چند تابع هستند كه با استفاده از آنها مي توان اعمال متفاوتي را انجام داد . هر تابع همانند يك وقفه داراي يك شماره است و شماره گذاري هر تابع در يك وقفه مختص همان وقفه است . به عنوان مثال شماره 10h داراي يك تابعي با شماره 1 است و وقفه شماره 13 نيز داراي تابعي با همين شماره مي با شد . در حين فراخواني وقفه ها ، شماره تابع در ثبات ah قرار مي گيرد و اگر اطلاعات ديگري جهت اجراي وقفه نياز باشد در ثباتها (AL,BX,CX,DX) قرار خواهند گرفت .

انواع وقفه ها

وقفه به طور كلي به دو دسته تقسيم مي شود

1- وقفه هاي سخت افزاري        2- وقفه هاي نرم افزاري

وقفه هاي نرم افزاري به دو دسته تقسيم مي شوند

1- وقفه هايي كه توسط برنامه نويس ايجاد مي شوند             

   2- وقفه هاي سيستم

هر برنامه نويس مي تواند علاوه بر وقفه هايي كه در سيستم وجود دارد (0 تا 256 ) وقفه ديگري را پياده سازي نمايد . وقفه هاي سيستم به دو دسته زير تقسيم مي شود :

1- وقفه هاي بايوس (BIOS )                                              

    2- وقفه هاي DOS

DOS و BIOS دو قسمت مختلف از سيستم عامل كامپيوترها هستند. BOIS زير برنامه سطح پاييني را جهت اعمال (I/O ) تدارك مي بيند ولي DOS اعمال سطح بالاتري را انجام مي دهد به طور كلي قسمتي از سيستم عامل كه توسط بار كننده خودكار به حافظه منتقل شده و اجرا مي گردد DOS نام دارد .

تعداد وقفه هاي BIOS در سيستم عامل مورد استفاده قرار مي گيرند كه در زير مشاهده مي كنيد.

شماره وقفه                                                                      عمل وقفه

5h                                                                 فراهم نمودن امكانات چاپ

10h                                                               ورودي - خروجي صفحه نمايش

12h                                                               تشخيص دستگاههاي جانبي

13h                                                               ورودي - خروجي ديسك

14h                                                               ورودي - خروجي پورت سري

15h                                                               ورودي - خروجي كاست

16h                                                               ورودي - خروجي صفحه كليد

17h                                                               ورودي - خروجي چاپگر

18h                                                               اجراي rom basic

19h                                                               اجراي بار كننده خودكار

1Ah                                                               زمان و تاريخ

خطوط درخواست وقفه

خطوط درخواست وقفهIRQ
خطوط در خواست وقفه (IRQ) خطوط سخت افزاري هستند كه وسايلي مانند درگاههاي I/O ، صفحه كليد، ديسك درايوها و كارت شبكه مي توانند وقفه يا درخواست خود را براي سرويس گرفتن از ميكروپروسسور كامپيوتر از طريق آن ارسال كنند.

خطوط در خواست وقفه جزء سخت افزار كامپيوتر هستند و با اولويتهاي متفاوت درجه بندي شده اند تا ميكروپروسسور كامپيوتر بتواند تشخيص دهد كدام وقفه مهمتر و داراي اولويت بندي است. وقتي كارت شبكه يك درخواست به كامپيوتر مي فرستد از يك وقفه استفاده مي كند. يعني يك سيگنال الكترونيكي به CPU كامپيوتر فرستاده مي شود. هر دستگاه كامپيوتر بايد از يك خط درخواست وقفه (IRQ) جداگانه استفاده ميشود. خط وقفه به هنگام پيكر بندي دستگاه مشخص مي شود. در اغلب مواقع IRQ 3 يا IRQ 5 براي كارت شبكه مورد استفاده قرار مي گيرد. استفاده از وقفه 5 در صورت وجود توصيه مي شود. كه در اكثر سيستم ها به صورت پيش فرض براي كارت شبكه انتخاب مي گردد. براي اطلاع از اينكه كدام يك از IRQ ها آزاد هستند، از يك برنامه تشخيص مانند MSD و يا Noliags استفاده مي شود.

وقفه ها :
1- نرم افزار . 2- سخت افزار .

درگاه I/O
درگاه I/O پايه ، كانالي را مشخص مي كند كه اطلاعات آن بين سخت افزار كامپيوتر ( كارت شبكه ) و (CPU) مبادله مي شوند . اين درگاه از ديد CPU يك آدرس است. در يك سيستم هر وسيله سخت افزاري بايد يك شماره درگاه I/O پايه داشته باشد.

آدرس حافظه پايه
آدرس حافظه پايه محلي را در حافظه كامپيوتر(RAM) مشخص مي كند كه توسط كارت شبكه به عنوان بافر براي ذخيره موقت بسته هاي اطلاعاتي دريافتي و ارسالي مورد استفاده قرار مي گيرد به آدرس اين محل گاهي اوقات آدرس شروع RAM نيز گفته مي شود. اغلب اين حافظه براي كارت شبكه D8000 است. برخي از كارت هاي شبكه تنظيمي براي آدرس حافظه پايه ندارند زيرا از هيچ بخش RAM سيستم استفاده نمي كند.

بعضي از كارتهاي شبكه داراي يك تنظيم براي تخصيص بخشي از RAM براي ذخيره سيستم هاي اطلاعاتي هستند. به عنوان مثال در برخي از كارتها شما مي توانيد 16K يا K32 از حافظه را به اين امر اختصاص دهيد. تخصيص مقدار بيشتري از حافظه باعث افزايش كارآيي شبكه مي شود. ولي ميزان حافظه كمتري براي ساير برنامه ها باقي مي ماند.