وقفه ها ابتدا براي بهبود كارايي پردازنده ايجاد شدند . به عنوان مثال ، اغلب دستگاه هاي I/O خيلي كندتر از پردازند ه اند . فرض كنيد پردازنده اي بر اساس الگوي چرخ داده هايي را به چاپگر ارسال مي كند پس از هر عمليات نوشتن ، پردازنده بايد متوقف شود و منتظر بماند تا چاپگر آمادگي خودش را اعلان كند . مدت اين انتظار ممكن است صدها يا هزاران برابر چرخه هاي دستور العملي باشد كه با حافظه كار ندارند . بديهي است كه زمان CPU به هدر مي رود .
در اين شكل ، برنامه كاربر در بين فراخواني هاي دستورالعمل WRIT (جهت عمل نوشتن ) ،پردازش هايي را انجام مي دهد . مجموعه دستورات 1 و 2 و 3 فاقد I/O هستند فراخواني WRITE منجر به اجراي برنامه I/O مي شود كه يك برنامه سودمند سيستم است وعمل I/O واقعي را انجام مي دهد . اين برنامه I/O شامل سه بخش است :
- دنباله اي از دستور العمل ها كه درشكل مشخص شد و عمل I/O واقعي را انجام مي دهند اين عمليات ممكن است داده هاي خروجي را در ميانگيري ذخيره كند و پارامترهايي را براي فرمان دادن به دستگاه آماده نمايد .
- فرمان I/O واقعي ، بدون استفاده از وقفه ها ، وقتي اين فرمان صادر مي شود ، برنامه ممكن است منتظر دستگاه I/O بماند تا اين دستگاه وظيفه اش را انجام دهد ( يا به طور متناوب ، وضعيت دستگاه I/O را كنترل نمايد تا مشخص شود عمل I/O تمام شد يا خير ).
- دنباله اي از دستور العمل ها كه در شكل با شماره 5 مشخص شد و عمليات را كامل مي كند . اين عمليات ممكن است برچسبي را مقدار دهد كه نشان دهنده موفقيت يا شكست آن باشد .
چون كامل شدن عمل I/O ممكن است مدت زيادي طول بكشد ، برنامه I/O منتظر مي ماند تا عمل I/O كامل شود . لذا برنامه I/O در نقطه فراخواني WRITE به مدت زيادي منتظر مي ماند .