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