وقفه ها در سیستم عامل و شیوه مدیریت آنها
پس از لود شدن سیستم عامل، هم سختافزار و هم نرمافزار میتوانند وقفه ایجاد کنند. وقفه به سیگنالهایی گفته میشود که میتوانند توسط سختافزار یا نرمافزار ایجاد شوند. این سیگنالها به سیپییو منتقل میشوند و سیپییو متوجه میشود بخشی از سیستم نیازمند توجه فوری است. وقفههایی که توسط نرمافزار ایجاد میشوند را میتوان به دلیل
system call
یا
monitor call
دانست. پس از ایجاد وقفه، کنترل اجرا باید به ادارهکننده وقفه منتقل شود. به این ادارهکننده وقفه اصطلاحاً
interrupt service routine
گفته میشود. سیستم عامل باید وقفهها را بین ادارهکننده وقفهها توزیع کند. برای این کار، وقفه به یک
generic routine
منتقل میشود و این اداره کننده میانی، اطلاعاتی را که همراه وقفه است بررسی میکند و ادارهکننده وقفه متناسب با آن را اجرا میکند. اما در سیستمهای واقعی باید وقفه به سرعت مدیریت شود و استفاده از ادارهکنندهی وقفهی میانی باعث کاهش چشمگیر سرعت مدیریت وقفهها خواهد شد. برای برطرف نمودن این مشکل جدولی از اشارهگرها به ادارهکنندههای وقفه ایجاد شده است و هرگاه وقفهای اتفاق بیافتد، این جدول بررسی میشود و ادارهکننده رویداد متناسب اجرا میشود. بدین ترتیب نیاز به اداره کنندهی میانی از بین میرود. این جدول آرایهای است که به آن اصطلاحاً
interrupt vector
میگویند. این آرایه کوچک در ابتدای حافظه قرار میگیرد. آدرس محلی که وقفه در آنجا اتفاق افتاده است نیز در
system stack
قرار میگیرد و زمانی که ادارهی وقفه به اتمام برسد، این آدرس از پشته سیستم لود میشود و فعالیت عادی سیستم از سرگرفته میشود.