直接回答:上下文切换指 CPU 从执行一个任务转到另一个任务时,保存当前任务的执行现场(通用寄存器、程序计数器、栈指针等),再恢复目标任务现场的过程。它发生在进程切换、线程切换以及用户态/内核态进出(系统调用、中断)时。

展开解析:开销来自直接与间接两部分。直接开销:保存/恢复几十个寄存器、切换内核栈,进程切换还要换页表(切换地址空间,x86 上刷新 CR3),这些本身是纯消耗、不产出有效计算。间接开销往往更大:切换后新任务的指令和数据不在 CPU 缓存里,缓存大面积失效;进程切换导致 TLB 刷新,地址翻译变慢(PCID/ASID 技术可缓解);调度器本身也要算力。量化上,线程切换通常在微秒级,缓存冷的代价可能数倍于此。优化思路:减少不必要的切换(协程、无锁编程、减少锁竞争)、线程绑定 CPU(affinity)保住缓存热度、批量处理系统调用。追问方向:线程切换与进程切换开销差多少、为什么协程切换更便宜(纯用户态、保存内容少、不刷 TLB)。