شنبه, ۱۵ اردیبهشت, ۱۴۰۳ / 4 May, 2024
مجله ویستا

وقفه ها


وقفه ها

هدف از این مبحث تاکیدبر این نوع نگرش است که ارتباط ریزپردازنده با دستگاهای I O مشابه روش متداول ارتباط با حافظه نیست و الزاما نیازمند روش دیگری است, که آن روش را وقفه نامیدیم

● وقفه ها

هدف از این مبحث تاکیدبر این نوع نگرش است که ارتباط ریزپردازنده با دستگاهای I/O مشابه روش متداول ارتباط با حافظه نیست و الزاما نیازمند روش دیگری است، که آن روش را وقفه نامیدیم.

وقفه، همانطوریکه از نامش پیداست، روشی است که در اجرای برنامه عادی و جاری ریزپردازنده وقفه به وجود می آورد و آن را بصورت موقت قطع می کند تا ریزپردازنده اقدام به اجرای یک برنامه دیگر نموده و پس از اتمام آن، کنترل اجرای برنامه توسط ریزپردازنده، مجددا" به برنامه ایی که قطع شده برگشته و اجرای آن را ادامه دهد. بنابراین مفهوم وقفه به هیچ وجه به معنی توقف کار ریزپردازنده نیست بلکه وقفه صرفا قطع برنامه جاری و رفتن به اجرای یک برنامه دیگر است.

وقفه ها جزء بسیار مهمی از معماری هر کامپیوتر هستند و البته نحوه عملکرد آنها از ماشینی به ماشین دیگر ممکن است متفاوت باشد. درمورد وقفه مباحث مفصلی در سایت میکرورایانه انجام شده است به فهرست مقالات سایت میکرورایانه مراجعه کنید. وقفه راهکاری را فراهم می سازد تا اجرای دستور العمل های جاری پردازنده موقتا متوقف شده و دستورات سرویس دهی دیگری اجرا گردند. پس از آن کنترل دوباره به برنامه وقفه داده شده باز خواهد گشت.

● مثال هایی از انواع وقفه ها

▪ وقفه های در حین اجرای برنامه که در اثر اجرای دستور رخ می دهد. مثل وقفه تقسیم بر صفر که در اثر اجرای دستور تقسیم بر صفر رخ می دهد، یا اجرای دستور العمل با کد غیر مجاز، یا آدرس دهی به خارج از محدوده ی مجاز کاربر.

▪ وقفه های زمان سنج (Timer) این وقفه به سیستم عامل امکان می دهد بعضی اعمال را به صورت مرتب در یک پریودهای خاص زمانی انجام دهد. مثل تنظیم ساعت ، یا چک کردن سخت افزار و ...

▪ وقفه های I/O این وقفه ها به وسیله کنترل کننده دستگاههای I/O تولید می شوند تا کامل شدن طبیعی اجرای یک برنامه (اتمام یک عمل توسط I/O مربوطه) و یا احیانا بروز خطا در حین اجرای آن عمل را نشان دهند.

▪ وقفه های نقص سخت افزار یا وقفه های (Machine Check) مثل وقفه ای که در اثر بروز خطای توازن رخ می دهد، یا وقفه ی نقص تغذیه سیستم.

▪ وقفه (Super Visor Call) که در واقع یک تقاضا از طرف برنامه کاربر جهت دریافت سرویس ویژه ای از سیستم عامل است.

● دسته بندی وقفه ها

به صورت خیلی کلی می توان وقفه ها را به سه دسته اساسی تقسیم کرد:

▪ وقفه های داخلی: وقفه هایی است که در اثر اجرای دستورات در ریزپردازنده رخ می دهد (مثل وقفه تقسیم بر صفر).

▪ وقفه های خارجی :وقفه هایی است که در اثر وقوع یک اتفاق خارجی و از طرف دستگاههای سخت افزاری خارج از ریزپردازنده به وجود می آید.

▪ وقفه های نرم افزاری: وقفه هایی است که در اثر فراخوانی توابع سیستمی توسط برنامه رخ می دهد. در بعضی مواقع این نوع وقفه ها را در همان دسته بندی وقفه های داخلی قرار می دهند.

وقفه های نرم افزاری در اثر اجرای مجدد برنامه، دوباره به همان صورت قبلی رخ خواهد داد. در صورتی که وقفه های خارجی مستقل از دستورات برنامه است و ناهمگام با برنامه بوده و در اثر یک اتقاق خارجی رخ می دهد.

● سرکشی یا Polling

همانطوریکه ذکر شد، وقفه یک روش برای ارتباط ریزپردازنده با دستگاهای I/O است. در واقع با این روش به ریزپردازنده اطلاع داده می شود که یک شرایط ویژه ای بوجود آمده و لازم است ریزپردازنده برنامه فعلی خود را ( که در حال اجرای آن است) قطع کرده و به اجرای برنامه ایی دیگر بپردازد.

روش وقفه یکی از روش های سرویس دهی به دستگاههای جانبی است (درمورد وقفه ها مباحث مفصلی در سایت میکرورایانه انجام شده است به فهرست مقالات سایت میکرورایانه مراجعه کنید) روش دیگری هم وجود دارد و آن بررسی دستگاههایی که نیاز به سرویس دارند و سرویس دادن به آنها از طرف خود ریزپردازنده. در این روش که سرکشی یا همه پرسی (Polling) نامیده می شوند، ریزپردازنده طبق یک روتینی که از طرف برنامه کنترل می شود به تک تک دستگاههای جانبی که به سیستم متصل هستند سر زده (سرکشی) و نیاز یا عدم نیاز به اجرای برنامه مربوط به آنها را بررسی می نماید.

مثلا فرض کنید در یک سیستم مبتنی بر ریزپردازنده چهار دستگاه I/O وجود داشته باشد. ریزپردازنده در صورت استفاده از این روش سرویس دهی برای این دستگاهها، ناچار است به صورت منظم و طبق یک روتین خاصی که از طرف برنامه (برنامه نویس) تعیین شده به تک تک چهار دستگاه جانبی سر زده و بررسی نماید که آیا هر کدام از این دستگاهها نیاز به سرویس دهی دارند یا نه؟ و در صورت نیاز به سرویس دهی، برنامه مربوط به هر دستگاه را اجرا نماید و مجددا به روتین بررسی خود ادامه دهد. پرواضح است که در این روش، کنترل کاملا در اختیار برنامه و خود ریزپردازنده است و البته روش بسیار کندی هم می باشد و ممکن است بخش مهمی از زمان ریزپردازنده صرف (تلف) بررسی نیاز دستگاههای I/O گردد که ممکن است هیچ وقت نیاز به سرویس نداشته باشند. مزیت این روش عدم نیاز به سخت افزار پیچیده است. اگر ریزپردازنده کار چندان مهمی نداشته باشد روش مناسبی به نظر می رسد.

گردآورنده و نویسنده : بهار یاوری

تدوین و آماده سازی : همکاران سایت میکرو رایانه