الـ context switch هو قيام الـ kernel بحفظ حالة الـ CPU للخيط العامل حاليًّا (السجلات، عدّاد البرنامج، مؤشر الـ stack) واستعادة حالة خيط آخر، بحيث يستطيع core واحد مناوبة خيوط كثيرة. يحدث عند كل استباق للـ scheduler، أو syscall حاجب (blocking)، أو مقاطعة — وليس مجانيًّا.
أين تختبئ الكلفة
DIRECT cost (visible, ~1–5 µs):
save/restore registers · run scheduler logic · switch kernel stacks
if PROCESS switch: also swap page tables (CR3) → FLUSHES the TLB
INDIRECT cost (often much larger):
cold CPU CACHES → the new thread's data isn't in L1/L2/L3 → cache misses to RAM
cold TLB → address translations must be re-walked
lost pipeline / branch-predictor state
