به احتمال زیاد اسم Context Switch به گوشتون خورده. توی سیستم عامل وقتی CPU از یه برنامه به یه برنامه دیگه اختصاص داده میشه (سویچ میکنه) میگن Context Switch اتفاق افتاده.
تو کتاب استالینگز به این عمل به جای context switch میگن Process switch! 📚
برای منم اینجوری جا افتاده بود که Cpu داره بین پراسس ها سویچ میکنه در صورتی که به طور فنی پراسس چیزی جز یه موجودیت و یه سری دیتا نیست.
بخش زنده داخل Process ها Thread ها هستن. ترد ها جریانی از Instruction set (مجموعه ای از دستورالعمل ها) ها هستن که توسط Cpu پردازش میشن. 💡
در واقع پردازنده یه جورایی داره Thread ها رو پردازش میکنه (دستورالعمل هاشونو) و سر و کارش با Thread ها هستش نه Process ها.
این عمل سویچینگ هم بین Thread ها اتفاق میوفته. ینی عملیات Context switch روی ترد ها اتفاق میوفته!
این رو هم بگم که دو نوع Context switch داریم:
- Thread Context Switch:
این نوع سویچینگ ینی Cpu بین ترد های یه پراسس سویچ کنه. برای مثال اگر ترد 1 از P1 داره اجرا میشه سویچ کنه به مثلا ترد 2 از همون پراسس یعنی P1!
- Process Context Switch:
این نوع سویچینگ هم ینی Cpu از ترد یه پراسس یه ترد یه پراسس دیگه سویچ کنه!
برای مثال پردازنده از ترد 5 از پراسس P5 سویچ میکنه به ترد 2 از پراسس P99!
این رو هم بگم که TCS (Thread Context Switch) خیلی از PCS سریع تره چون ترد های سویچ شده داخل یه پراسس هستن و اینجا دیتای پراسس در حال اجرا یکسانه و از طرفی آدرس فضای مموری هم یکسانه ولی تو PCS اینا کلا متفاوتن و باید همشون مجددا Load شن!💾
بعضی وقتا یه سری چیزای همینقدر بدیهی و مشخص رو اشتباها یاد میگیریم و خیلی راحت این دانش غلط رو منتقل میکنیم و این چرخه ادامه پیدا میکنه!🙂
Post #271
578
- 🔥 10