“وقفه” یکی از مهمترین قسمت هایی است که علاقمندان به کامپیوتر،دانشجویان رشته کامپیوتر در گرایش های نرم افزار و سخت افزار،محققان و برنامه نویسان باید آشنایی کامل با آن داشته باشند.از همین رو تصمیم به توضیح آن برای تمامی علاقمندان گرفته و در یک مطلب کوتاه آن را توضیح داده ایم.لازم به ذکر است که وقفه در سیستم عامل های گوناگون رفتار های متفاواتی دارد اما شیوه اصلی آن و یا اسکلت بندی مادر،در همه سیستم عامل های به یک گونه است.
در فرهنگ کامپیوتر، وقفه یا انترراپت (Interrupt) یک سیگنال به ریزپردازنده است که به توجه و پاسخ سریع CPU نیاز دارد. هنگامی که یک وقفه رخ میدهد، پردازنده عملیات جاری خود را متوقف میکند تا به درخواست وقفه رسیدگی کند. ریزپردازندههای خانواده ۸۰۸۶ به وقفههای تولید شده به وسیله سختافزار و نرمافزار پاسخ میدهند که به ترتیب به آنها وقفههای سختافزاری، و وقفههای نرمافزاری گفته میشود. فرض کنید که قرار است بین هارد و سی پی یو ارتباط برقرار شودو هرگاه خواندن تمام شد cpu مطلع شود اگر یک بیت برای اینکار بگذاریم و cpu دایمن چک کند هزینه بر است اما وقفه نیاز به کنترل cpu ندارد و هر وقت خواندن تمام شد هارد یک وقفه برای cpu میفرستد.
انواع وقفه
۲۵۶ سطح الویت توسط پردازندههای ۸۰x۸۶ پشتیبانی میشود که میتوان آنها را به سه گروه کلی تقسیم کرد:
وقفههای داخلی سختافزاری
وقفههای خارجی سختافزاری
وقفههای نرمافزاری
وقفههای داخلی سختافزاری (internal hardware-interrupts) بدلیل رخ دادن وضعیت معینی که درحین اجرای یک برنامه پیش آمده تولید میشوند (مانند تقسیم بر صفر).وقفههایی که در اثر خطا بوجود میآید تله (trap) هم نامیده میشود. تله باعث سقط برنامه میشوند. این وقفهها توسط سختافزار اداره میشوند و امکان تغییر آنها وجود ندارد. اما با وجودیکه نمیتوان آنها را مستقیما مدیریت کرد، این امکان وجود دارد که از اثر آن روی کامپیوتر به نحو مفیدی استفاده شود.
مثال:سختافزار وقفه شمارنده ساعت کامپیوتر را چندبار در ثانیه فراخوانی میکند تا زمان را نگه دارد. میتوان برنامهای نوشت که مقدار شمارنده ساعت را خوانده آنرا به شکل قابل درک کاربر به صورت ساعت و دقیقه تبدیل کند.
وقفههای خارجی سختافزاری وقفههای خارجی سختافزاری (external hardware-interrupts) خارج از CPU و توسط دستگاههای جانبی، مانند صفحه کلید، چاپگر، کارتهای ارتباطی و یا کمک پردازنده تولید میشوند. دستگاههای جانبی با ارسال وقفه به CPU خواستار قطع اجرای برنامه فعلی شده و CPU را متوجه خود میکنند. آنها به پایه (maskable interrupts) INTR یا (non maskable interrupts) NMI پردازنده متصل هستند.
وقفههای دستگاهها میتوانند از طریق مداری به نام PIC 8259A، که کارش منحصرا سروکار داشتن با این نوع وقفه هاست، به پردازنده ارسال شوند. مدار (programmable interrupt controller) PIC که توسط CPU کنترل میشود سیگنالهایش را روی پایه INTR قرار میدهد و امکان فعال و غیرفعال کردن وقفهها و تغییر سطح الویت را تحت نظارت یک برنامه میدهد. دستورات STI و CLI میتوانند برای فعال و غیرفعال کردن وقفههایی که روی پایه INTR ارسال میشوند بکار روند که البته روی وقفههای NMI تاثیری ندارد. وقفههای نرمافزاری وقفههای نرمافزاری (software interruptions) در نتیجه دستورالعمل int در یک برنامه درحال اجرا تولید میشوند.
برنامه نویس میتواند با دادن دستور int یک وقفه نرمافزاری تولید کند. بدین طریق بلافاصله اجرای برنامه فعلی را متوقف میکند و CPU را به روتین وقفه هدایت میکند. برنامه نویس از طریق وقفهها میتواند در برنامه با وسایل جانبی ارتباط برقرار کند. استفاده از وقفهها باعث کوتاهتر شدن کد برنامه و درک آسانتر و اجرای بهترآن میشود. روتینهای وقفه نرمافزاری بخشی از سیستم عامل هستند. از اینرو وقفههای نرمافزاری را میتوان به دو گروه تقسیم کرد؛ وقفههای سیستم عامل DOS و وقفههای BIOS. وقفههای DOS آسانتر استفاده میشوند اما از وقفههای BIOS که قسمتی از سختافزار هستند کندتر هستند. DOS این نوع وقفهها را برای اجرای (application programming interface) API خودش استفاده میکند. بیشتر سیستم عاملهای جدید مانند Windows و Unix واسطه C-based را استفاده میکنند.
خیلی مختصر و مفید. البته تکنولوژی روز تمامی وقفه ها رو به هر نحوی دور زدن
:l:l:l:l:l:l:l:l
بسم الله الرحمن الرحیم
اللهم صل علی محمد و آل محمد و عجل فرجهم
سلام خیلی ممنون
بسیار مفید بود
ان شاءالله سربلند باشید
درود بر شما واقعا عالی بود و بنده لذت بردم و بی شک این Page رو به دانشجوهام معرفی میکنم
این عالیه این مقاله هارو بزارید و بنده خیلی لذت بردم چون متاسفانه هیچ جا به این اطلاعات ارزشمند بها نمیدن
جناب آریایی عالی :-bd
میتونم اینو اضافه کنم که وفقه یک الگوریتم از الگوریت های هستش که ما به دنبال اونیم که داده ها در کمترین زمان ممکن پردازش و بی نقص بشن – نمونش یک الگوریتم داریم که وقتی CPU توی یک Loop می افته بطور هوشمندان خودشون نجات بنده مثل صفحه مرگ یا شما همون صفحه آبی میشناسید
الگوریتم های پیچدی هستن از فروشنده دورگرد تا صف دستشوری تا راسل و… که در ارشد بطور ویژه خواهید خوند – اما بزرگترین ایراد وقفه اینکه بعد از پایان داده می یاد یعنی اگه داده ها خراب باشن وقفه میشه یک پایان داده …………. خوب واقعا جای توضیح بیشتر نیست اما ممنون از جناب آریایی
یاد قدیما …:smiley6
بهتر بود این رو هم اضافه میکردید که برنامه های تو حالت SHELL امکان استفاده از وقفه رو ندارند بجز یکی یا دوتا.