ویرگول
ورودثبت نام
سید عمید قائم مقامی
سید عمید قائم مقامیبرنامه نویسی سیستم ویندوز و مهندسی معکوس و علاقه مند به آموزش.
سید عمید قائم مقامی
سید عمید قائم مقامی
خواندن ۴ دقیقه·۳ روز پیش

مبانی (درون PC چه می‌گذرد؟): وقفه ها

آشنایی با وقفه ها

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

وقتی که به برنامه ای وقفه داده میشود پردازنده محتویات ثباتهای CS و IP را روی پشته ذخیره میکند و اجرای روال وقفه را شروع می کند. پس از اینکه روال وقفه کار خود را به پایان رساند دستورالعمل IRET (مخفف Interrupt RETurn به معنی بازگشت از وقفه) را صادر میکند که محتویات CS و IP را از روی پشته به آنها بازمی گرداند و به این ترتیب برنامه را از سر می گیرد.

روال وقفه محتویات ثباتهای دیگر را ذخیره میکند و قبل از بازگشت به برنامه ای که به آن وقفه داده شده است مقدار آنها را بازیابی می کند.

۱-۳ ساختار جدول بردارهای وقفه

تاکنون در بارۀ یک وقفه و یک روال وقفه صحبت کرده ایم در واقع 8088 تنها یک وقفه ندارد ، بلکه دارای ۲۵۶ وقفه است که از ۰ تا ۲۵۵ شماره گذاری میشوند.

متناظر با هر وقفه ای یک روال وقفه برای برخورد با وضعیت خاص مربوط به آن وجود دارد. برای سازماندهی ۲۵۶ وقفه موجود ، آدرسهای شروع روالهای وقفه متناظر با آنها در جدول بردارهای وقفه قرار داده میشود.

وقتی که وقفه ای رخ می دهد، پردازنده خود به خود آدرس شروع روال وقفه را از جدول بردارهای وقفه بر می دارد.

در این جدول آدرس فاصله از مبدأ و آدرس قطعه ابتدای هر یک از روالهای وقفه وجود دارد. عرض هر دو آدرس ١٦ بیت (۲ بایت) است بنابراین هر یک از درایه های جدول ٤ بایت را اشغال میکند. طول کل جدول ٤*۲۵٦ یا ۱۰۲٤ بایت ( K ۱) است.

خود جدول در حافظه از آدرس 0h تا 3FFh قرار دارد. از آنجا که شمارۀ هر وقفه همان درایه جدول برای روال وقفۀ متناظر با آن است آدرس روال وقفۀ ، درایه صفر جدول است که در خانه های Oh تا 3h قرار دارد. خانه های حافظه 4h تا 7h حاوی آدرس روال وقفۀ ۱ اند ، و به همین ترتیب برای وقفه های دیگر آخرین وقفه یعنی وقفهٔ ۲۵۵ آخر جدول یعنی خانه های 3FCh تا 3FFh را اشغال می کند.

برای محاسبه آدرس شروع یک وقفه کافی است شماره وقفه را در چهار ضرب کنیم.

مزيتها

یکی از مزیتهای استفاده از جدول بردارهای وقفه این است که به آسانی میتوان در ایه ای از

جدول را به آدرس شروع روال وقفه ای که توسط کاربر نوشته شده است تغییر داد. با این کار روال وقفۀ جدیدی در اختیار برنامه ها گذاشته میشود و برنامه ها صرفاً با اجرای دستورالعمل وقفۀ متناظر میتوانند آن را فرا بخوانند.

در بخش بعدی انواع مختلف وقفه ها و نحوۀ استفاده از آنها در سیستم را شرح میدهیم.

۲-۳ انواع وقفه

تاکنون دربارۀ انواع مختلف وقفه صحبت نکرده ایم دو نوع عمده از وقفه ها وجود دارد:

وقفه های سخت افزاری و وقفه های نرم افزاری.

شكل بعد انواع مختلف وقفه ها را نشان میدهد.

۱-۲-۳ وقفه های نرم افزاری

وقفه نرم افزاری وقفه ای است که با دستورالعمل INT در یک برنامه زبان ماشین فرا خوانده میشود. دستورالعمل INT حاوی شمارۀ وقفه ای است که میخواهیم آن را فرا بخوانیم. مثلاً دستورالعمل فراخوانی وقفه ۵ که نسخه ای از محتویات جاری صفحه نمایش را به چاپگر می فرستد به صورت 5 INT است. دستورالعمل INT این امکان را میدهد که بتوانید هر یک از ۲۵٦ وقفۀ موجود را فرا بخوانید.

وقفه های نرم افزاری این امکان را ایجاد میکنند که از سطح اسمبلر یا زبان ماشین یا از طریق بسیاری از زبانهای سطح بالا که امکان پردازش وقفه ها را دارند از بسیاری از خدمات اساسی سیستم عامل استفاده شود.

۲-۲-۳ وقفه های سخت افزاری

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

به عنوان مثال می توان صفحه کلید را نام برد. وقتی کلیدی را فشار میدهید یا رها می کنید، سیگنال وقفۀ ۹ (وقفهٔ صفحه کلید) داده میشود. روال وقفۀ استاندارد DOS با قرار دادن مقدار نویسۀ متناظر با کلیدی که فشار داده شده است در بافر صفحه کلید به دنبال هر مقداری که احتمالاً از قبل در آن است، به وقفه پاسخ می دهد. اگر بافر صفحه کلید پر باشد، این روال یک بوق کوتاه را ایجاد میکند. همچون هر وقفه دیگری، پسی از اتمام روال وقفه برنامه اصلی ادامه می یابد.

Telegram: @CaKeegan
Gmail : amidgm2020@gmail.com

سیستم عامل
۰
۰
سید عمید قائم مقامی
سید عمید قائم مقامی
برنامه نویسی سیستم ویندوز و مهندسی معکوس و علاقه مند به آموزش.
شاید از این پست‌ها خوشتان بیاید