اینتراپت یا وقفه چیست؟

همانطوریکه در بحث مقدماتی ذکر شد، هدف از این مبحث تاکیدبر این نوع نگرش است که ارتباط ریزپردازنده با دستگاهای I/O مشابه روش متداول ارتباط با حافظه نیست و الزاما نیازمند روش دیگری است، که آن روش را وقفه نامیدیم.

وقفه، همانطوریکه از نامش پیداست، روشی است که در اجرای برنامه عادی و جاری ریزپردازنده وقفه به وجود می آورد و آن را بصورت موقت قطع می کند تا ریزپردازنده اقدام به اجرای یک برنامه دیگر نموده و پس از اتمام آن، کنترل اجرای برنامه توسط ریزپردازنده، مجددا" به برنامه ایی که قطع شده برگشته و اجرای آن را ادامه دهد. بنابراین مفهوم وقفه به هیچ وجه به معنی توقف کار ریزپردازنده نیست بلکه وقفه صرفا قطع برنامه جاری و رفتن به اجرای یک برنامه دیگر است.

وقفه ها جزء بسیار مهمی از معماری هر کامپیوتر هستند و البته نحوه عملکرد آنها از ماشینی به ماشین دیگر ممکن است متفاوت باشد. درمورد وقفه مباحث مفصلی در سایت میکرورایانه انجام شده است به فهرست مقالات سایت میکرورایانه مراجعه کنید. وقفه راهکاری را فراهم می سازد تا اجرای دستور العمل های جاری پردازنده موقتا متوقف شده و دستورات سرویس دهی دیگری اجرا گردند. پس از آن کنترل دوباره به برنامه وقفه داده شده باز خواهد گشت.

مثال هایی از انواع وقفه ها

- وقفه های در حین اجرای برنامه که در اثر اجرای دستور رخ می دهد. مثل وقفه تقسیم بر صفر که در اثر اجرای دستور تقسیم بر صفر رخ می دهد، یا اجرای دستور العمل با کد غیر مجاز، یا آدرس دهی به خارج از محدوده ی مجاز کاربر.

- وقفه های زمان سنج (Timer) این وقفه به سیستم عامل امکان می دهد بعضی اعمال را به صورت مرتب در یک پریودهای خاص زمانی انجام دهد. مثل تنظیم ساعت ، یا چک کردن سخت افزار و ...

- وقفه های I/O این وقفه ها به وسیله کنترل کننده دستگاههای I/O تولید می شوند تا کامل شدن طبیعی اجرای یک برنامه (اتمام یک عمل توسط I/O مربوطه) و یا احیانا بروز خطا در حین اجرای آن عمل را نشان دهند.

- وقفه های نقص سخت افزار یا وقفه های (Machine Check) مثل وقفه ای که در اثر بروز خطای توازن رخ می دهد، یا وقفه ی نقص تغذیه سیستم.

- وقفه (Super Visor Call) که در واقع یک تقاضا از طرف برنامه کاربر جهت دریافت سرویس ویژه ای از سیستم عامل است.

دسته بندی وقفه ها

به صورت خیلی کلی می توان وقفه ها را به سه دسته اساسی تقسیم کرد:

- وقفه های داخلی : وقفه هایی است که در اثر اجرای دستورات در ریزپردازنده رخ می دهد (مثل وقفه تقسیم بر صفر).

- وقفه های خارجی : وقفه هایی است که در اثر وقوع یک اتفاق خارجی و از طرف دستگاههای سخت افزاری خارج از ریزپردازنده به وجود می آید.

- وقفه های نرم افزاری : وقفه هایی است که در اثر فراخوانی توابع سیستمی توسط برنامه رخ می دهد. در بعضی مواقع این نوع وقفه ها را در همان دسته بندی وقفه های داخلی قرار می دهند.
وقفه های نرم افزاری در اثر اجرای مجدد برنامه، دوباره به همان صورت قبلی رخ خواهد داد. در صورتی که وقفه های خارجی مستقل از دستورات برنامه است و ناهمگام با برنامه بوده و در اثر یک اتقاق خارجی رخ می دهد.