- 进程上下文切换
- 线程上下文切换
- 中断上下文切换
同一个进程在执行过程中需要调用内核指令来操作受限资源时, 会发生两次上下文切换, 也叫做特权模式切换
.
不同进程的上下文切换除了需要保存CPU的寄存器和内核堆栈的状态, 还需要保存进程本身的资源, 比如虚拟内存、栈;在保存完成之后, 还需要加载另一个进程的上下文.
在进程上下文切换后, 虚拟内存映射关系(TLB)也需要更新, 也会消耗CPU.
- 时间片耗尽
- 系统资源不足导致被进程挂起
- 进程通过sleep主动挂起
- 更高优先级的进程运行
- 中断挂起
- 不同进程的线程上下文切换
- 需要额外保存进程的上下文,即虚拟内存和栈.
- 同一进程的线程上下文切换 (Preferred)
- 只需要保存寄存器和内存堆栈的状态.
中断处理比进程有更高优先级, 此时不会发生进程切换. 所以只需要保存内核的上下文即可.