سیستم عامل به سبک تِرِد سیستم عامل به سبک تِرِد



شما این تِرِد رو مطالعه کردید آفرین.🍻
تصویر: اوپس 502
اوپس: تصویر 502
فرزاد 1405/3/30

وقفه ها آموزش و یادگیری وقفه ها به صورت رایگان


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

ولی اگر استاد بهتون بگه هر کس سوال داره دستشو ببره بالا چی؟ این روش هم سرعت خیلی بالاتری داره و هم انرژی و منابع کمتری مصرف میکنه.

ما دقیقا نمونه این مثال رو تو عملکرد سیستم عامل داریم.
Interrupt یا وقفه، سیگنالی هستش که برای تغییر وضعیت به CPU (پردازنده) ارسال میشه.این سیگنال میتونه از یه ماژول I\O , نرم افزار یا سخت افزار ارسال بشه و انواع متفاوتی هم داره.


البته برای پردازنده interrupt بیشتر این معنی رو میده:

“هر کاری که داری میکنی رو متوقف کن و به یه کار مهم تر برس!”

مثلا فرض کنید یه پردازنده داریم و یه پرینتر. پردازنده داره دیتا ها رو برای چاپ به پرینتر ارسال میکنه و پرینتر هم به محض دریافت دیتا اقدام به چاپشون میکنه. خب منطقا CPU خیلی سریع تر از پرینتره برای همین وقتی دیتا به پرینتر میرسه و شروع به پرینت شدن میکنه اینجا کلی هدر رفت زمان و استفاده غیر بهینه(بهش میگن حالت idle یا بیکار) از CPU میشه.
برای همین ما وقفه ها رو داریم. وقتی پرینتر دیتا رو دریافت میکنه, به CPU یه وقفه میزنه و میگه: “هی من دیتا رو دریافت کردم و میخوام شروع به چاپ کنم تو برو به کار های دیگت برس!👋”

یکم بیشتر بدونید

وقفه ها توسط قطعات سخت افزاری به نام Advanced Programmable Interrupt Controller (APIC) که داخل پردازنده قرار دارند پردازش و کنترل میشن. البته سیستم پردازنده های قدیمی تر که از معماری های قدیمی استفاده میکردن از Programmable Interrupt Controller (PIC) استفاده میکردن.
APIC امروزه برای معماری X86‍ استفاده میشه 💻


APIC دو بخش مهم داره به نام های Local APIC و I/O APIC❗

Local APIC: توی هر هسته (Core) از cpu وجود داره. این باعث میشه سیستم عامل بتونه مشخص کنه که هر وقفه توسط کدوم هسته پردازش بشه! I/O APIC: این بخش مسئول دریافت وقفه های دستگاه های I/O هستش. باعث میشه سیستم عامل بتونه مشخص کنه که مثلا وقفه کارت شبکه بره روی CORE 2 از پردازنده!

اینجوری پردازنده توی این تایمی که پرینتر داره عملیات چاپ رو انجام میده هزاران شاید میلیون ها instruction دیگه رو اجرا میکنه و بیکار نمیمونه. وقتی هم که کار پرینتر تموم میشه مجددا یه وقفه به CPU میزنه و میگه: “هی من دیتای قبلی رو چاپ کردم! دیتای جدیدو بده بیاد😁”.

یکم بیشتر بدونید

ما اصولا ۴ نوع وقفه داریم:

‍‍‍‍‍‍Program : این وقفه توسط برنامه و در شرایط خاص حین اجرا شدن یا تولید خروجی ارسال میشه. مثلا arithmetic overflow یا division by zero


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


Timer : توسط تایمر پردازنده تولید میشه که به سیستم عامل اجازه انجام عملیات خاص به طور منظم رو میده.


I/O : توسط ماژول های Input/Output برای اعلان تکمیل یا شروع یک عملیات و یا نوع خطا تولید و ارسال میشن.

شماره تِرِد : شماره 9 از 13

نظرات