Skip to content

Latest commit

 

History

History
39 lines (25 loc) · 1.44 KB

上下文切换.md

File metadata and controls

39 lines (25 loc) · 1.44 KB

上下文切换

CPU上下文

  • 进程上下文切换
  • 线程上下文切换
  • 中断上下文切换

进程上下文切换

同一个进程在执行过程中需要调用内核指令来操作受限资源时, 会发生两次上下文切换, 也叫做特权模式切换.

特权模式切换

不同进程的上下文切换除了需要保存CPU的寄存器和内核堆栈的状态, 还需要保存进程本身的资源, 比如虚拟内存、栈;在保存完成之后, 还需要加载另一个进程的上下文.

进程上下文切换

在进程上下文切换后, 虚拟内存映射关系(TLB)也需要更新, 也会消耗CPU.

进程上下文切换场景

  • 时间片耗尽
  • 系统资源不足导致被进程挂起
  • 进程通过sleep主动挂起
  • 更高优先级的进程运行
  • 中断挂起

线程上下文切换

  • 不同进程的线程上下文切换
    • 需要额外保存进程的上下文,即虚拟内存和栈.
  • 同一进程的线程上下文切换 (Preferred)
    • 只需要保存寄存器和内存堆栈的状态.

中断上下文切换

中断处理比进程有更高优先级, 此时不会发生进程切换. 所以只需要保存内核的上下文即可.