جا به جایی بین پراسس ها آموزش و یادگیری جا به جایی بین پراسس ها به صورت رایگان
هر هسته (Core) از پردازنده در آن واحد فقط میتونه یه برنامه (Instruction) رو اجرا کنه. بنابراین پردازنده های امروزی به صورت Multicore (چند هسته ای) ساخته میشن.مثلا پردازنده ای رو در نظر بگیرید که ۸ هسته داره. این پردازنده میتونه در آن واحد ۸ برنامه رو اجرا کنه. اما امروزه حتی اگر از برنامه های کاربر بگذریم خود سیستم عامل های مدرن هم صد ها برنامه و سرویس مختلف رو به صورت پس زمینه اجرا میکنن. برنامه هایی که بعضی از اون ها باید به صورت مداوم اجرا شن تا سیستم پایدار بمونه!
در این حالت پردازنده باید بین Process های مختلف جا به جا بشه❗
به این عمل Process switching یا Context Switch گفته میشه!
یکم بیشتر بدونید
اما اینجا یه مشکل بزرگ وجود داره! فرض کنید پردازنده وسط اجرای پراسس P1 هستش. اگر پردازنده به صورت ناگهانی بره سراغ پراسس P2 اونوقت از کجا بفهمه که دقیقا کجای پراسس P1 بود؟ این موضوع رو ما به خوبی توی فصل ۱ بخش وقفه ها توضیح دادیم. اما برای یادآوری و توضیح کامل تر مجددا بهش میپردازیم :)
تمامی اطلاعاتی که وضعیت Process رو مشخص میکنه Context نام داره. این اطلاعات داخل PCB ذخیره میشن. (بخشی از Process image هستن!)💾
مراحل Context Switch به صورت زیر هستش:
مرحله اول: وقوع یک Event
در اولین مرحله باید رویدادی رخ بده مثل:
- پایان Time slice (برش زمانی - مدتی که پراسس در اختیار داره تا اجرا شه)
- درخواست I/O
- وقوع یه وقفه (Interrupt)
- پایان اجرای Process
مرحله دوم: ذخیره Context
قبل از اینکه پردازنده Process رو ترک کنه باید وضعیت فعلی ذخیره بشه این اطلاعات شامل رجیستر های CPU و … میشه!
این اطلاعات داخل PCB ذخیره میشه.در نتیجه اگر بعدا دوباره این Process اجرا شد دقیقا از همون نقطه ادامه پیدا میکنه.
مرحله سوم: انتخاب Process بعدی
اگر درخواست Context switch به خاطر وقفه یا نیاز پراسس دیگه ای به منابع ارسال شده باشه که پراسس انتخاب شده ولی اگر بخاطر پایان برش زمانی اجرای یه پراسس باشه Scheduler ها باید از بین پراسس های موجود با وضعیت Ready یکی رو انتخاب کنن!
مرحله چهارم: بازیابی Context
اطلاعات مربوط به Process جدید از PCB (محیط کلی Process image) خوانده میشه. رجیستر های CPU مقدار دهی میشن و پردازنده شروع به اجرای پراسس جدید میکنه.
آیا Process واقعاً متوقف میشه؟
PCB تغییر کرده.این الان ینی برنامه ها دارن همزمان اجرا میشن؟
در واقع همه این پراسس ها دارن روی یک هسته از پردازنده اجرا میشن و هر هسته از پردازنده در آن واحد فقط میتونه یک پراسس رو اجرا کنه. اما این جا به جایی پراسس ها انقدر سریع انجام میشه که احساس میکنیم همه پراسس ها همزمان در حال اجرا هستن⚡
