وقفه ها در سیستم عامل و شیوه مدیریت آن‌ها

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

۰ نظر
طراح قالب : عرفـــ ـــان قدرت گرفته از بلاگ بیان