وقفهها جزء مهمی از معماری رایانه هستند و ممکن است نحوه عملکرد آنها از ماشینی به ماشین دیگر متفاوت باشد.
وقفه راهکاری را فراهم میسازد تا اجرای دستورالعملهای جاری پردازنده موقتاً متوقف شده و دستورات سرویسدهی دیگری اجرا شود و سپس از آن کنترل دوباره به برنامه وقفه داده شده بازگردد.
انواع وقفهها را میتوان به صورت زیر دستهبندی کرد:
وقفههای برنامه (program check)؛ که به دلیل اجرای بعضی دستورات رخ میدهند. مثلاً سرریز شدن محاسباتی تقسیم بر صفر، اجرای دستورالعمل غیرمجاز، رجوع به آدرس خارج از محدوده مجاز کاربر که به این وقفهها اغلب Trap یا تله گفته میشود.
وقفههای زمانسنج (Timer)؛ این وقفه به سیستم عامل امکان میدهد بعضی اعمال را به صورت مرتب در یک دوره زمانی خاص انجام دهد (مثل تنظیم ساعت، چک کردن سختافزار و...).
وقفههای I/O ؛ این وقفهها به وسیله کنترلکنندههای دستگاه I/O تولید میشوند تا کامل شدن طبیعی یک عمل یا بروز خطا در انجام عمل را نشان دهند.
وقفههای نقص سختافزار یا وقفههای Machine-check؛ مثل وقفهای که بر اثر خطای بیت توازن (parity) حافظه رخ میدهد یا وقفه نقص برق.
وقفه (Super Visor Call)؛ در واقع یک تقاضا از طرف برنامه کاربر جهت دریافت سرویس ویژهای از سیستم عامل است.
وقفه Restart؛ با فشار دادن دکمه Reset ایجاد میشود.
در یک تقسیمبندی کلی میتوان وقفههای را سه دسته کرد؛ وقفههای داخلی (trap) که بر اثر اجرای دستورات خود برنامه به صورت داخلی در CPU رخ میهند. وقفههای خارجی که از دستگاههای خارجی مثل دستگاههای ورودی یا خروجی ،DMA، تایمرها، صفحه کلید و خطاهای سختافزاری ناشی میشوند و وقفههای نرمافزاری (یا همان SVC) که بر اثر فراخوانی توابع سیستمی توسط برنامه رخ میدهند.
به گفته مسلم عزتی - کارشناس نرمافزار - با اجرای مجدد برنامه، وقفههای داخلی به همان صورت قبلی دوباره رخ میدهند ولی وقفههای خارجی مستقل از دستورات برنامه و ناهمگام با برنامه هستند. اگر چند منبع همزمان تقاضاهایشان را از طریق یک خط وقفه به CPU اعلام کنند، آنگاه CPU با روش همه پرسی یا سرکشی (polling) منبع وقفه دهنده را تشخیص خواهد داد.